Technical Debt

Type: Systems & Dynamics
Local HTML: technical_debt.html


Definition

Shortcuts in code or systems that save time now but cost more later. Like financial debt β€” you borrow speed, pay back with interest.

Ward Cunningham coined the term: Shipping messy code is like borrowing money. You can do more now, but pay interest forever.


Why It Matters

Software: Quick fixes accumulate. Eventually, changing anything breaks everything. Organizations: Process shortcuts become permanent. β€œTemporary” workarounds last decades. Personal: Skipping exercise, eating poorly, ignoring maintenance β€” debt accrues. Civilization: Infrastructure decay, climate inaction, education gaps β€” societal technical debt.


Types of Debt

TypeDescription
PrudentTaken knowingly, with plan to repay
RecklessTaken unknowingly or carelessly
DeliberateConscious choice for speed
InadvertentDiscovered after the fact

The Interest

  • Slower development β€” Changes take longer
  • More bugs β€” Complexity breeds errors
  • Knowledge silos β€” Only old-timers understand
  • Attrition β€” Good developers leave
  • Rewrite or die β€” Eventually, total replacement needed

Managing Debt

  1. Track it β€” Know what you owe
  2. Pay incrementally β€” Refactor as you go
  3. Budget for it β€” Allocate time to reduce debt
  4. Don’t take on more β€” Resist pressure for shortcuts


Audio

Podcast episode: Technical Debt


Part of the Cognitive Bias Reference