Mark As Completed Discussion

Technical debt compounds silently—until it blocks delivery. This lesson shows how to see it, price it, prioritize it, and pay it down without stalling the roadmap.

Why Technical Debt Exists (and Why You Should Care)

technical debt is a metaphor (coined by Ward Cunningham) for the extra future effort you incur when you choose a quicker, lower-quality approach now. The “interest” is the extra effort each future change costs until you refactor.

It’s not inherently bad; like financial debt, it can accelerate delivery if you have a pay-down plan. But unmanaged debt slows teams and increases outage risk.

Why Technical Debt Exists

The Quadrant: Not All Debt Is Equal

Martin Fowler’s Technical Debt Quadrant classifies debt by intent (deliberate vs. inadvertent) and judgment (prudent vs. reckless). This helps you talk about why a shortcut happened and the right remedy.

Example: “We knowingly hardcoded config to hit a launch date” → deliberate/prudent if there’s a follow-up ticket and owner; reckless if not.

Let's test your knowledge. Click the correct answer from the options.

Which is true?

Click the option that best answers the question.

  • All technical debt is reckless
  • Only deliberate debt exists
  • Debt can be deliberate or inadvertent or prudent or reckless
  • Debt is always a bug

Core Vocabulary (Short & Precise)

  • principal: the one-time work to remediate debt (e.g., refactor, tests).
  • interest: the recurring extra work you pay every time you touch the area.
  • interest rate: how quickly the extra work grows (e.g., from 10 minutes to hours per change).
  • debt item: a trackable unit describing location, impact, and remediation.

Build your intuition. Fill in the missing part by typing it in.

The recurring extra effort caused by debt is called __________.

Write the missing line below.

What Technical Debt Isn’t

Debt isn’t just “ugly code.” It’s any design/implementation shortcut that increases future change cost: missing tests, unclear ownership, outdated libraries, “temporarily” bypassed checks, or accidental complexity in architecture.

Bugs ≠ debt (bugs are defects), but a pattern of quick fixes that bypass root causes is debt.

Where Debt Comes From (Common Sources)

  • Deadlines & feature pressure (deliberate).
  • Knowledge gaps or changing requirements (inadvertent).
  • Architecture drift as systems evolve.
  • Tooling/infra lag (versions, build pipelines).

SEI notes debt often emerges from process and context, not just code.

Build your intuition. Is this statement true or false?

All technical debt is intentional.

Press true if you believe the statement is correct, or false otherwise.

Debt vs. Reliability: Tying to SRE Concepts

Debt increases toil, on-call pages, and change failure rates. SRE practices emphasize risk tradeoffs and error budgets—use them to justify cleanup that reduces incident load.

A clean path: “This refactor reduces alert volume and improves MTTR—fits our reliability goals.”

Make Debt Visible: Backlogs & Taxonomies

Don’t hide debt in personal notes. Put it in your shared backlog alongside features and bugs, tagged and prioritized. Atlassian recommends including debt alongside all work items so tradeoffs are transparent.

Include: location, symptoms (interest), owners, proposed fix, size, risk, and “definition of done” for remediation.

Make Debt Visible

Try this exercise. Click the correct answer from the options.

Which is true?

Click the option that best answers the question.

  • Debt should live in private notes
  • Debt should be visible in the shared backlog with impact fields
  • Only managers track debt
  • Debt tracking replaces tests

Estimating Principal & Interest (Lightweight)

  • Principal: person-days to implement the fix.
  • Interest: extra hours per sprint caused by the debt (e.g., test flakiness adds 2h/wk). Track both; review monthly. Fowler’s framing: the “extra effort” is the interest you pay.

Prioritization Formula (Pragmatic)

A simple score helps compare debt items:

Priority = (Interest × Frequency × Risk) ÷ (Principal)

  • Interest: extra effort per touch.
  • Frequency: how often the area changes.
  • Risk: outage/compliance/security exposure.
  • Principal: estimated remediation effort.

Use this score to order the debt column in your backlog (alongside product value).

Scheduling Strategies That Actually Work

  • Debt Budget (Tax): reserve a fixed % of each sprint (10–20%) for debt.
  • Refactor Fridays / 20% Time: scheduled cleanup sprints/cadence.
  • Opportunistic Refactor: touch a file → leave it better (Boy Scout Rule).
  • Thematic Cleanup: pick one cross-cutting theme (e.g., test flake reduction) per quarter.

Architecture Debt: Not Just Code

Design shortcuts (shared DBs, tight coupling, ambiguous boundaries) create systemic drag. Use domain decomposition and clear contracts; reduce “spiderweb” dependencies that amplify change cost. SEI emphasizes that debt spans artifacts beyond code.

Architecture Debt: Not Just Code

Tests & Tooling: Your Interest Rate Lever

Automated tests and fast CI reduce the interest rate by making changes safer/cheaper. SRE monitoring “golden signals” (latency, traffic, errors, saturation) reveal debt that harms reliability. Use these to justify investment.

Add static analysis, coverage gates, and upgrade bots to stop new debt from sneaking in.

Build your intuition. Could you figure out the right sequence for this list?

Which is the right order?

Press the below buttons in the order in which they should occur. Click on them again to un-select.

Options:

  • Capture debt item with impact/owner
  • Estimate principal/interest
  • Score/prioritize
  • Schedule into sprint

Communication Patterns (Execs, PMs, Engineers)

  • Engineers: show “before/after” cycle time and defect trends.
  • PMs: link cleanup to roadmap velocity (“feature X ships 2 sprints sooner after refactor”).
  • Execs: translate to risk and cost (“interest = N engineer-days/quarter; payback in ≤2 quarters”). Use clear artifacts: short RFCs, risk registers, and decision memos.

Guardrails to Prevent New Debt

  • Definition of Done includes tests, monitoring, and docs.
  • Architecture review for cross-team impacts.
  • Version policies (N-1 for frameworks) and regular upgrade windows.
  • Lint/type checks in CI to stop preventable debt at the gate.

Measuring Outcomes (Did It Work?)

Track before/after on: lead time for changes, change failure rate, incident counts/MTTR, flaky tests, CI duration, and deploy frequency (classic throughput/reliability metrics). Use these to validate returns on debt work. (SRE monitoring chapters give guidance on signals to watch.

Measuring Outcomes

When to Choose a Rewrite (Rare)

Prefer incremental refactors with steady business value. Rewrite only when: (1) the interest dominates principal many times over, (2) the architecture is fatally misaligned with product direction, and (3) you can run old and new in parallel (strangler pattern). Keep milestones small and reversible.