Over time, technical debt affects virtually every significant software project. As software systems evolve, earlier design or code decisions prove to be "not quite right,” gradually becoming impediments that slow down the evolution of the system, or even grind it to a halt. Most software practitioners have experienced this phenomenon, but many feel helpless to address it. In this guide, three leading software engineering experts introduce empirically validated principles and practices for managing and mitigating technical debt in any software system.
Using real-life examples, the authors explain the forms of technical debt that afflict software-intensive systems, their root causes, and their impacts. Next, they introduce a palette of proven approaches, strategies, methods, and tools for:
- Identifying sources of technical debt in any software system
- Assessing the magnitude of technical debt
- Limiting the introduction of technical debt in the first place
- Reducing the impact of technical debt over time
As software systems mature, the challenge of technical debt has grown, and it has become increasingly urgent for software professionals and their managers to address it head-on. Managing Technical Debt shows them how.