Technical Debt is the implied cost of additional rework caused by choosing an easy or quick solution now instead of a better approach that would take longer.
Understanding Technical Debt

Technical debt isn’t inherently bad - like financial debt, it can be a strategic tool when managed properly.
Types of Technical Debt
Deliberate and Reckless
“We don’t have time for design” - Conscious decision to skip good practices.
Deliberate and Prudent
“We must ship now and deal with consequences” - Strategic decision with awareness of costs.
Inadvertent and Reckless
“What’s layering?” - Debt from lack of knowledge or skill.
Inadvertent and Prudent
“Now we know how we should have done it” - Learned through building; normal learning process.
Managing Technical Debt
Identifying Debt
- Code that’s difficult to modify or extend
- Frequent bugs in specific areas
- Slow development velocity in certain modules
- High complexity metrics
- Poor test coverage
- Outdated dependencies
Measuring Impact
Not all technical debt matters equally. Prioritize based on:
- Change Frequency: How often does this code change?
- Business Impact: How critical is this code to the business?
- Coupling: How much does this debt spread to other areas?
- Time to Fix: What’s the remediation cost?
Paying Down Debt
Opportunistic Refactoring: Fix debt when working in an area
"Leave the code better than you found it"
Dedicated Effort: Schedule time for major debt reduction
- Sprint capacity allocation (e.g., 20% for technical work)
- Dedicated refactoring sprints
- Tech debt reduction as part of each feature
Prevent New Debt
- Code review standards
- Automated quality gates
- Definition of Done includes quality criteria
- Regular architecture reviews
Communicating Technical Debt
To Non-Technical Stakeholders
Avoid: “We have technical debt in the payment module”
Better: “Making changes to payments takes 3x longer than it should, increasing feature delivery time and bug risk”
Use business impact:
- Development velocity
- Bug frequency and severity
- Customer satisfaction
- Time to market
- Scalability limitations
Tracking Debt
- Document as issues/tickets with clear impact statements
- Maintain a tech debt backlog
- Regular debt review sessions
- Visualize debt impact on roadmaps
Broken Windows Theory
One broken window, left unrepaired, instills a sense that the owners don’t care. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins.
Don’t Live with Broken Windows: Fix bad designs, wrong decisions, and poor code immediately when you see them.
Resources
- Awesome Technical Debt - Articles and conference talks
- The key points of Working Effectively with Legacy Code
- Prioritizing Technical Debt as If Time & Money Matters - Adam Tornhill
- Don’t Live with Broken Windows
Related Concepts
- Refactoring - Primary tool for debt reduction
- Feature Flags - Can create temporary debt
- Code Smells - Signs of technical debt
- Good Software Practices