Most of the Agile Methodologies mainly address the need of software product development, whether the project under consideration is at small or large scale. The acceptance and adaption to Agile based projects execution and management are being increasingly favored across the software services industry. Customers and managements ask to follow Agile methodology for almost all kinds of software projects; whether they are a new development, maintenance & enhancements (M&E) or support projects.

There has been increasing demand to find suitable projects and services management approach to maintenance and support of applications; that are in the production environment. Such applications are core system to run customer’s business smoothly. Enhancing features as well as providing support to resolve production issues efficiently and optimally become very essential. But there have been a lot of challenges in providing service level production supports; especially L2 and L3 levels. The problem lies with effectively handling uncertainty and severity reported issues at the same time the need to enhance the applications with new and changed features; to changingvbusiness needs. These projects and services are many time adhoc event driven, where planning as per capacity and demand becomes very challenging.

In almost all service providing organizations, Application Support and Maintenance (ASM) projects and services are modeled based on practices taken from traditional ITIL Framework, Six Sigma, CMMI and COBIT etc. But these traditional methodologies based services have many challenges as well, like –

Rigidity in service process design and development

Process selection and integration are cumbersome

Requires specialized skills and competency

Requiring organization cultural change

Problem in business alignment and acceptance

Alternative to this approach is to model the service offerings based on Agile methodologies. But not all Agile methodology suites to Application Support and Maintenance kind of projects.

Lean Thinking + Kanban

Lean Thinking and Kanban are the manufacturing concepts and practices borrowed into software development and management of IT products and services. Kanban System is the foundational practice of Lean Thinking. The entire process of software development can be considered as a pipeline in which requested software features and production issues go through predefined steps to produce the deliverable and deployable software. There are various techniques, which help to identify any bottlenecks in the entire process flow, at any steps or stages and also help to remove them in order to obtain maximum efficiency and throughput.

Applying the concepts and practices of Lean and Kanban System; can help organization and project team to become Agile by optimizing the system workflow and making the process more flexible to enhance the software development, maintenance and support, hence efficiency to the overall service delivery.

Applying Kanban System to ASM…

Kanban System, which is the foundational practice of Lean Thinking; helps to establish an optimized process to manage the Application support and maintenance using the following approaches…

Workflow Visualization & Management – Kanban systems use Kanban Board and – Kanban systems use Kanban Board and Kanban Cards to promptly display the prioritized works waiting in queue, works that are in progress on development and testing, as well as works that are completely ready to be released to production. The entire process is visually divided into stages (columns) through which work progresses from start to finish, which depict exactly which works are at what stage in the process flow and their likely completion. Kanban Cards depicted in different color-codes for specific type of works or classes of service along with visual signs of priority, using priority numbers should be used. Establishing Pull Mechanism – when developers are done with their previous tasks and have buffer capacity they can pull work available in the prioritized queue. Similar pull mechanism can be established to downstream to integration testing, acceptance testing and production releases. This mechanism allows team members to self-assign the prioritized work and take that to completion before picking up another work-item. Measuring and Managing Flow – Strong measurements to system flows gives the opportunity to identify improvements and reduce road blockers to the system process. Kanban system apart from using the Kanban board; uses – Strong measurements to system flows gives the opportunity to identify improvements and reduce road blockers to the system process. Kanban system apart from using the Kanban board; uses Cumulative Flow Diagram , Defects Resolution Rates and Cycle Time measurement. These parameters are observed for any major deviations. Ensuring the validating and correctness of these deviations; appropriate corrective actions are taken to bring them on track after validating the underlying process and policies. Balancing Demand vs. Capacity – the Cumulative Flow Diagram (CFD) depicts the historical demand and capacity, which helps to manage demand vs. – the Cumulative Flow Diagram (CFD) depicts the historical demand and capacity, which helps to manage demand vs. capacity management , determine the future capacity needed to balance the likely demand to handle change requests (CR) for a feature enhancement or addition as well resolving the production issues. Capacity prediction becomes easier for any spike to future demands considering the appropriate ratio. Limiting the Work-In-Progress – Team members are allowed to work on only one task at a time until its completion. Kanban systems advocates cultivating work culture “don’t start a new task until old is not finished“

approach, which is based on “finish-to-start“ work practice. This definitely helps to stop multi-tasking which normally generate wastes due to task-switching and decreases the overall deliverable quality. – Team members are allowed to work on only one task at a time until its completion. Kanban systems advocates cultivating work culture “don’t start a new task until old is not finishedapproach, which is based on ““ work practice. This definitely helps to stop multi-tasking which normally generate wastes due to task-switching and decreases the overall deliverable quality. Pending Works Prioritization – The Kanban Queue is the place where customer keeps pushing change requests and production issues. Customer should invest time and effort to prioritize these works considering the business value, risks, dependencies, criticality, severity and availability. This will help project team to pick the most prioritized work-item from the queue to start work whenever any member is available. It should be noted that the over-prioritization of works should also be avoided as that might lead to losing workflow track and diminishing value of prioritized work-items. Optimizing Lead Time and Delivery Rate – System lead time is defined as time required to complete a piece of work from the time it has been picked up from the prioritized queue to work upon it until its completion. Customer lead time is defined as time required to complete a piece of work from the time it has been picked up from the prioritized queue to the time when it’s pushed into the production system to make it available to customer. The frequency of batch transfer to production is calculated over the considerable timeframe. The average time required to release the batch into production is added to the system lead time to calculate the customer lead time. The delivery rate is the work-in-progress divided by average lead time. Customer can keep pushing the work-items in Kanban Queue, which are the available options for the project team. The work-items in the queue are prioritized by customer based on business criticality, severity and complexity. Team along with customer continuously endeavors to optimize the lead time and delivery rate; through process optimization using value-stream mapping, lean thinking, reducing wastes and dividing the larger work into smaller units. Setting Quality Assurance & Control Mechanism – Defining and setting up quality assurance and control mechanism at each stages of the process is very important. The Kanban queue work-items should have explicit acceptance criteria defined, development should end with passing all unit level tests, testing stage should end with all tests for system functions and integration passed and similarly acceptance testing should be completed prior to production release. Collaborate & Engage Customer – Engaging customer at every stage of development process for work-item prioritization, query resolutions, requirement understanding, feedbacks etc. are essential for the smooth process flow and efficiency. Project team should communicate and collaborate with customer representatives (SMEs) regularly to avoid any misunderstanding or requirements gaps. Provision Infrastructure and Tool-suites – Availability of suitable infrastructure for development, staging servers networking, tale-communication and A/V systems are must for the team. At the same time provisioning the required software for collaboration & communication, configuration management, continuous integration, build automation, test automation, project management etc. are must for the project team. Practicing Continuous Improvement – both customer and service provider should keep focus on finding opportunities to continuously improve the process to make it better. The proven ways to continuous improvements are – value stream mapping, system thinking etc. and take necessary changes to the process incrementally. Establish Service Types and SLAs – It is imperative to decide and define type of services that will be considered under the process framework along with their servicing mechanism along with customer at the beginning itself. Accordingly the process framework, measurements, policies are defined and service level agreements (SLAs) established and adhered for better transparency and customer satisfaction.

Benefits of using Kanban System in ASM…

Better task-assignment and work-load management – Kanban system helps manage the amount of work to be produced (as per demand) by better management of Capacity through flexibly deploying number of team members. Being based on a pull method – team members pick up new tasks themselves as and when they are available, which helps to manage work load and employee satisfaction.

Evolutionary Process Improvement – The process evolves slowly due to evolutionary changes made in small increments by making adjustment to existing process whenever necessary at weakest process steps.

Employees Satisfaction – Employee Self-assignment of prioritized tasks creates culture of job satisfaction, ownership, motivation, and engagement as there is no chaos or undue pressure on team.

Suitable to Event Driven Development – Kanban more suitable to such event driven development, even if there are no actual roadmap or long-term goal.

Suitable to both types of maintenance projects – a) Project with bunch of feature enhancements to an existing product b) Fixing bugs as they arrive or reported based on business priorities

Effective to frequent changing priority – Kanban helps to address the frequently changing priority of work-items pending in the Kanban queues which could to business exigencies and prevailing market situation. There could be new features; importance of tasks changes, new top priority bugs requiring instant attention.

Planning Flexibility – Provide flexible planning options and faster outputs by matching the work-in-progress and team’s capacity. It provides flexibility to change iteration length, team size/composition as per requirements.

Queue Based Model – It’s based on queues and flow rather than iterations. Also it’s ideally suited to the variable input rate that occurs in bug fixing from production. It’s adaptable to employ shorter iterations (may be even 1 day), allowing to change priorities frequently as per projects requirements

Team-Size Flexibility – Model can be applied to micro-sized teams (even less than around 3+- consultants); where Agile-Scrum is often too formalized. By limiting the work-in-progress to prevent any bottlenecks and ensure availability of backups to teams process due to lack of focus, people, or skill sets. Model is suitable for micro-sized teams (around 3± consultants) who can work on multiple small projects/sub-projects as well

Conclusion:

Practicing Lean Kanban for Application Support and Maintenance does not require heavy investment. Starting with current process alignment to Lean Kanban principles and practices, cultural shifts at both customer and servicing organizations; it can be implemented without much hiccups.