Managing Technical Debt: Reducing Friction in Software Development

Book description

“This is an incredibly wise and useful book. The authors have considerable real-world experience in delivering quality systems that matter, and their expertise shines through in these pages. Here you will learn what technical debt is, what is it not, how to manage it, and how to pay it down in responsible ways. This is a book I wish I had when I was just beginning my career. The authors present a myriad of case studies, born from years of experience, and offer a multitude of actionable insights for how to apply it to your project.”
–Grady Booch, IBM Fellow
 
Master Best Practices for Managing Technical Debt to Promote Software Quality and Productivity
As software systems mature, earlier design or code decisions made in the context of budget or schedule constraints increasingly impede evolution and innovation. This phenomenon is called technical debt, and practical solutions exist. In Managing Technical Debt, three leading experts introduce integrated, empirically developed principles and practices that any software professional can use to gain control of 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. They introduce proven approaches for identifying and assessing specific sources of technical debt, limiting new debt, and “paying off” debt over time. They describe how to establish managing technical debt as a core software engineering practice in your organization.
  • Discover how technical debt damages manageability, quality, productivity, and morale–and what you can do about it
  • Clarify root causes of debt, including the linked roles of business goals, source code, architecture, testing, and infrastructure
  • Identify technical debt items, and analyze their costs so you can prioritize action
  • Choose the right solution for each technical debt item: eliminate, reduce, or mitigate
  • Integrate software engineering practices that minimize new debt
Managing Technical Debt will be a valuable resource for every software professional who wants to accelerate innovation in existing systems, or build new systems that will be easier to maintain and evolve.

Table of contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. Dedication
  5. Contents at a Glance
  6. Contents
  7. Foreword
  8. Preface
  9. Acknowledgments
  10. About the Authors
  11. About the Contributors
  12. Acronyms
  13. SEI Figures for Managing Technical Debt
  14. Part I: Exploring the Technical Debt Landscape
    1. Chapter 1. Friction in Software Development
      1. The Promise of Managing Technical Debt
      2. Technical Debt A-B-C
      3. Examples of Technical Debt
      4. Your Own Story About Technical Debt?
      5. Who Is This Book For?
      6. Principles of Technical Debt Management
      7. Navigating the Concepts of the Book
      8. What Can You Do Today?
      9. For Further Reading
    2. Chapter 2. What Is Technical Debt?
      1. Mapping the Territory
      2. The Technical Debt Landscape
      3. Technical Debt Items: Artifacts, Causes, and Consequences
      4. Principal and Interest
      5. Cost and Value
      6. Potential Debt versus Actual Debt
      7. The Technical Debt Timeline
      8. What Can You Do Today?
      9. For Further Reading
    3. Chapter 3. Moons of Saturn—The Crucial Role of Context
      1. “It Depends…”
      2. Three Case Studies: Moons of Saturn
      3. Technical Debt in Context
      4. What Can You Do Today?
      5. For Further Reading
  15. Part II: Analyzing Technical Debt
    1. Chapter 4. Recognizing Technical Debt
      1. Where Does It Hurt?
      2. What Are the Visible Consequences of Technical Debt?
      3. Writing a Technical Debt Description
      4. Understanding the Business Context for Assessing Technical Debt
      5. Assessing Artifacts Across the Technical Debt Landscape
      6. What Can You Do Today?
      7. For Further Reading
    2. Chapter 5. Technical Debt and the Source Code
      1. Looking for the Magic Wand
      2. Understand Key Business Goals
      3. Identify Questions About the Source Code
      4. Define the Observable Measurement Criteria
      5. Select and Apply an Analysis Tool
      6. Document the Technical Debt Items
      7. Then Iterate
      8. What Happens Next?
      9. What Can You Do Today?
      10. For Further Reading
    3. Chapter 6. Technical Debt and Architecture
      1. Beyond the Code
      2. Ask the Designers
      3. Examine the Architecture
      4. Examine the Code to Get Insight into the Architecture
      5. The Case of Technical Debt in the Architecture of Phoebe
      6. What Can You Do Today?
      7. For Further Reading
    4. Chapter 7. Technical Debt and Production
      1. Beyond the Architecture, the Design, and the Code
      2. Build and Integration Debt
      3. Testing Debt
      4. Infrastructure Debt
      5. The Case of Technical Debt in the Production of Phoebe
      6. What Can You Do Today?
      7. For Further Reading
  16. Part III: Deciding What Technical Debt to Fix
    1. Chapter 8. Costing the Technical Debt
      1. Shining an Economic Spotlight on Technical Debt
      2. Refine the Technical Debt Description
      3. Calculate the Cost of Remediation
      4. Calculate the Recurring Interest
      5. Compare Cost and Benefit
      6. Manage Technical Debt Items Collectively
      7. What Can You Do Today?
      8. For Further Reading
    2. Chapter 9. Servicing the Technical Debt
      1. Weighing the Costs and Benefits
      2. Risk Exposure
      3. Opportunity Cost
      4. Paths for Servicing Technical Debt
      5. The Release Pipeline
      6. The Business Case for Technical Debt as an Investment
      7. What Can You Do Today?
      8. For Further Reading
  17. Part IV: Managing Technical Debt Tactically and Strategically
    1. Chapter 10. What Causes Technical Debt?
      1. The Perplexing Art of Identifying What Causes Debt
      2. The Roots of Technical Debt
      3. What Causes Technical Debt?
      4. Causes Rooted in the Business
      5. Causes Arising from Change in Context
      6. Causes Associated with the Development Process
      7. Causes Arising from People and Team
      8. To Conclude
      9. What Can You Do Today?
      10. For Further Reading
    2. Chapter 11. Technical Debt Credit Check
      1. Identifying Causes: Technical Debt Credit Check
      2. Four Focus Areas for Understanding the State of a Project
      3. Diagnosing the Causes of Technical Debt in Phoebe
      4. Diagnosing the Causes of Technical Debt in Tethys
      5. What Can You Do Today?
      6. For Further Reading
    3. Chapter 12. Avoiding Unintentional Debt
      1. Software Engineering in a Nutshell
      2. Code Quality and Unintentional Technical Debt
      3. Architecture, Production, and Unintentional Technical Debt
      4. What Can You Do Today?
      5. For Further Reading
    4. Chapter 13. Living with Your Technical Debt
      1. Your Technical Debt Toolbox
      2. On the Three Moons of Saturn …
      3. Technical Debt and Software Development
      4. Finale
  18. Glossary
  19. References
  20. Index
  21. Technical Debt Description

Product information

  • Title: Managing Technical Debt: Reducing Friction in Software Development
  • Author(s): Philippe Kruchten, Robert Nord, Ipek Ozkaya
  • Release date: April 2019
  • Publisher(s): Addison-Wesley Professional
  • ISBN: 9780135646052