In this article
Before you start
This page is one answer in the engineering manager interview questions guide, which maps the whole loop.
Why interviewers ask this
A vague answer to the technical debt question tells an interviewer that your team's speed will either decay slowly or stall under endless cleanups. Candidates report this question in engineering manager (EM) loops, usually as a test of judgment rather than of coding knowledge.
The question separates people who treat debt as a feeling from people who treat it as a cost they can see and trade. A weak answer says "we refactor when we can" or "we never let it build up." A strong answer names how debt becomes visible, how you compare it with feature work, and what you refuse to fix. It also shows how you talk to product partners, which connects it to your management philosophy and to the wider people management round. A Staff-level answer adds the boundary: some debt is never repaid, and saying so openly is part of managing it.
Technical debt management from first principles
- Technical debt
- Technical debt is a metaphor, coined by Ward Cunningham, that frames the cruft left by earlier shortcuts in code or design as a financial debt: the shortcut is a loan, the cleanup is the repayment, and the extra effort every later change costs is the interest.
- Debt interest
- Debt interest is the extra effort each new change costs because of existing cruft, counted here in extra days per change. It is paid again on every change that touches the affected code, whether or not anyone repays the original loan.
In plain words
Think of a credit card balance. Buying now gives a benefit today and leaves a balance, and interest is added while it stays unpaid. A shortcut works the same way: it speeds up this release, and later changes cost more.
The analogy breaks in two places: no statement shows the exact balance, and some debt is taken on unknowingly, because people learn as they build.
Fowler's quadrant uses two axes. Prudent or reckless asks whether the choice was sound for what the team knew; deliberate or inadvertent asks whether the team knew it was taking on debt. Prudent debt is debt a sensible team would accept given what it knew, either chosen on purpose to ship earlier (deliberate) or discovered once the team learnt the better design (inadvertent). Reckless debt is debt that comes from ignoring good design or not knowing it. The two axes give four cells. Fowler notes that "while you're programming, you are learning."
In one precise sentence: managing technical debt means making its cost visible, then spending team time where that cost is highest.
Step 1: Record each item and price it in days
A team manages technical debt by recording each item in the backlog and giving it two prices in days. Developers already capture debt this way: in the Software Engineering Institute (SEI) study of issue trackers, the most common practice survey participants reported was using issue trackers or existing backlog practices to capture and track debt. The same study found 109 debt examples among 1,246 issues from four trackers, about 8.7% of them, so debt hides among other work unless it is labelled.1 The SEI's report to Congress lists recording debt items and a culture where developers disclose debt as practices.
A debt register is a tagged list of debt items in the backlog, each with a cost to fix and an interest estimate. Fowler's own example prices a feature at 4 days with a clean structure and 6 days with the cruft. The 2 extra days are the interest, and the 5-day cleanup is the principal, which is the cost of paying the debt itself off.1 Your estimates will be rough. A rough number in days still beats an argument about taste.
Step 2: Decide which debt to leave unpaid
A team pays first the debt in code that changes often, and leaves rarely touched debt alone. Interest is charged per change, so code nobody edits charges almost nothing, however ugly it looks. Break-even shows why: the cleanup costs 5 days and saves 2 days per change, so it breaks even at 2.5 changes, meaning the third change that touches the module.1 The SEI report says it will never be possible to address 100 percent of technical debt, so a team needs a prioritization scheme and should map debt to rework costs. The table applies this to three illustrative items; the figures are assumptions, not measurements.1
| Debt item (illustrative) | Fix cost (days) | Interest per change (days) | Changes per quarter | Payback (quarters) | Net days over four quarters |
|---|---|---|---|---|---|
| Payments module | 5 | 2 | 6 | 0.42 | +43 |
| Build scripts | 8 | 0.5 | 4 | 4 | 0 |
| Legacy report module | 10 | 3 | 0.25 | 13.33 | -7 |
The build scripts net zero over four quarters, the break-even case: revisit them when their change rate or interest moves. Leaving the last item unpaid is a decision, not neglect. Write it down with a trigger that reopens it, such as "revisit if this module starts changing monthly."
Text description of the diagram
- Cleaning first costs 9 days at the first change against 6 days when leaving the cruft.
- By the third change cleaning first costs 17 days against 18 days.
The chart restates the break-even. Cleaning first costs 9 days at the first change against 6 days when leaving the cruft, and 17 days against 18 days by the third change.1
Step 3: Reserve capacity and review it every sprint
A team keeps debt work moving by reserving a share of each sprint for it and reviewing the register at every planning session. The SEI report advises reviewing debt as part of both iteration planning and risk management, and making debt management part of the normal process. A reserved share stops debt from losing every argument against a feature.
The size of the share is your call. As an illustrative assumption, a team of 6 engineers with a 10-day sprint has 60 engineer-days, so a 15% share is 9 days and a 20% share is 12 days.1 No cited source sets a right share, so present yours as a starting point you adjust.
Agree the share with your product partner before the sprint, and report results in days of interest removed. Engineers disclose debt when it is safe to say so, and regular one-on-ones are where that starts. A cleanup is also a good chance to grow engineers by letting them own a design decision.
Step-by-step description
- Debt items go into the backlog with a cost in days.
- Pay first where the code changes often.
- Reserve sprint capacity and review each planning session.
- A team records each debt item in the backlog and prices it in days.
- A team pays first the debt in code that changes often.
- A team reserves a share of each sprint and reviews the register at every planning session.
Knowing it is half the job. Saying it is the other half.
Interview Clozo is an AI interview copilot for real interview rounds: it hears the question and puts a strong answer on your screen, and you say it in your own words. See the features or how it works.
Start Free Trial →The Staff-level answer
What is your approach to managing technical debt within a team?
I treat technical debt as a cost I can see and price, not a feeling. Every item goes into the backlog with two numbers: what it costs to fix, and the extra days it adds to each change that touches it. I pay down debt where the code changes often, because that is where interest is paid most often, and I deliberately leave rarely touched code alone. I agree a fixed share of each sprint with the product manager in advance, and I review the list at every planning session. The trade-off is that some debt stays forever, and I say that openly instead of promising zero.
What makes it Staff-level is the last two sentences: you choose what not to fix and you commit to a review loop. The spoken structure is: say it is a cost you can price, say where you pay first, say how you protect time, then name the trade-off.
The rubric
This rubric is advice on what each level of answer shows, not any company's scoring sheet.
| Dimension | Weak answer | Strong answer | Staff answer |
|---|---|---|---|
| Correctness | Says debt is messy code | Defines debt by the extra effort it costs per change | Separates prudent from reckless debt |
| Depth | "We refactor when we can" | Backlog, estimates, regular review | Interest per change decides the order |
| Trade-offs | Aims for zero debt | Accepts some debt stays | States which debt stays and a trigger to revisit |
| Communication | Complains about product pressure | Explains cost in days to product partners | Agrees capacity in advance, reports interest removed |
| Follow-up readiness | Has no number | Can work a small example | Can show break-even and say when it fails |
Three variants of this question
How do you convince a product manager to fund debt work?
Translate the debt into days they already care about: fix cost, interest per change, and how many upcoming changes touch the code. The SEI report advises mapping debt to rework costs and using that for prioritization. Offer a small reserved share rather than a big rewrite.
How do you handle technical debt in a codebase you inherited?
When you are inheriting a team and its code, do not try to clear the debt. Register what the team trips over, price it, and start with the modules the next quarter's roadmap touches. Everything else stays recorded but unpaid until its change rate rises.
What if leadership says there is no time for debt work this quarter?
Take the shortcut as a deliberate, prudent choice: write down the item, its interest estimate and the date you will revisit it. Where possible, pay small pieces inside feature work in the same files. The risk you name now is cheaper than the surprise later.
Common mistakes
- "We will fix it all in one big rewrite." (wrong) A rewrite delays features and still cannot reach everything. (right) "We pay debt incrementally, in priority order, and review it every sprint."
- "Cutting corners is always faster." (wrong) Fowler's argument is that good design is what lets a team go faster, so skipping it misjudges the payoff. (right) "A shortcut is a loan; I take it deliberately and only when the earlier release is worth the interest."
- "I fix debt when it feels bad." (wrong) Feeling is not a priority order. (right) "I rank items by days of interest per quarter against the cost to fix."
- "Debt work is the engineers' side project." (wrong) Product partners cannot protect time they never hear about. (right) "I agree capacity with product in advance and report the interest removed in days."
Follow-up questions
What is the difference between prudent and reckless technical debt?
Prudent debt is debt a sensible team would accept given what it knew, either chosen on purpose to ship earlier (deliberate) or discovered once the team learnt the better design (inadvertent). Reckless debt comes from ignoring or not knowing good design. Fowler's two axes give four cells, so inadvertent debt can be prudent or reckless.
Is messy code the same thing as technical debt?
Not automatically. Debt matters by the interest it charges on later changes, so messy code in a module nobody touches costs little. Fowler's quadrant page discusses Robert C. Martin's view that a mess is not debt, and disagrees with it; a good answer states your definition and then prices the item.
Is the goal zero technical debt?
No. The SEI report says addressing 100 percent of it is never possible, so the goal is a prioritization scheme. Aim for debt that is visible, priced and chosen.
How much of each sprint should go to technical debt?
There is no authoritative share. Start with a modest, agreed slice such as the 15% in the example above, then raise or lower it from the interest you actually remove.
How do you tell whether a team is drowning in technical debt?
Look for estimates that keep growing on the same modules, engineers who avoid certain files, and debt items that nobody dares to schedule. The team health answer shows how to read these signals together.
- Technical debt is cruft left by earlier shortcuts; price its interest in days per change.
- Record debt in the backlog, labelled, so it stops hiding among other work.
- Pay first where code changes often; a cleanup breaks even at its cost divided by the interest per change.
- Leave some debt unpaid on purpose, and write down the trigger that reopens it.
- Reserve a share of each sprint, agree it with product in advance, and review it at every planning session.
Sources
- Bliki: Technical Debt — martinfowler.com (Martin Fowler), 21 May 2019
- Bliki: Technical Debt Quadrant — martinfowler.com (Martin Fowler), 14 Oct 2009
- Congressional Report Sec. 835 on Technical Debt (CMU/SEI-2023-TR-003) — Software Engineering Institute, Carnegie Mellon University, 1 Feb 2023
- Got Technical Debt? Surfacing Elusive Technical Debt in Issue Trackers — Software Engineering Institute (Bellomo, Nord, Ozkaya, Popeck; MSR 2016), 1 May 2016