█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/Software Engineering/Agile and Engineering Process/Technical Debt
35 minBeginner

Technical Debt

After this lesson, you will be able to: Define technical debt honestly, recognize how it accumulates, explain it to non-engineers in business terms, and decide when to pay it down versus live with it.

Technical debt is the gap between the code you have and the code you would write if you had time. Some of it is fine, even smart; some of it quietly grinds a team to a halt. The engineering skill is not avoiding all debt (impossible) but managing it deliberately and being able to argue for paying it down in language a product manager will fund.

Prerequisites:Engineering Metrics

What technical debt actually is

The metaphor, coined by Ward Cunningham, is financial: taking a shortcut now to ship faster is like borrowing money. It can be the right call, but you pay interest, in the form of extra effort on every future change, until you pay down the principal by refactoring. Not all debt is bad. Deliberate, short-term debt to hit a launch is a sound trade. The dangerous kind is the debt nobody chose and nobody tracks: it just accretes until 'simple' changes take weeks.

How it accumulates

Deadline shortcuts that never get revisited. Copy-paste instead of refactoring, so one bug now lives in nine places. Dependencies that go years without updates until a security patch forces a painful jump. 'Temporary' workarounds that outlive the people who wrote them. Missing tests, so nobody dares change the scary module. Knowledge debt, where only one person understands a system and they are on vacation. Most debt is not one bad decision; it is a hundred reasonable small ones with no cleanup budget.

💡 Talking about debt with non-engineers

Product managers do not fund 'refactoring.' They fund outcomes. Translate: instead of 'the auth module is a mess,' say 'every feature touching login now takes about 40% longer and carries a higher bug risk; two weeks of cleanup would cut that back and reduce incidents.' Tie debt to velocity, bug rates, incident frequency, and onboarding time, the things the business already feels. Quantify when you can. Frame paydown as an investment with a return, not as housekeeping.

When to pay it down, and when not to

Pay down debt in code you are about to change anyway (the boy-scout rule: leave it cleaner than you found it), in hot paths that the whole team touches, and when interest (slowed delivery, repeated incidents) is clearly higher than the cost of fixing it. Do not pay down debt in code that rarely changes and works, in something you are about to delete, or by stopping all feature work for a giant rewrite (rewrites are how teams lose a year). Track debt as tickets in the backlog so it is visible and prioritized alongside features, not as silent code rot.

Common mistakes only experienced engineers catch

Calling every piece of code you dislike 'tech debt.' Debt is a shortcut with real interest, not just a style you would not have chosen. Hiding debt from product instead of translating it into velocity and risk they will fund. The big-bang rewrite. Incremental paydown (the strangler-fig pattern) almost always beats stopping the world to rebuild. Never writing debt down, so it stays invisible until it is a crisis. Make tickets. Gold-plating: paying down debt in code that never changes, which is effort with no return.

Quick Check

How do you convince a skeptical PM to fund two weeks of cleanup?

Pick the most effective framing.

Sign in and purchase access to unlock this lesson.

Sign in to purchase
←Engineering Metrics (DORA)
Back to Agile and Engineering Process
Soft Skills for Tech Professionals→