technical debt is a choice

Technical debt isn’t bad code. It’s code that was correct for an earlier set of constraints that no longer apply.

The debt metaphor is apt: sometimes you take on debt deliberately because the short-term payoff justifies the long-term cost. That’s fine. What’s not fine is taking on debt without knowing it, or knowing it and not tracking it.

The problem with most “technical debt” conversations is that they treat all debt the same. A hacky workaround in a stable, rarely-changed module is almost free. The same workaround in the core of your hottest code path compounds daily.

Debt has a location. Know where yours is.