Technical Debt
The future cost of a present shortcut, metaphorically accruing interest.
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 recognisable 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 also5
Hand-picked in the note itself — the neighbours worth reading next.
Deprecation
Marking something as superseded and scheduled for removal, without removing it yet.
Method9 connections
Documentation Rot
Documentation that has drifted from the system it describes, and is now worse than none.
Method20 connections
Code Review
A second person reading a change before it lands, and the practices that make it worth the time.
Version Control & Delivery15 connections
Root Cause Analysis
Escalating past the visible symptom until you find the layer that actually produced it.
Method21 connections
Feature Flag
A runtime switch that decouples shipping code from enabling behaviour.
Data & Content9 connections
Related3
Nearby in the graph rather than deliberately chosen. Looser, sometimes surprising.
Linked from8
Notes elsewhere in the wiki that reach for this one.
- Chesterton's FenceMethod
Do not remove something whose purpose you cannot explain.
- Code CommentMethod
Prose inside source code, useful only when it records a constraint the code cannot state.
- DeprecationMethod
Marking something as superseded and scheduled for removal, without removing it yet.
- Documentation RotMethod
Documentation that has drifted from the system it describes, and is now worse than none.
- Feature FlagData & Content
A runtime switch that decouples shipping code from enabling behaviour.
- ProvenanceMethod
The recorded origin of a change or a claim — who made it, when, and on what evidence.
- Root Cause AnalysisMethod
Escalating past the visible symptom until you find the layer that actually produced it.
- Schema DriftData & Content
Divergence between a schema and the code, types, or documentation that describe it.