search menu icon-carat-right cmu-wordmark

Managing Technical Debt: Reducing Friction in Software Development

April 2019 Book
Philippe Kruchten (University of British Columbia), Robert Nord, Ipek Ozkaya

This book is for every software professional who wants to accelerate innovation in existing systems or build new systems that will be easier to maintain and evolve.

Publisher:

Software Engineering Institute

CMU/SEI Report Number

Addison-Wesley Professional

ISBN:
13: 978-0-13-564593-2

Abstract

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.