Getting More from Your Application Portfolio - Part II
In last months 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 others 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.Projects on the other hand, will be of the order of 6-person months or more. Having a large number of small requests results in spending needless time in managing these requests. A smaller number of large requests can imply idle time between releases. A mix of small and large requests will leverage the team appropriately.
Since requests arrive at an unpredictable rate, the ability to consolidate multiple small requests into a larger patch request will be important. The attempt should organize and staff the team so there is a steady group that can handle a predefined number of small requests and application issues. Fixes or changes that are waiting for a release need to be eliminated to the extent possible.
Correction in the application maintenance context can be thought of as the effort spent in rectifying errors: fixes that fail, and releases that have bugs. To minimize the effort spent in correction would involve implementing process quality that includes effective reviews and testing.
In the maintenance context, the major reasons for the defects are:
Introducing these activities in the maintenance process, besides estimating adequate time for these activities will ensure that your defect rates are minimized to a significant extent. There are no short cuts to achieving this. It will take discipline, communication and leadership to ensure that these issues are addressed effectively.
The concept of conveyance in manufacturing is the unnecessary movement of a part during production. Conveyance brings to mind porting and migration projects on the one hand, and the operating system, or database, or compiler upgrades that happen due to obsolescence.
The quality of the original code is a major input into these costs.
Questioning the need to migrate and port is the first weapon that you have in reducing conveyance costs. The second is to ensure that all of your code complies with standards that all compilers in that language or database management system must adhere to. The third defense is to plan early for all your migration/porting needs.
Waiting until the last minute puts your team under tremendous pressure. Raising the question of migration and upgrades early with your vendors will ensure that there are appropriate solutions provided. You then will have the leverage to negotiate better with your customers and your product vendors.
Application maintenance can take up nearly 70% of the total application lifecycle effort. By applying the principle of lean manufacturing to your application portfolio, your IT organization will realize increased quality and productivity while reducing unnecessary costs.
Ramesh Dorairaj is head of Application Management Services for MindTree Consulting. Ramesh has more than 18 years of industry experience across domains such as banking, commercial markets, retail, utilities and manufacturing. He currently advises MindTree customer on better management of their application portfolio, establishing appropriate support organization structures, implementing quality frameworks like CMMi and scaling up IT organizations to meet growth challenges.