Application Maintenance: Continuously Improving Lifetime Value

Think of your application like a car. If something breaks, it needs immediate fixing. But you don't want to wait until you're stranded on the roadside. Instead, you schedule regular maintenance to catch issues before they become problems. However, maintaining an application is even more complex. It's like not only keeping your car running smoothly, but also upgrading it constantly with new features, adapting it to evolving terrains, and ensuring it meets all the latest safety standards. It's a dynamic ride that requires constant attention and innovation.

Welcome to application maintenance, the most underestimated part of the Software Development Life Cycle. Let’s dive into yet another practical approach for setting up maintenance policies and processes in order to make sure your application continues to deliver the intended business value (and staying out of trouble…😉).

Low-Code maintenance

First off, let’s have a look at the 4 types of maintenance in the context of Low-Code development:

  1. Corrective: Fixing errors and bugs.
  2. Adaptive: Adjusting the software to changes in the environment.
  3. Perfective: Improving the performance or maintainability of the software without changing its functionality.
  4. Preventive: Looking ahead and preventing potential future issues.

Corrective Maintenance

Maintaining applications built on a Low-Code platform involves a comprehensive approach to ensure their functionality, performance, and adaptability in a dynamic business environment. One crucial aspect is corrective maintenance, which focuses on fixing defects and bugs that are discovered after the application is deployed. Despite the robust nature of Low-Code platforms, issues can still arise due to unforeseen user interactions or environmental changes. Corrective maintenance is essential to address these problems promptly, ensuring the application remains reliable and efficient for end-users.

Adaptive maintenance

Equally important is adaptive maintenance, which involves making modifications to the application in response to changes in the external environment. This could include updates to comply with new regulations, compatibility with new hardware or software, or changes in the business process(es). The flexibility of Low-Code platforms allows for rapid adaptation, enabling businesses to stay agile and responsive to market demands. Adaptive maintenance ensures that the application continues to meet the evolving needs of the organization without extensive redevelopment.

Perfective maintenance

In addition to adapting to external changes, perfective maintenance is vital for enhancing the application's functionality and performance. This type of maintenance involves refining the application to improve user experience, optimize performance, and add new features based on user feedback. With the iterative nature of Low-Code development, perfective maintenance can be seamlessly integrated into the development lifecycle, allowing for continuous improvement and innovation.

Preventive maintenance

Lastly, preventive maintenance plays a proactive role in the long-term health of the application. This involves regular updates and improvements to prevent potential issues before they occur. Preventive maintenance includes activities such as code refactoring, updating dependencies, and performance tuning. By anticipating and mitigating potential problems, preventive maintenance helps to maintain the application's stability and performance, reducing the likelihood of future disruptions.

Examining these four types of maintenance, it becomes clear that maintaining applications built on a Low-code platform offers significant advantages over traditional coded application maintenance, especially in terms of speed, ease of use, adaptability, and scalability:

Speed

Low-Code platforms streamline and accelerate the maintenance process. The visual development interface and pre-built components allow for rapid updates and bug fixes, significantly reducing the time required for corrective and adaptive maintenance compared to traditional coding environments.

Ease of Use

Low-Code platforms are user-friendly and accessible to individuals without extensive programming knowledge. This democratizes maintenance, enabling a broader range of team members to participate in the process, reducing reliance on specialized developers, and allows for direct business participation and collaboration.

Adaptability

Low-Code platforms are designed for flexibility, allowing applications to be easily modified to meet changing business requirements. This simplifies adaptive maintenance, enabling quick updates and integration with other systems, unlike traditional coded applications, which often require more extensive changes.

Scalability

Low-Code platforms offer scalable solutions that can grow with the business. New features and functionalities can be added without extensive redevelopment, making it easier to scale applications compared to traditional coded applications, which might require significant modifications to achieve the same scalability.

Setting up maintenance processes

So, where do we start? Fortunately, there's already an excellent framework available for effectively managing, supporting, and continuously improving applications: The Information Technology Infrastructure Library (ITIL). Here are some key ITIL best practices to consider in the context of Low-Code development when setting up maintenance processes:

  1. Incident Management (corrective maintenance): Restore normal service operation as quickly as possible to minimize business impact.
  • Establish a process for logging, categorizing, prioritizing, and resolving incidents.
  • Use a centralized (digital) service desk for reporting and managing incidents.
  • Implement escalation procedures for complex or high-priority incidents.
  • Monitor and review incident trends to identify recurring issues.
  1. Problem Management (preventive maintenance): Identify and eliminate the root cause of incidents to prevent recurrence.
  • Conduct root cause analysis for significant or recurring incidents.
  • Maintain a known error database to document identified problems and workarounds.
  • Implement proactive problem management to identify potential issues before they occur.
  • Collaborate with other (IT) teams to resolve underlying problems.
  1. Change Management (adaptive maintenance): Control the lifecycle of all changes to minimize disruption to IT services.
  • Implement a change management process and applicable tooling for requesting, assessing, approving, and reviewing changes.
  • Maintain a change schedule to coordinate the timing of changes.
  • Ensure thorough testing and documentation of changes before implementation.
  1. Release and Deployment Management: Ensure that new or changed services are released and deployed successfully.
  • Develop a release management process for planning, building, testing, and deploying releases.
  • Use automation tools for deployment to reduce errors and increase efficiency.
  • Conduct post-release reviews to identify areas for improvement.
  1. Service Level Management: Ensure that IT services meet agreed-upon service levels and business expectations.
  • Define and document service level agreements (SLAs) with business stakeholders.
  • Monitor and report on service performance against SLAs.
  • Regularly review and update SLAs to reflect changing business needs.
  • Implement corrective actions to address any service-level breaches.
  1. Continuous Improvement (perfective maintenance): Continuously improve IT services and processes to add value to the business.
  • Implement a continuous service improvement (CSI) process to identify and prioritize improvement opportunities.
  • Use key performance indicators (KPIs) and metrics to measure service performance.
  • Conduct regular reviews and assessments to identify areas for improvement.
  • Foster a culture of continuous improvement within the IT organization.

Allocating time and resources

Given that resources are often scarce and capacity is under pressure, balancing issue resolution, problem prevention, and enhancement implementation in an application requires a well-structured approach. When starting a Low-Code project, the deployment team is also responsible for maintaining the application. Now, imagine the application becomes a big success, generating excitement and necessitating the launch of a new project. Suddenly, there's an "Error 404: Team Not Found" 😉.

Balancing productivity within a 40-hour work week requires acknowledging that only 20-25 hours are typically spent on delivering intended work. The remaining time often goes to unplanned tasks, setbacks, social interactions, and other distractions, which is completely normal. The key is to plan for this when scheduling work. Here's how to allocate your time effectively during a timebox period, such as Sprints:

  • 50% → Reserved for planned work items such as new functionalities for existing or new applications, bugs, or removing technical debt.
  • 30% → Reserved for unplanned tasks, such as unforeseen events and (high/critical priority) issues.
  • 20% → Reserved for non-productive time or "waste," acknowledging inevitable distractions.

This approach allows you to realistically plan your work while leaving room for unforeseen events. If these events don't occur or there are fewer bugs, the reserved time can be reallocated to planned work.

At a strategic level, it is beneficial to divide work topics into distinct buckets. This allows for better allocation of time and resources for planned work. Since end users are the primary users of the application, their feedback is crucial for delivering value. Keeping them engaged and satisfied is paramount. However, it is impossible to meet all their needs while ensuring the application remains future-proof and maintains high-quality standards. To address this, you can allocate work as follows:

  • 60% → Reserved for implementing enhancements to existing applications or developing new applications requested by end users or stakeholders (perfective maintenance).
  • 30% → Reserved for ensuring the long-term health of applications (preventive and adaptive maintenance).
  • 10% → Reserved for various initiatives for the Low-Code team.

This approach helps balance immediate user needs with the long-term sustainability and quality of the application.

Promote success

Finally, ensure you properly promote the success of your application. This is not just about sharing learnings and inspiring others but also about keeping your stakeholders engaged. While it’s easy to get caught up in new, exciting projects and overlook this step during the maintenance phase, it is crucial for several reasons:

  1. Sustained Support and Funding: Stakeholders who see the tangible benefits and successes of the application are more likely to continue supporting it financially and administratively. Their backing is essential for securing ongoing resources, funding for new features, and overall project sustainability.
  2. Increased User Adoption and Engagement: Engaged stakeholders can act as champions for the application within their departments, encouraging more users to adopt and utilize it effectively. Their positive outlook and endorsement can drive higher usage rates.
  3. Feedback and Continuous Improvement: Engaged stakeholders are more likely to provide constructive feedback and innovative ideas for improvement. They can highlight areas where the application excels and where it needs enhancements, ensuring it remains relevant and effective.
  4. Alignment with Business Goals: Regular communication and showcasing of the application's successes help ensure that its development aligns with broader business objectives and strategic goals. Engaged stakeholders can guide and refine the application's direction to better serve the organization's needs.
  5. Mitigating Resistance to Change: Engaging stakeholders and keeping them informed helps mitigate resistance to change. When stakeholders understand the benefits and see positive outcomes, they are more likely to support new initiatives and changes brought by the application.
  6. Enhancing Organizational Agility: An engaged stakeholder group that regularly interacts with the application can quickly identify and respond to new business opportunities and challenges. This proactive stance allows the organization to remain agile and competitive.

Engagement ensures the application remains a valuable and dynamic asset to the organization.

So, how can you best organize this promotion of applications? Here’s a practical approach:

Communicate Success Stories

  • User Testimonials: Collect and share positive feedback from end users who have benefited from the application. Highlight specific stories that demonstrate how the application has improved their workflow or productivity.
  • Case Studies: Develop detailed case studies showcasing how different departments or teams are using the application to achieve their goals. Include metrics and before-and-after scenarios to illustrate the impact.

Showcase Metrics and Analytics

  • Usage Statistics: Share usage statistics regularly, such as the number of active users, frequency of use, and key features being utilized. Use visual aids like graphs and charts for clarity.
  • Impact Metrics: Highlight key performance indicators (KPIs) that show the application’s impact on business processes. This could include time saved, cost reductions, error rate reductions, or any other relevant metrics.

Organize Demonstrations and Workshops

  • Live Demonstrations: Conduct live demonstrations of the application for stakeholders, showcasing new features, improvements, and success stories. Interactive sessions where stakeholders can ask questions and provide feedback can be very engaging.
  • Workshops and Training: Offer workshops and training sessions to help stakeholders understand the application’s capabilities and how it can further benefit their teams. This also helps in gathering more constructive feedback.

Use Visual and Interactive Content

  • Infographics and Videos: Create engaging infographics and short videos that highlight the application’s successes and key metrics. Visual content can be more impactful and easier to digest than long reports.
  • Interactive Dashboards: Develop interactive dashboards that stakeholders can use to see real-time data and analytics about the application’s usage and impact.

Celebrate Milestones and Achievements

  • Recognize Key Achievements: Publicly recognize and celebrate key milestones and achievements related to the application’s adoption and success. This can be done through internal announcements or even small events.
  • Rewards and Recognition: Implement a rewards and recognition program for teams or individuals who have significantly contributed to the application’s success. This not only motivates but also acknowledges their efforts.

Foster a Feedback Loop

  • Continuous Feedback: Create a system for continuous feedback from both end users and stakeholders. Regularly review this feedback to make improvements and keep stakeholders informed about how their input is being utilized.
  • Suggestion Forums: Establish suggestion forums or dedicated channels where stakeholders can propose ideas and discuss potential enhancements. This fosters a sense of ownership and involvement.

And there you have it—the final article in our series on the Software Development Life Cycle (SDLC) phases! I hope this series has helped you organize the various aspects involved in setting up or perfecting your SDLC. When done correctly, it will enhance your innovation efforts while significantly reducing costs. Here are the links to the other articles in the series.