Technical Debt in Practice
How to Find It and Fix It
The practical implications of technical debt for the entire software life cycle; with examples and case studies.
Technical debt in software is incurred when developers take shortcuts and make ill-advised technical decisions in the initial phases of a project, only to be confronted with the need for costly and labor-intensive workarounds later. This book offers advice on how to avoid technical debt, how to locate its sources, and how to remove it. It focuses on the practical implications of technical debt for the entire software lifecycle, with examples and case studies from companies that range from Boeing to Twitter.
Technical debt is normal; it is part of most iterative development processes. But if debt is ignored, over time it may become unmanageably complex, requiring developers to spend all of their effort fixing bugs, with no time to add new features—and after all, new features are what customers really value. The authors explain how to monitor technical det, how to measure it, and how and when to pay it down. Broadening the conventional definition of technical debt, they cover requirements debt, implementation debt, testing debt, architecture debt, documentation debt, deployment debt, and social debt. They intersperse technical discussions with “Voice of the Practitioner” sidebars that detail real-world experiences with a variety of technical debt issues.
"If there is one thing that businesses should really care about beyond tech buzzwords, it is technical debt. This book provides a clear framework to a complex subject and practical recipes for managing it for everyone from technologists to business leaders.”
Serge Haziyev, Advanced Technologies, SoftServe Inc.
“With an emphasis on technical debt throughout the software product lifecycle, this book is filled with insights, advice, and pearls of wisdom. The authors possess a rare blend of engineering and scientific knowledge and deep experience from working on a wide spectrum of application domains, which is distilled into a concise and approachable form.”
Ian Gorton, Professor of the Practice and Director of Computer Science, Northeastern University–Seattle
“The release of this book is timely, but more importantly, the book offers a fresh view of real-world use cases and a pragmatic approach to managing technical debt. All too often the discussions end with abstract concepts; however, Ernst, Kazman, and Delange help convey the concepts using a structured approach that takes you from identifying to managing and then avoiding debt in each of the software development lifecycle stages. This book offers something for everyone. It is an essential resource for academics and students studying technical debt, but more importantly to practitioners who can benefit from the validated metrics, methods, and tools discussed throughout. The use cases offer a necessary perspective that brings it all together.”
Clemente (Clem) Izurieta, Associate Professor of Computer Science, Montana State University