The Solution for Technical Debt

There is a way out.

Having written dozens (if not 100+) different software project proposals, I can tell you that the question people want answered is “how much does it cost to make it work?”

I think that this is a good question, but it’s not the only thing that should be asked. There’s a second question, “how much does it cost to maintain?”

The way out is knowing that maintenance is not optional.

One rule of thumb is that software maintenance averages 60% of the project costs. If someone says a piece of software will cost $1,000,000, it will probably cost over double that.  This happens on every project, with no exception.

Maintenance is important, and is usually boring. At the moment, the United States is having an issue where our infrastructure is not being maintained as well as it should be. John Oliver did a great piece on this, making fun of the boring, routine, and essential work of maintenance.

Is maintenance sexy? Not to most people. We know from neuroscientists that our brains are interested in new things by default. We’ve got to analyze new things and decide if they’re going to help or hurt us. Unless you’ve trained your brain to find long-term maintenance appealing, your brain tends to be interested in new things.

Your friends are usually more excited by the new car you bought than the fact that your old one is clean and runs smoothly (until it’s old enough to be a classic).

A new software feature is more exciting than the fact that an old one hasn’t broken, unless you’re having problems.

Any senior software engineer knows that maintenance is important. They embody the idea that maintenance is not optional — it is inevitable — so they plan for it. They write software in a way that allows it to be maintained.

Any non-engineering business leader who has led more than a few software projects knows that maintenance is not optional, so they plan for it. They structure teams and budget in a way that allows it to be maintained.

The way out is believing that maintenance is not optional.