How can I eliminate technical debt?

You can't eliminate technical debt. Nor should you want to. But where does that leaev us?

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.

Share this