Imagine a homeowner who never performs any upkeep on their property. They ignore leaky faucets, postpone roof repairs, and neglect landscaping. Over time, these minor issues accumulate, leading to costly repairs, decreased property value, and potential safety hazards. This is what happens when software teams don't keep their code in good shape. Just like a house, code requires continuous care and attention to prevent it from becoming a liability.
Every line of code written represents an investment, but it also incurs a long-term cost in the form of maintenance. This maintenance includes bug fixes, updates, refactoring, and documentation. These ongoing activities represent the "interest" payments on our code debt. Neglecting these payments can lead to a snowball effect, making it increasingly difficult and costly to manage the codebase in the future.
Your team’s codebase is like a residential neighbourhood. The codebase has parts that are under construction, parts that are well maintained, parts that are ignored and parts that no one wants to go near (haunted).
The image below clearly shows the houses in these various states and some common infrastructure i.e. roads and sidewalks, think of this common physical infrastructure like tooling used across your repositories i.e. auth, logging, payments, etc. These common toolings themselves need to be maintained and kept up to date.