While technical debt sounds like it has to do primarily with the technology group, systems-thinking gives us another perspective. One needs to look at technical debt from an holistic point of view.
One of the reasons why organizations accrue technical debt quickly is that they don’t see it as a systemic problem. It’s a problem with a component, the code, embedded within the larger system, the human and technological apparatus that builds and delivers software value. When brave and noble souls who want to clean up or prevent debt encounter resistance to the idea, they’re usually arguing with someone who has taken only the very limited perspective of the code and the developers who create it.
Sure, technical debt makes it harder to write new code or fix the existing code. Yes, a debt-ridden code base can make the job horrible, reducing team morale, productivity, and commitment. Nonetheless, the person who doesn’t want to invest in technical debt reduction or prevention thinks the price is worth getting to market faster, clearing out an impossibly large backlog, or just keeping the Corporate Masters happy with the perceived pace of work.
Technical debt has real Business costs
The most immediate cost of technical debt, which you see when you run a static analysis of the code, trace the gradual increase in the average size of work items, is often not persuasive enough to get people to address it. The more frightening impact of technical debt happens at a larger system level, something that you can’t ascertain from measures like cyclomatic complexity or velocity. Here are a few examples:
The Business is often to blame for technical debt
These are real costs that exist at a system level that you don’t see by looking at the code. The system level is also where many of the root causes of technical debt reside. It’s easy to blame the teams, or individuals on the teams, for their purported inexperience, unprofessionalism, or sloppiness. However, the real sources frequently lie elsewhere. Here are a few common culprits:
Technical debt is often beyond a purely Agile solution
Because the real causes and consequences of technical debt exist outside of the team, it’s not surprising that Agile alone hasn’t immunized teams against technical debt. To diagnose the problem, prescribe possible solutions, and assess their effectiveness, you need a broader, system-level perspective, which Lean provides. Flow, waste, value – these concepts are closer to the business causes and costs of technical debt than the Agile lexicon can describe.