Lean Manufacturing techniques have been used successfully by manufacturing organizations to improve quality and productivity. Applying the principles of lean manufacturing to application maintenance can provide similar benefits to your organization.
In last month’s article we looked at non-value added work and discussed the topics of over-production, motion and waiting. In this article, we continue the discussion and suggest ways of minimizing or eliminating problems in the process itself, inventory, correction and conveyance.
There is a need to see if the actual work of bug-fixing or making an enhancement is done in an effective manner. Maintenance activities are as varied as the organizations in which they are being performed.
At the core of application maintenance are three sets of activities: fix-on-fail, modifying functionalities, and requests for analysis and data. All three activities can be serviced on a reactive basis where the request is serviced upon arrival or can be scheduled in the form of releases. While both these models have their merit, most change requests are bunched into releases, while fix-on-fail requests are attended to fairly immediately.
To drive efficiencies in the process, attention needs to be given to these three areas:
Configuration Environment : The major inefficiencies in the processes are usually related to the technical infrastructure and the configuration discipline. Having cleaner configuration control processes and ensuring discipline is the only way to eliminate these inefficiencies.
Release Scheduling : There is a fine balance that needs to be achieved in scheduling releases. Too-frequent will significantly increase testing effort, while long intervals between releases might impact IT responsiveness to changing business needs. For a fairly large portfolio, the general recommendation is to have a scheduled release once a quarter while provisioning one or two release windows per quarter that can be used to schedule releases that cannot wait.
Consider having different release dates for different applications only if you have multiple business-critical applications that are tightly coupled and have strong dependencies on each other’s functionality.
Automated Release Process : A surprising majority of maintenance teams still depend on a manual release process. Manual releases must be eliminated. It is the only way there can be control over the integrity of the configuration of your applications.
Inventory for a maintenance team is the number of requests or issues in the queue (Raw Stock), Work in Process (WIP) and waiting for release (Finished Goods). Like manufacturing, each of these has a cost. Requests under process imply costs of making these changes, while requests waiting for release imply release management costs. While issues can be minimized through implementing better development and implementation practices, changed requests result from changing business needs.
Requests that are WIP need to be viewed from an optimization angle. Categorizing requests will help identify the number in each category. Small and large requests are relative teams. Typically a small request is one that needs 40 hours of effort or less, while a large request would imply an effort of more than one person month.