For many decision makers, it is not clear that software maintenance is generally more expensive than the actual development of the application as this document shows. Historically in software development there are 4 types of maintenance cost.
Reduce perfective maintenance by tuning to your user’s needs. One aspect to reducing software maintenance and, therefore, your cost is to put in the extra effort in the first phase of the project or feature. Make sure the scope of the project is clear so that you do not develop features that don’t add value. No, I am not insinuating we go back to the waterfall model. User test your software before you actually code it!
Prototypes are easy to make in tools like Keynote or PowerPoint, and there are also plenty of online tools available these days that are even better for the job. Some output mock-ups that can represent the product sufficiently to test the features with actual users already! These tools output complete prototypes that you can use to do user testing. How great is it that we can already test the software before it is actually developed? You can avoid spending expensive development hours and large amounts of perfective maintenance hours. 50% using the Google Ventures Product Design Sprint. We have booked good successes with this methodology. For the first time in my life as a software developer, I have not seen the product change since it was developed—at the time of writing well over 4 months ago.
Reduce corrective and adaptive maintenance by anticipating change. We are not going to avoid change altogether so we better prepare for it. It is a fact that higher quality code leads to less corrective maintenance. Well-structured and designed code is easy to modify and will also lead to less adaptive maintenance. We don’t make it a secret that we advocate for clean code, and why it also benefits the project, the team and the individuals working on it. Also, note that good code is generally less code. Less code means less code to maintain. Reducing your adaptive and corrective maintenance can win you up to 46% savings.
Whether your application is 10K lines of code or your application 4M lines of code, maintenance is something that you can hardly avoid. But you can anticipate change, you can write clean code from the start, measure your metrics, and you can already test your feature before you actually spend any money on writing it all together! Stop developing features nobody uses and stop guessing how and if a user will use it. Measure it.
How do you think we can reduce the cost of software even more?