Managing Technical Debt

Stephen Kawaguchi
The Startup
Published in
17 min readJul 13, 2020

--

DevOps Essentials

One man pushing a cube, another rolling a cylinder. The man with the cylinder is further ahead.
Image by Francesco Chiesa licensed via Adobe Stock

Introduction

Technical debt is one of the most insidious and damaging phenomena in software development. If left unchecked, it can destroy projects, products, entire software organizations, and even companies. Anybody that has worked on software intended to live for more than a few months is familiar with the signs that it has taken root:

  • Making changes to code seems to take longer and longer over time
  • There is low confidence in the quality of the software because changes often lead to regression bugs, and so a fear of change develops
  • The code is hard for anyone (even the author) to understand
  • Maintenance activities, such as updating dependencies, are almost always significant undertakings, and so the codebase is increasingly out of date
  • Release cycles are in weeks, months, or even years

These are undesirable traits leading to an inevitable end-state where all forward progress halts.

So if tech debt is so dangerous, why do software organizations allow it to accumulate? You would think that organizations would make it a point to prevent it. If only it were this easy!

In this article, we’ll explore some of the reasons technical debt accumulates and…

--

--

Stephen Kawaguchi
The Startup

Senior Software Engineer @ Flipp | Kaizen All the Things