The other day I was riffing about ‘choosing development over legacy’. Building new things is the easiest path to take and we choose it because supporting legacy is harder.
Supporting legacy is also sometimes called dealing with technical debt. I’m reading The Unicorn Project by Gene Kim. He calls this ‘Complexity Debt’ because these are not just technical issues – they are business issues. The business is not organised in a way which enables teams to work independently. That itself can cause debt because problems are out of the control of purely a localised codebase and team.
As Kim quotes, in 2003 Ward Cunningham said “technical debt is what you feel the next time you want to make a change”. It’s a visceral thing – and if you know your codebase and the system that supports it, you know it immediately even before you come to modify it.
The power of complexity debt is that it acknowledges that production code doesn’t live in a vacuum.