How can I eliminate technical debt?

November 26, 2021

Ends today! Save 80% on my popular video course, Ship Better Code Faster!


Someone recently asked me how they could eliminate technical debt. My answer was “You can’t.” But of course that’s over-simplified. Yesterday I detailed three sources of technical debt. With these in mind, it should be easy to see how we cannot (and perhaps should not) eliminiate technical debt.

  1. Intentional technical debt

    When we choose technical debt, it’s to make a trade-off. Business is all about trade-offs, so we should not even want to eliminate this type of technical debt.

  2. Outdated technology

    Unless you have a crystal ball, there’s no way to eliminate this type of technical debt, aside from never writing new software.

  3. Ignorant technical debt

    Unless you’re able to hire omnicient developers, we’ll always be dealing with ignorant technical debt, as the price of learning.

So if we can’t eliminate technical debt, what should we do? Manage it.


One way to help manage accidental technical debt is through the concept of evolutionary design, which allows us to “kind of pretend that we made the right design decisions all along,” which is something J. B. Rainsberger and I discussed very recently in our two-part interview on the Tiny DevOps podcast: Part 1 & Part 2.


Related Content

Types of technical debt

Where does technical debt come from? Three main sources.

Why "Consider refactoring this" comments are silly

Code is always subject to refactoring when the need arises. Adding a comment to that effect is just noise.

Adventures In DevOps 095: Dev vs DevOps: Which Will You Choose?

Jillian, Jonathan, Will, and Chuck discuss where the line is between Development and DevOps and what the difference is. They also get into the value of each and when crossover is likely to occur.