Kelly Mears

Technical Debt

The future cost of a present shortcut, metaphorically accruing interest.

Method2 min read202 words12 out · 28 in
also calledTech debt

Technical debt is Ward Cunningham's metaphor for the cost incurred by choosing an expedient implementation over a better one: you ship sooner, and you pay interest on the difference in every subsequent change.

The metaphor is often flattened into "bad code", which loses what made it useful. Cunningham's point was that deliberately taking a shortcut can be correct, provided the debt is known and repaid. Debt taken knowingly, recorded, and scheduled is a financing decision. Debt taken unknowingly is just a defect with a nicer name.

Some recognizable forms: a workaround kept after its cause was fixed upstream; a duplicated implementation nobody consolidated; a guard suppressed rather than resolved; a deprecated dependency held back; a coverage shortfall inherited from a branch whose gate never ran. Each is cheap once and expensive per subsequent touch.

Two practices keep it visible. Record why a shortcut was taken and what would let it be removed, so a later reader is not stuck at Chesterton's Fence. And prefer paying an adjacent debt inside the change that exposes it over filing a follow-up item — a follow-up moves the work to a backlog that may never be read, while the person with the context is right there.

See also11

Deprecation

Marking something as superseded and scheduled for removal, without removing it yet.

Method20 connections

Documentation Rot

Documentation that has drifted from the system it describes, and is now worse than none.

Method28 connections

Code Review

A second person reading a change before it lands, and the practices that make it worth the time.

Version Control & Delivery38 connections

Root Cause Analysis

Escalating past the visible symptom until you find the layer that actually produced it.

Method49 connections

Feature Flag

A runtime switch that decouples shipping code from enabling behavior.

Data & Content19 connections

Plausible Mechanism

A causal explanation that was inferred rather than tested, and reads as more rigorous for being specific.

Method63 connections

Naming

Choosing identifiers so the code states its own meaning without commentary.

Method59 connections

Code Comment

Prose inside source code, useful only when it records a constraint the code cannot state.

Method11 connections

Premature Optimization

Spending effort making code fast before you know where it's actually slow trades clarity for speed you may not need.

Method10 connections

Definition of Done

A team's shared checklist of what must be true before work counts as finished, such as reviewed, tested, documented, and deployed, which keeps hidden work from piling up behind items marked complete.

Version Control & Delivery9 connections

Architecture Decision Record

A short document recording one significant technical decision, its context, and its consequences, kept alongside the code so later readers know why the system is shaped the way it is.

Version Control & Delivery9 connections

Linked from28