Managing Technical Debt: Reducing Friction in Software Development, 1st edition

  • Philippe Kruchten
  • Robert Nord
  • Robert Nord
  • Ipek Ozkaya

Managing Technical Debt: Reducing Friction in Software Development

ISBN-13:  9780135645932

Add to cart form
Free delivery
Free delivery

What's included

  • Paperback

    You'll get a bound printed text.


“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

Foreword     xiii
Preface     xv
Part I: Exploring the Technical Debt Landscape     1
Chapter 1: Friction in Software Development     3

The Promise of Managing Technical Debt     3
Technical Debt A-B-C     5
Examples of Technical Debt     6
Your Own Story About Technical Debt?     11
Who Is This Book For?     12
Principles of Technical Debt Management     13
Navigating the Concepts of the Book     14
What Can You Do Today?     16
For Further Reading     17
Chapter 2: What Is Technical Debt?     19
Mapping the Territory     19
The Technical Debt Landscape     20
Technical Debt Items: Artifacts, Causes, and Consequences     22
Principal and Interest     24
Cost and Value     27
Potential Debt versus Actual Debt     32
The Technical Debt Timeline     33
What Can You Do Today?     35
For Further Reading     35
Chapter 3: Moons of Saturn–The Crucial Role of Context     37
“It Depends…”     37
Three Case Studies: Moons of Saturn     39
Technical Debt in Context     44
What Can You Do Today?     48
For Further Reading     48

Part II: Analyzing Technical Debt     49
Chapter 4: Recognizing Technical Debt     51

Where Does It Hurt?     51
What Are the Visible Consequences of Technical Debt?     54
Writing a Technical Debt Description     55
Understanding the Business Context for Assessing Technical Debt     58
Assessing Artifacts Across the Technical Debt Landscape     60
What Can You Do Today?     63
For Further Reading     64
Chapter 5: Technical Debt and the Source Code     65
Looking for the Magic Wand     65
Understand Key Business Goals     68
Identify Questions About the Source Code     70
Define the Observable Measurement Criteria     72
Select and Apply an Analysis Tool     75
Document the Technical Debt Items     76
Then Iterate     78
What Happens Next?     79
What Can You Do Today?     80
For Further Reading     81
Chapter 6: Technical Debt and Architecture     83
Beyond the Code     83
Ask the Designers     86
Examine the Architecture     89
Examine the Code to Get Insight into the Architecture     93
The Case of Technical Debt in the Architecture of Phoebe     94
What Can You Do Today?     101
For Further Reading     101
Chapter 7: Technical Debt and Production     103
Beyond the Architecture, the Design, and the Code     103
Build and Integration Debt     106
Testing Debt     109
Infrastructure Debt     110
The Case of Technical Debt in the Production of Phoebe     110
What Can You Do Today?     113
For Further Reading     113

Part III: Deciding What Technical Debt to Fix     115
Chapter 8: Costing the Technical Debt     117

Shining an Economic Spotlight on Technical Debt     117
Refine the Technical Debt Description     119
Calculate the Cost of Remediation     121
Calculate the Recurring Interest     122
Compare Cost and Benefit     123
Manage Technical Debt Items Collectively     127
What Can You Do Today?     129
For Further Reading     130
Chapter 9: Servicing the Technical Debt     131
Weighing the Costs and Benefits     131
Paths for Servicing Technical Debt     136
The Release Pipeline     142
The Business Case for Technical Debt as an Investment     143
What Can You Do Today?     146
For Further Reading     147

Part IV: Managing Technical Debt Tactically and Strategically     149
Chapter 10: What Causes Technical Debt?     151

The Perplexing Art of Identifying What Causes Debt     151
The Roots of Technical Debt     153
What Causes Technical Debt?     154
Causes Rooted in the Business     155
Causes Arising from Change in Context     157
Causes Associated with the Development Process     159
Causes Arising from People and Team     162
To Conclude     165
What Can You Do Today?     165
For Further Reading     166
Chapter 11: Technical Debt Credit Check     167
Identifying Causes: Technical Debt Credit Check     167
Four Focus Areas for Understanding the State of a Project     170
Diagnosing the Causes of Technical Debt in Phoebe     172
Diagnosing the Causes of Technical Debt in Tethys     174
What Can You Do Today?     177
For Further Reading     178
Chapter 12: Avoiding Unintentional Debt     179
Software Engineering in a Nutshell     179
Code Quality and Unintentional Technical Debt     180
Architecture, Production, and Unintentional Technical Debt     185
What Can You Do Today?     193
For Further Reading     193
Chapter 13: Living with Your Technical Debt     195
Your Technical Debt Toolbox     195
On the Three Moons of Saturn…     201
Technical Debt and Software Development     204
Finale     205
Glossary     207
References     209
Index     217

Published by Addison-Wesley Professional (June 6th 2019) - Copyright © 2019