Recently a friend of mine complaint that he cannot understand why the maintenance cost for an application remains so high after 2 years of deployment. After a lengthly conversation, we found out he fells into the same traps of maintenance as i did before.
First, maintenance cost is not just bug fixes. While my friend is wondering how could the bug fixes would cost be so expensive, majority of his expenditure went for operation, user support, and enhancements. These expenditures includes
1. purchasing new servers to replace old ones
2. subscribing User Support service to train users and provide first level support
3. releasing couple major enhancements
In additional to those, there are another two other expenditures he did not noticed. The advanced users has been continuously spending time to train and re-train other users. And money and time were spent to decommission the old server.
Second, maintenance costs will not necessary decrease over years. In my friend case, although less bugs were fixed in the second year, but the enhancements and User Support service drove that year's maintenance costs away more than the first year's. For large volatile applications, the maintenance costs could eventually increase. As enhancements add complexity to applications, the efforts are required for making changes, testing, and user training will increase. And likely more infrastructure investment will be needed.
Third, there is no minor enhancements. As soon as an enhancement is classified as "Minor", the users will expect quicker turnaround, development team will reduce the effort on analysis and code review, QA team will spend less time on testing. All of these usually lead to a crisis and spending more effort cleaning up some unexpected damaged. it happened to both my friend and me multiple times, and to make it worse, at the beginning we were usually hunting the cause in wrong direction because at that crisis no one expected or even forgot the minor enhancement could cause the problem.
What does this mean to Program Managers? This means, in order to minimize the maintenance cost, maintenance should be considered as a decision factor as early as the design stage. My boss demonstrates an effective and simply way to archive this -- Focus.
Focus on the core business value of the solution and turn away from distracting feature requests. In this way, the team can be devoted to develop a linear but more effective and more matured solution. Hence require less effort keep it from running during the life span.
Focus on the sustainability of the solution. This means make the dependability, integration, ease of upgrade, and duration of technology life expectation must be take into consideration in design
No comments:
Post a Comment