Four reasons maintainability is important:
- To save you money
- To save your reputation
- To save you money
- To save your developers’ sanity
NASA estimates that 80 – 90% of the life cycle cost for software development goes to maintenance. There are other estimates, but they’re mostly around that range, and this is an organization that maintains a tremendous amount of software. So they know what they’re talking about.
I know that as the owner or manager of a software project, you want to be able to predict how much a project will cost, how long it will take so you know when you will be able to release it, and how it will impact any of your other projects. The more maintainable your code is, the better chance you have of predicting these things. That spells more money and a better reputation for you.
Now for an example of developer sanity. Imagine for a moment that you have planned a road trip. You picked out all the stops you’ll make, including where you’ll find In-N-Out Burgers, the cool AirBnB stops you’ll make, and fancy chocolate shops along the way. You got the car all packed the night before, and this time you even remembered to include the remote for your Amazon Firestick so you can watch your shows at the cool wifi-enabled treehouse you’re going to stay at. You got up early to beat the traffic, get in the car, set your maps app to use Leonard Nimoy’s voice, and you make it 3 light-hearted, carefree miles before you hit a traffic jam that extends to the visible horizon. That’s what it’s like to be given a software development project, think about it for a while, come up with your plan of attack based on the architecture you’ll be working with, write down you’re design approach in colored pens, and then open the code only to find yourself staring at a sticky, tangled, blob of undocumented, poorly formatted code that somehow looks like it was typed in crayon. Disappointment and frustration, and not a little pain, wash over you, and it feels like all the color and joy has been sucked out of the world. And that’s before you’ve even looked at the actual structure and interdependency of the code. This is one of the biggest reasons software development is hard, and one of the easiest ways to make it easier, which we’ll come back to in a future post.