Debt grows
Debt grows is the default state of software engineering in organizations that have not made debt management a deliberate practice.
- ·Tech debt is growing with no systematic reduction plan
- ·Legacy systems are treated as "do not touch" zones
- ·Team acknowledges tech debt exists and can enumerate major items
- ·Migration backlog exists (even if years long with no progress)
Evidence
- ·Tech debt backlog with items older than 12 months and no progress
- ·Legacy system documentation (or lack thereof) showing avoidance patterns
What It Is
Debt grows is the default state of software engineering in organizations that have not made debt management a deliberate practice. Every sprint adds new features; every feature ships with small shortcuts, undocumented assumptions, and quick fixes that were meant to be revisited but never are. Over time the codebase accumulates a layer of entropy that makes every subsequent change slower and riskier than it would be in a clean system.
At L1, debt growth is not tracked, not measured, and not discussed in planning. Developers know it exists because they feel it every time they touch certain files - the ones where a simple change triggers a cascade of side effects, where tests are absent or unreliable, where the data model long since diverged from the domain model it was meant to represent. The knowledge of where the debt lives is tribal, held by whoever has been around longest.
The growth is compounding. A codebase with high debt is slower to change, which means features take longer, which means there is less time for cleanup, which means debt grows faster. Teams in this state often describe a feeling of running on a treadmill: working harder each quarter to deliver the same amount of value as the codebase resists them more and more.
The absence of AI tooling makes this worse. Without automated refactoring, every debt-reduction effort requires a developer to manually touch code - competing directly with feature work for the same finite engineering hours. In an organization without AI tools, the math almost always favors features over cleanup, and debt wins.
Why It Matters
- Velocity erosion - Debt acts as friction on every development task; teams with high debt consistently deliver features slower than their counterparts on clean codebases, even with equivalent headcount
- Onboarding cost - New engineers spend weeks or months learning the local workarounds, undocumented patterns, and danger zones before they can be productive
- Bug multiplication - High-debt codebases have more bugs per line of change because the implicit assumptions are not obvious and the test coverage is sparse
- Morale drain - Developers who spend most of their time fighting the codebase rather than solving problems become disengaged; high debt correlates with higher attrition on engineering teams
- Strategic lock-in - The longer debt grows unchecked, the more expensive any future modernization becomes, effectively locking the organization into outdated technology stacks
Getting Started
6 steps to get from here to the next level
Common Pitfalls
Mistakes teams actually make at this stage - and how to avoid them
How Different Roles See It
Bob manages a team that is consistently slower than stakeholders expect, and he suspects the codebase is a significant factor. Developers complain about certain modules being "impossible to change," but there is no formal record of what the debt is or what it costs. Bob's instinct is that fixing this requires a dedicated cleanup sprint, but every time he proposes one, feature priorities push it out.
Bob needs to reframe debt as infrastructure, not housekeeping. The conversation with stakeholders should be: "Our development speed is capped by the state of our codebase. Here is a specific area where we are 2x slower than we should be, and here is what it would take to fix it." That framing makes debt reduction a velocity investment, not a distraction from delivery. Bob should also establish the 10% sprint capacity rule as a team norm, so that debt reduction happens continuously rather than competing for a dedicated sprint that never arrives.
Sarah is trying to measure developer productivity and keeps running into the same problem: the numbers vary wildly depending on which part of the codebase a developer is working in. A developer working in the clean microservices ships features quickly; the same developer working in the legacy monolith moves at half the speed. The variance makes aggregate productivity metrics nearly meaningless.
Sarah should use this variance as a debt measurement tool. The difference in velocity between clean and debt-laden areas of the codebase is a direct measure of what the debt is costing the organization. Sarah should instrument this: track PR cycle time and story point completion rate by code area, then map the slow areas to known debt. This gives both a debt priority list (fix the slowest areas first) and a business case (fixing this area would recover X% of lost velocity). Debt reduction tracked this way becomes a productivity initiative with measurable ROI, not a vague engineering preference.
Victor has worked in this codebase long enough to have a mental map of every danger zone. He knows which files have implicit dependencies on global state, which modules silently ignore errors, and which abstractions were designed for a requirements set that no longer exists. That knowledge lives entirely in his head, and he is increasingly the person who has to review any change touching those areas - a bottleneck that scales badly as the team grows.
Victor should externalize his mental debt map into a structured form, even if it starts as a commented list in a markdown file. That map has two values: it tells other developers where to be careful, and it tells an AI agent where to start when automated debt reduction becomes available at higher maturity levels. Victor should also advocate for the 10% debt budget, because he is the one who pays the highest cost when debt-laden code breaks - the midnight pages, the complex debugging sessions, the hours explaining context to developers who are new to the area. His credibility is the most effective argument for treating debt as a first-class concern.
Further Reading
4 resources worth reading - hand-picked, not scraped
Tech Debt & Modernization