CTO Compass

The Maintenance Burden: What You Don’t See When Adding New Features

When you think about adding a new room to your house, it's natural to first think of all the benefits you hope you'll gain from it.

Of course, then it’s down to reality to figure out what it might cost to bring to fruition. You’ll undoubtedly get quotes from builders and other trades to get windows put in, a floor laid, and lights and electrics in. You’ll also likely budget for decorating and fitting it out.

But I bet you haven’t considered the extra maintenance burden you’ve added for the rest of your home-owning life.

Sure, you’ve likely added value to your home, but now you have at least one extra room to dust, vacuum, tidy up and so on. An extra 15 minutes a week for cleaning adds up to 65 hours over a five-year period! It will also need to be periodically repainted and decorated. There are more windows to clean, and the roof and guttering must be maintained. All of this is an ongoing commitment for as long as you own the property.

The pressure to delay maintenance is constant in almost every organisation

Now, let’s turn to software; every feature added to a system is another room added to an existing house.

At a certain point, your house will be like a rabbit warren, with room after room added onto the next. You’ll need a map to find the room you want, or you may have to crawl through a tunnel to get to some of them because there wasn’t the time or budget to remodel properly by demolishing or repurposing a few existing rooms to accommodate the latest additions better.

The pressure to delay maintenance is constant in almost every organisation; new features and functionality are always more desirable since they more clearly appear to add value to the organisation.

But, as I’ve written about before, software is never done. Even if you consider your software as done, you’re actually moving backwards because everything else around you continues forward. First, it’s unlikely that all your competitors are stagnant; and in the web application industry, there are constant updates to browsers, programming languages, frameworks and libraries, and security vulnerabilities are always being discovered and fixed.

When you add a new feature, you must at least be aware of the additional maintenance burden and drag added to the system. Without sufficient time to properly maintain and improve the system outside or alongside the new feature requests, the net result is often frustrating on all sides. The new features will inevitably take longer than expected because to fit it in, pipes must be re-routed, a freshly laid floor has to be ripped up, and so on. All unexpected and unplanned. Budgets are then exceeded and have to be expanded. Or, shortcuts are taken. While things might look fine on the surface, now the overall problem is a little worse and has been shoved a little further down the road.

It’s often seen to be a confounding idea, but getting rid of features and code that are unused or not providing sufficient value is a Good Thing™. It reduces complexity and cognitive load and removes friction that gets in the way of delivering real new value more quickly, and that hidden cost of maintenance comes down too.

⚡️ Thinking Time ⚡️

In your Thinking Time this week, if you have software you’re responsible for, you could consider whether there are features that are no longer pulling their weight and whether their removal would be a net benefit to your users and their use of the system.

However, the core idea equally applies elsewhere. By periodically reviewing your systems and processes and removing what is no longer necessary, you can simplify your life and make it easier to focus on what really matters.

  • What does not provide sufficient value in my life or the business?
  • What can you cull?