My family has lived in our current home for more than 13 years now, longer than we’ve lived anywhere by a decade or so.

Our house was about four years old when we bought it, which was relatively new. Now, it’s about 17 years old, which is not so new.

When you live in a home that long, you have to think about larger maintenance and repair jobs that you tend to forget about when you move every few years. For example:

  • Wooden decks need to be stained every few years, and eventually replaced.

  • Fences need to be straightened and/or replaced.

  • Appliances wear out and need to be repaired or replaced.

  • Heating/cooling systems need to be replaced.

  • Flooring, furniture, and cabinets need to be updated.

  • Roofs need to be re-shingled.

  • Interior and exterior paint needs to be re-applied.

  • Trees need to be pruned or removed and replaced.

This maintenance can be expensive and time-consuming, but is essential to conserving the long-term viability of the home. It is cheaper to do this maintenance than it is to tear the house down and rebuild it.

The same principles apply to software. If you are going to live in a codebase for a long time, you have to do the bigger maintenance and repair jobs. Otherwise, you’ll run the risk of having to throw the code out and start over again, which is an expensive and risky proposition.

Here are a few areas where you might want to look:

  • The team has learned a lot over the years, meaning that some of the older code might need updating when you next work on it.

  • Features that were added in a rush to meet a market deadline are a constant source of bugs. They need to be cleaned up and “brought up to code”.

  • Some of the tools and libraries you use are no longer maintained. You might need to look for replacements.

  • Technology changes quickly, making things possible that weren’t years ago.

  • New user-interface idioms and ideas have become popular; your software might need to keep pace so that people have an automatic intuition about how to use it.

  • Your market has changed; features that used to be desirable no longer are, and features that are now considered “must-haves” need to be added.

As with home maintenance, it is important to budget time and money to take on the bigger repair work needed by your software. Even if the code is in good shape overall, there are still parts of it that need some extra care and attention.