skip to content

Explain Martin Fowler's technical debt quadrant (deliberate vs inadvertent, prudent vs reckless) and give an example of each of the four cells.

level: middleimportance: must knowfreq 58%

answer

  1. Two axes: intent x judgement
  2. Deliberate+prudent = real loan, record it
  3. Deliberate+reckless = the dangerous cell
  4. Inadvertent+prudent = Cunningham's learning debt
  5. Inadvertent+reckless = skill gap, fix with capability

basics

~10 s

Fowler classifies debt on two axes: was it chosen on purpose (deliberate) or discovered later (inadvertent), and was it a sensible call (prudent) or careless (reckless). The four combinations need very different responses.

solid answer

~50 s

Fowler's quadrant separates *intent* from *judgement*. Deliberate-prudent: "we ship now with a simplified model and accept the consequences" - a conscious, justified loan, and normally the only kind you should plan. Deliberate-reckless: "we know layering matters but we have no time" - a known-wrong shortcut with no repayment plan; the dangerous cell. Inadvertent-prudent: "now that it is built we can see what the design should have been" - Cunningham's original case, the natural result of learning, repaid by continuous refactoring. Inadvertent-reckless: "what is layering?" - debt from a skill gap, invisible to the team; the fix is training, review and pairing, not a ticket. The value of the model is that the response differs per cell: record and schedule deliberate-prudent debt, prevent deliberate-reckless through policy and a quality bar, budget for inadvertent-prudent, and address inadvertent-reckless by building capability.

go deeper

for a junior

Name the two axes and give one concrete example per cell.

for a middle

Explain that the appropriate response differs per cell and that deliberate does not imply acceptable.

for a senior

Discuss recording deliberate-prudent debt with a repayment trigger, and preventing the reckless cells through review, guardrails and a defended quality bar.

for a principal

Note that prudent/reckless is a hindsight judgement, that debt migrates between cells when triggers expire, and how organizational incentives systematically manufacture deliberate-reckless debt.

## The two axes Martin Fowler proposed the quadrant in 2009 to end sterile arguments about whether messy code "counts" as debt. - **Deliberate vs inadvertent** - did the team *know* at the time that they were deviating from a better design? - **Prudent vs reckless** - was the decision (or the ignorance) reasonable given what was at stake? ## The four cells **Deliberate + prudent** - "We must ship for the trade show, so we hard-code the two supported currencies and accept the rework." The team understands the correct design, chooses not to build it now for a real reason, and understands the cost. This is genuine borrowing. Requirement: record the decision, the trigger for repayment and the estimated principal. **Deliberate + reckless** - "We do not have time for design." The team knows what good looks like, skips it, and does not intend to return. Nothing is purchased except a delay in feeling the pain. This cell compounds fastest and is what people mean when they complain about debt being used as an excuse. **Inadvertent + prudent** - "Now that we have shipped, we can see the right domain model." You could not have known earlier; the original design was a reasonable inference from available knowledge. This is Cunningham's original meaning, unavoidable in any nontrivial product, and repaid continuously as understanding improves. **Inadvertent + reckless** - "What is a layer?" The team does not know the practice exists, so debt accumulates invisibly and is often discovered by an outsider or after an incident. Filing tickets does not help because the same mistakes reappear; the countermeasures are code review, pairing, training, architecture guidelines and automated checks. ## Why the model matters The quadrant maps to different management levers: | Cell | Primary response | |---|---| | Deliberate + prudent | Record it, estimate principal, define a repayment trigger | | Deliberate + reckless | Policy and leadership: no shortcut without a decision record; defend a minimum quality bar | | Inadvertent + prudent | Budget continuous refactoring; treat as the normal cost of learning | | Inadvertent + reckless | Raise capability: review, pairing, training, guardrails in the build | ## Edge cases and criticisms The boundary between prudent and reckless is judged with hindsight and is often contested - a deadline that looked existential may not have been. Debt also migrates between cells: deliberate-prudent debt becomes effectively reckless once the repayment trigger passes and nobody acts. A practical rule is that only deliberate-prudent debt may be *planned*; the other three are conditions you detect and reduce.

  • Which quadrant cannot be fixed by adding tickets to the backlog, and why?
    Inadvertent-reckless. The team does not know the practice exists, so it cannot describe the debt or stop recreating it. The remedy is capability: reviews, pairing, guidelines, and automated architecture or lint checks that make the mistake visible.
  • Can debt move between quadrants over time?
    Yes. Deliberate-prudent debt turns effectively reckless once the repayment trigger passes and nobody repays it - the justification expires while interest keeps accruing. That is why prudent debt needs a recorded trigger, not just good intentions.
  • How does the quadrant change how you write the record for a shortcut?
    For deliberate-prudent debt the record should state the correct design, why it was skipped, the estimated principal, the expected interest, and the condition that forces repayment - a date, a second customer, or a scale threshold.

saying these in an interview costs you the question

  • Treating the axes as one scale - 'deliberate' does not mean acceptable and 'inadvertent' does not mean excusable
  • Claiming all deliberate debt is fine because it was a decision; deliberate-reckless is the worst cell
  • Assuming inadvertent-prudent debt can be avoided with more up-front design, when it comes from learning that only happens after shipping
  • Using the quadrant to label people rather than decisions
  • Filing inadvertent-reckless debt as backlog items and expecting the pattern to stop recurring

context