Tech Debt Is Not a Bug — It's a Product Decision
Tech Debt Is Not a Bug — It's a Product Decision
Introduction
"We need to address our tech debt."
Watch the eyes of your product manager, your VP, or your CFO when you say this. You'll see polite nodding masking complete disengagement. To them, you've just said: "We want to do engineering stuff that won't ship features."
The problem isn't that stakeholders don't care about quality. It's that "tech debt" sounds like an engineering problem with an engineering solution—something that happened in the codebase, fixable by engineers, probably not urgent.
But tech debt isn't a bug in the code. It's a product decision made previously—often consciously, sometimes not—that now has compounding business consequences. Every day you don't address it, you're making another product decision: to accept slower delivery, higher costs, and increased risk.
This guide is about reframing tech debt in terms that resonate with business stakeholders, and getting the support you need to address it strategically.
Why the "Debt" Metaphor Matters
The term "technical debt" was coined by Ward Cunningham to explain software quality to business stakeholders. It's powerful because business people understand debt.
THE DEBT METAPHOR:
════════════════════════════════════════════════════════════════════
FINANCIAL DEBT TECHNICAL DEBT
═════════════════ ══════════════════════
Take a loan Ship with shortcuts
(get money now) (get features now)
│ │
│ │
▼ ▼
Pay interest Pay "interest"
(ongoing cost) (slower development,
more bugs, harder changes)
│ │
│ │
▼ ▼
Pay principal Refactor/rewrite
(eliminate debt) (eliminate debt)
│ │
│ │
▼ ▼
Financial freedom Development velocity
(money for other things) (capacity for features)
THE METAPHOR WORKS BECAUSE:
═══════════════════════════════════════════════════════════════════
✓ Debt isn't inherently bad — it's a financing tool
✓ Interest compounds — small debt becomes big debt
✓ Some debt is strategic — enables opportunities
✓ Too much debt is dangerous — can become unpayable
✓ Ignoring debt doesn't make it go away
✓ Bankruptcy is real — systems can become unmaintainable
Where the Metaphor Breaks Down
┌─────────────────────────────────────────────────────────────────────┐
│ WHERE THE METAPHOR FAILS │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ FINANCIAL DEBT TECHNICAL DEBT │
│ ══════════════ ═════════════════════ │
│ │
│ Interest rate is known "Interest" is unpredictable │
│ (sometimes nothing, sometimes │
│ catastrophic) │
│ │
│ Debt amount is precise Debt is hard to quantify │
│ ($100,000) ("it's pretty bad") │
│ │
│ Creditors demand payment No one forces you to pay │
│ (until something breaks) │
│ │
│ Visible on balance sheet Invisible until it hurts │
│ │
│ Can refinance, negotiate Can't negotiate with code │
│ │
│ One debtor, one creditor Many developers, many opinions │
│ on what counts as "debt" │
│ │
│ TIME MAKES IT WORSE IN DIFFERENT WAYS: │
│ │
│ Financial: Linear growth Tech: Exponential complexity │
│ (interest compounds, but (debt interacts with debt, │
│ predictably) making everything harder) │
│ │
└─────────────────────────────────────────────────────────────────────┘
The Stakeholder Disconnect
What Engineers Say vs. What Stakeholders Hear
WHAT ENGINEERS SAY WHAT STAKEHOLDERS HEAR
══════════════════ ════════════════════════════════
"We have a lot of "Engineers want to play with
tech debt" code instead of shipping"
"The codebase is a mess" "Engineers are complaining again"
"We need to refactor" "We need to redo work we
already paid for"
"This will slow us down "They're making excuses for
in the long run" missing deadlines"
"We should have done it "They want to gold-plate
right the first time" everything"
"It's not sustainable" "But it's working now, right?"
"We're accumulating "Vague future problem that
technical debt" doesn't affect my OKRs"
Why Stakeholders Don't Prioritize Tech Debt
┌─────────────────────────────────────────────────────────────────────┐
│ THE STAKEHOLDER PERSPECTIVE │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ COMPETING PRIORITIES │
│ ───────────────────────────────────────────────────────────────── │
│ • Customer-facing features have clear value │
│ • Sales needs that feature for the big deal │
│ • Marketing has a launch date │
│ • Competitor just shipped something similar │
│ • Board is asking about growth metrics │
│ │
│ Tech debt impact is: │
│ • Abstract ("slower development" — how much slower?) │
│ • Future ("will cause problems" — when? definitely?) │
│ • Invisible (no customer sees "clean code") │
│ • Uncertain (maybe we'll rewrite anyway?) │
│ │
│ INCENTIVE MISALIGNMENT │
│ ───────────────────────────────────────────────────────────────── │
│ Product managers are measured on: │
│ • Features shipped │
│ • User metrics │
│ • Revenue impact │
│ │
│ NOT on: │
│ • Code quality │
│ • Developer satisfaction │
│ • Long-term maintainability │
│ │
│ TRUST GAP │
│ ───────────────────────────────────────────────────────────────── │
│ • Engineers cried wolf before (or seem to) │
│ • "We'll clean it up later" was promised and didn't happen │
│ • Previous "necessary" rewrites didn't deliver promised value │
│ • Hard to verify engineering claims about internal quality │
│ │
│ VISIBILITY GAP │
│ ───────────────────────────────────────────────────────────────── │
│ Stakeholders see: Feature → User value → Business metric │
│ They don't see: Slow code → Slow change → Slow feature │
│ │
└─────────────────────────────────────────────────────────────────────┘
Reframing: Tech Debt as Product Decision
The shift: Stop talking about code quality and start talking about product capability.
The Reframe
OLD FRAMING (Engineering) NEW FRAMING (Product)
══════════════════════════ ═════════════════════════════════
"The code is messy" "Changing the checkout flow
takes 3 weeks instead of 3 days"
"We have tech debt" "We can ship 4 features per
quarter instead of 8"
"We need to refactor" "We need to reduce the cost
of future features"
"It's not maintainable" "Every bug fix creates two
new bugs"
"Architecture is wrong" "We can't scale past 10K users
without 6 months of rework"
"Tests are inadequate" "Deployments have 30% chance
of causing outage"
"We should fix this now" "Every month we wait adds
$50K to the eventual fix"
The Core Message
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ TECH DEBT ISN'T A TECHNICAL PROBLEM. │
│ IT'S A TAX ON EVERY FUTURE PRODUCT DECISION. │
│ │
│ Every feature takes longer. │
│ Every change carries more risk. │
│ Every sprint delivers less. │
│ │
│ The question isn't "Should we fix the code?" │
│ The question is "Are we willing to keep paying this tax?" │
│ │
└─────────────────────────────────────────────────────────────────────┘
Types of Tech Debt (In Business Terms)
The Tech Debt Taxonomy
TYPE 1: VELOCITY DEBT
════════════════════════════════════════════════════════════════════
What it is: Code that slows down development
Engineering: "Spaghetti code, no tests, poor abstractions"
Business: "Features take 2-3x longer than they should"
Symptoms:
• Estimates keep growing
• "Simple" changes aren't simple
• New developers take months to become productive
• Same bugs keep reappearing
Business impact:
• Fewer features per quarter
• Higher development costs
• Slower response to market
• Competitor advantage
TYPE 2: STABILITY DEBT
════════════════════════════════════════════════════════════════════
What it is: Code that causes incidents and outages
Engineering: "Brittle systems, missing error handling, no monitoring"
Business: "The site goes down and we lose money"
Symptoms:
• Frequent incidents
• Fear of deploying
• Manual interventions required
• On-call burnout
Business impact:
• Lost revenue during outages
• Customer trust erosion
• Support cost increases
• SLA penalties
TYPE 3: SCALABILITY DEBT
════════════════════════════════════════════════════════════════════
What it is: Architecture that can't handle growth
Engineering: "Monolith, single database, no caching, N+1 queries"
Business: "We can't onboard that enterprise client"
Symptoms:
• Performance degrades with load
• Can't enter new markets (data residency)
• Infrastructure costs grow faster than revenue
• System falls over during traffic spikes
Business impact:
• Lost sales ("can you handle our volume?")
• Infrastructure costs eat margin
• Growth ceiling
• Missed market timing
TYPE 4: SECURITY DEBT
════════════════════════════════════════════════════════════════════
What it is: Vulnerabilities and compliance gaps
Engineering: "Old dependencies, SQL injection, no encryption"
Business: "We could get breached or fail audit"
Symptoms:
• Security audit findings
• Outdated dependencies
• No security reviews
• Compliance gaps
Business impact:
• Breach costs (average $4M+)
• Regulatory fines
• Lost enterprise deals
• Reputation damage
TYPE 5: KNOWLEDGE DEBT
════════════════════════════════════════════════════════════════════
What it is: Undocumented systems understood by few
Engineering: "No docs, tribal knowledge, bus factor of 1"
Business: "If Sarah leaves, no one knows how billing works"
Symptoms:
• Only certain people can work on certain code
• Onboarding takes forever
• Fear of touching old systems
• Knowledge walks out the door
Business impact:
• Key person dependencies
• Slow onboarding (3-6 months to productivity)
• Higher attrition (frustration)
• Acquisition/integration difficulties
Mapping to Business Metrics
┌─────────────────────────────────────────────────────────────────────┐
│ TECH DEBT → BUSINESS METRIC MAPPING │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ DEBT TYPE BUSINESS METRICS AFFECTED │
│ ═════════════════════════════════════════════════════════════════ │
│ │
│ Velocity Debt • Features shipped per quarter │
│ • Time-to-market │
│ • Cost per feature │
│ • Developer productivity │
│ • Time to respond to competition │
│ │
│ Stability Debt • Uptime (SLA) │
│ • Customer churn │
│ • Support ticket volume │
│ • CSAT/NPS scores │
│ • Revenue impact of outages │
│ │
│ Scalability Debt • Maximum customer size │
│ • Infrastructure cost per user │
│ • Geographic expansion ability │
│ • Performance metrics (load time, etc.) │
│ │
│ Security Debt • Compliance status │
│ • Enterprise sales eligibility │
│ • Insurance costs │
│ • Breach risk exposure │
│ │
│ Knowledge Debt • Onboarding time │
│ • Key person dependency count │
│ • Attrition risk │
│ • M&A readiness │
│ │
└─────────────────────────────────────────────────────────────────────┘
Quantifying Tech Debt
Abstract complaints don't get funding. Numbers do.
Measuring the Tax
THE TECH DEBT TAX:
════════════════════════════════════════════════════════════════════
Track: What percentage of engineering time goes to debt "interest"?
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ENGINEERING TIME ALLOCATION │
│ │
│ "Healthy" codebase: │
│ ████████████████████████████████████░░░░░ ~80% features │
│ ░░░░░░░░░░░░ ~20% maintenance │
│ │
│ Debt-heavy codebase: │
│ █████████████████░░░░░░░░░░░░░░░░░░░░░░░ ~40% features │
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ~60% maintenance │
│ │
│ "Maintenance" includes: │
│ • Bug fixes caused by poor code │
│ • Working around bad architecture │
│ • Dealing with incidents │
│ • Re-doing work done poorly before │
│ • Extra time because code is hard to change │
│ │
└─────────────────────────────────────────────────────────────────┘
TRANSLATION TO DOLLARS:
═══════════════════════════════════════════════════════════════════
If: Team of 10 engineers at $200K/year fully loaded
= $2M/year engineering cost
And: 60% of time is fighting debt instead of 20%
Then: Extra 40% = $800K/year in debt "interest"
That's $800K/year NOT going to features.
That's 4 engineers worth of wasted capacity.
That's your competitor shipping twice as fast.
Concrete Metrics to Track
QUANTIFICATION METHODS:
════════════════════════════════════════════════════════════════════
1. FEATURE DELIVERY TIME
─────────────────────────────────────────────────────────────────
Track how long "similar" features take over time.
Metric: Average story points per sprint (velocity)
Time from start to deploy for medium features
Example data:
"2 years ago, a standard API endpoint took 2 days.
Now it takes 2 weeks because of our authentication
complexity and lack of shared libraries."
Business framing:
"We're delivering features 5x slower than we could be."
2. BUG RATIO
─────────────────────────────────────────────────────────────────
Track bugs created vs. features shipped.
Metric: Bugs introduced per feature shipped
Bug fix time as % of total engineering time
Example data:
"For every 10 features we ship, we create 15 bugs.
Engineering spends 35% of time on bug fixes."
Business framing:
"We're spending $700K/year fixing bugs we create ourselves."
3. INCIDENT COST
─────────────────────────────────────────────────────────────────
Track cost of outages and incidents.
Metric: Incidents per month
Hours spent on incidents
Revenue impact per incident
Example data:
"We had 12 incidents last quarter. Average 4 hours to
resolve, 3 engineers per incident. One caused $50K
in lost revenue. Total: 144 engineer-hours + $50K."
Business framing:
"Our stability debt cost us $150K last quarter."
4. CHANGE FAILURE RATE
─────────────────────────────────────────────────────────────────
Track deployments that cause problems.
Metric: % of deployments requiring rollback or hotfix
Example data:
"30% of our deployments require hotfixes.
Deployment takes 3 hours instead of 30 minutes."
Business framing:
"We can only safely deploy twice a week, limiting
our ability to respond to market."
5. ONBOARDING TIME
─────────────────────────────────────────────────────────────────
Track time for new developers to become productive.
Metric: Months until new hire makes significant contributions
Example data:
"New engineers take 4-6 months to become productive
vs. industry standard of 1-2 months."
Business framing:
"Every hire costs us 4 extra months of ramping,
plus higher attrition from frustration."
The Tech Debt Scorecard
┌─────────────────────────────────────────────────────────────────────┐
│ TECH DEBT SCORECARD (Example) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ METRIC CURRENT TARGET STATUS │
│ ═══════════════════════════════════════════════════════════════ │
│ │
│ VELOCITY │
│ Feature delivery time (median) 21 days 7 days ⚠ 3x slow │
│ Story points per sprint 23 40 ⚠ 57% │
│ Time spent on tech debt work 15% 25% 🔴 Underfunded│
│ │
│ STABILITY │
│ Incidents per month 8 2 🔴 4x target │
│ Mean time to recovery 4 hrs 30 min ⚠ Slow │
│ Deployment frequency 2/week daily ⚠ Limited │
│ Change failure rate 28% 5% 🔴 High │
│ │
│ QUALITY │
│ Bug escape rate 15% 5% ⚠ High │
│ Test coverage 34% 80% 🔴 Low │
│ Bugs per feature shipped 1.8 0.5 🔴 High │
│ │
│ COST │
│ Hours on unplanned work 40% 15% 🔴 High │
│ Onboarding time 5 mo 2 mo ⚠ Slow │
│ Key person dependencies 12 3 🔴 Risky │
│ │
│ ═══════════════════════════════════════════════════════════════ │
│ ESTIMATED ANNUAL COST OF DEBT: $1.2M │
│ (Lost productivity + incident cost + extra bug fixes) │
│ │
└─────────────────────────────────────────────────────────────────────┘
Communicating with Different Stakeholders
Know Your Audience
┌─────────────────────────────────────────────────────────────────────┐
│ STAKEHOLDER COMMUNICATION MAP │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ STAKEHOLDER CARES ABOUT FRAME DEBT AS │
│ ═══════════════════════════════════════════════════════════════ │
│ │
│ CEO/ Growth, competition, "Our velocity is declining. │
│ Founders market position Competitors ship faster. │
│ This limits our growth." │
│ │
│ CFO Costs, efficiency, "Engineering efficiency is │
│ ROI at 50%. We're losing $800K/ │
│ year to code quality." │
│ │
│ CPO/ Features, roadmap, "Current architecture limits │
│ Product user value what features we can build. │
│ Feature X will take 6 │
│ months vs. 6 weeks." │
│ │
│ VP Eng/ Team health, hiring, "Attrition risk is high. │
│ CTO delivery, tech Engineers are frustrated. │
│ direction We can't attract talent." │
│ │
│ PM Sprint delivery, "This feature will take 3x │
│ hitting dates longer because of X. We can │
│ go faster with investment." │
│ │
│ Sales Closing deals, "We can't pass security │
│ handling objections audit. We can't scale to │
│ enterprise requirements." │
│ │
│ Board Growth metrics, "Technical foundation │
│ risk management limits scalability. Risk │
│ of significant outage." │
│ │
└─────────────────────────────────────────────────────────────────────┘
Tailored Conversations
TO THE CEO:
════════════════════════════════════════════════════════════════════
Don't say:
"Our codebase has a lot of technical debt from years of shortcuts."
Say:
"We're shipping features at half the rate we could be. Our
competitors are moving faster. The root cause is decisions we
made to ship quickly two years ago—the right call then, but now
those shortcuts are costing us about 40% of our engineering
capacity. I have a plan to recover that velocity over 6 months
while continuing to ship features."
Key elements:
• Business impact (velocity, competition)
• Acknowledgment that past decisions made sense
• Concrete timeline and plan
• Not asking to stop shipping
TO THE CFO:
════════════════════════════════════════════════════════════════════
Don't say:
"We need to spend engineering time on tech debt."
Say:
"Right now, we're getting about 50 cents of feature value per
engineering dollar. That's because 50% of engineering time goes
to fighting our own code—bugs, workarounds, slow changes. With
a $100K investment over 6 months, we can get that ratio to 75
cents per dollar. That's effectively adding 2 engineers of
capacity without adding headcount."
Key elements:
• ROI framing
• Cost of status quo
• Specific investment ask
• Measurable outcome
TO THE PM:
════════════════════════════════════════════════════════════════════
Don't say:
"We should spend the sprint on tech debt instead of features."
Say:
"That feature you want will take 3 weeks right now because of
how the user service is built. If we spend 1 week fixing the
underlying issue first, this feature takes 1 week, and the next
3 features in this area also get faster. Net result: we ship
more this quarter, not less."
Key elements:
• Specific feature impact
• Trade-off math (invest 1 week, save 4 weeks)
• Outcome is more features, not fewer
TO THE BOARD:
════════════════════════════════════════════════════════════════════
Don't say:
"We have significant technical debt."
Say:
"We have a scalability constraint that limits our growth beyond
current levels. To onboard enterprise customers or expand to
new markets, we need to address architectural limitations. I
recommend allocating 20% of engineering to platform investment
this year. This protects our growth trajectory and reduces risk
of significant outages. Here's the specific plan and timeline."
Key elements:
• Risk framing
• Growth constraint
• Specific allocation ask
• Clear plan
Building the Business Case
The Tech Debt Business Case Template
┌─────────────────────────────────────────────────────────────────────┐
│ TECH DEBT INVESTMENT PROPOSAL │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ EXECUTIVE SUMMARY │
│ ───────────────────────────────────────────────────────────────── │
│ We're proposing to invest [X%] of engineering capacity over │
│ [Y months] to address technical foundations that are limiting │
│ our velocity and increasing risk. Expected ROI: [Z%] increase │
│ in feature delivery capacity. │
│ │
│ PROBLEM STATEMENT │
│ ───────────────────────────────────────────────────────────────── │
│ [Specific business impact, with metrics] │
│ │
│ Example: │
│ "Engineering velocity has declined 35% over 18 months. │
│ Features that took 1 week now take 2+ weeks. We've had 8 │
│ production incidents in the last quarter, costing $200K in │
│ lost revenue and requiring 300+ engineer-hours to resolve." │
│ │
│ COST OF INACTION │
│ ───────────────────────────────────────────────────────────────── │
│ [What happens if we do nothing] │
│ │
│ Example: │
│ "Without investment: │
│ • Velocity continues to decline (~10%/quarter) │
│ • Incident rate expected to double │
│ • Key engineer attrition risk │
│ • Unable to meet enterprise scalability requirements │
│ • Estimated annual cost: $1.2M" │
│ │
│ PROPOSED INVESTMENT │
│ ───────────────────────────────────────────────────────────────── │
│ [Specific ask with timeline] │
│ │
│ Example: │
│ "Dedicate 25% of engineering (2 engineers) for 6 months: │
│ • Months 1-2: Core service refactoring │
│ • Months 3-4: Test coverage and CI/CD improvements │
│ • Months 5-6: Monitoring and incident prevention │
│ Investment: ~$200K (loaded engineering cost)" │
│ │
│ EXPECTED OUTCOMES │
│ ───────────────────────────────────────────────────────────────── │
│ [Measurable results] │
│ │
│ Example: │
│ "After 6 months: │
│ • Feature delivery time: -40% (3 weeks → 2 weeks) │
│ • Incidents: -60% (8 → 3 per quarter) │
│ • Deployment frequency: 2x (weekly → twice weekly) │
│ • Engineer satisfaction: measurably improved │
│ Equivalent to adding 2 engineers of capacity." │
│ │
│ ROI CALCULATION │
│ ───────────────────────────────────────────────────────────────── │
│ Investment: $200K │
│ Annual savings: $500K (velocity gain + reduced incidents) │
│ Payback period: 5 months │
│ 3-year NPV: $1.2M │
│ │
│ RISK OF INVESTMENT │
│ ───────────────────────────────────────────────────────────────── │
│ "Primary risk: Feature delivery slows during investment │
│ Mitigation: Incremental approach, continue shipping priority │
│ features in parallel" │
│ │
│ ALTERNATIVES CONSIDERED │
│ ───────────────────────────────────────────────────────────────── │
│ 1. Do nothing: Not recommended (see cost of inaction) │
│ 2. Larger investment: Faster results but higher feature impact │
│ 3. Hire more: Doesn't solve root cause, higher long-term cost │
│ │
│ RECOMMENDATION │
│ ───────────────────────────────────────────────────────────────── │
│ Approve proposed investment. Begin Month 1. Review at Month 3. │
│ │
└─────────────────────────────────────────────────────────────────────┘
Making It Concrete
BEFORE: VAGUE ASK
════════════════════════════════════════════════════════════════════
"We need to spend time on tech debt. Maybe 20% of each sprint?
It would help with velocity and stability. Trust us."
Response: "Maybe next quarter when things slow down."
AFTER: CONCRETE PROPOSAL
════════════════════════════════════════════════════════════════════
"I'm proposing we dedicate 2 engineers full-time for 6 months to
address our core services architecture.
Here's why:
• Our median feature delivery time has increased from 5 days to
15 days over the past year (I have the Jira data)
• We had 8 production incidents last quarter costing ~$200K in
lost revenue and 300 engineer-hours
• Three engineers have cited code quality in exit interviews
Here's what we'll do:
• Month 1-2: Refactor user service (root cause of 5 incidents)
• Month 3-4: Add integration tests (reduce change failure rate)
• Month 5-6: Implement monitoring (reduce time-to-detection)
Here's what we'll measure:
• Feature delivery time: Target 50% reduction
• Incidents per quarter: Target 60% reduction
• Engineer satisfaction: Target 20-point improvement
Here's the trade-off:
• 2 fewer engineers on features for 6 months
• We'll prioritize remaining feature work carefully
• After 6 months, we'll effectively have 2 MORE engineers of
capacity due to velocity improvements
I'd like your approval to start next month. I'll report progress
monthly and we can adjust at Month 3 if needed."
Response: "Let's discuss the specifics and find the right timing."
Getting Work Into the Roadmap
Strategies That Work
STRATEGY 1: THE CONTINUOUS TAX
════════════════════════════════════════════════════════════════════
What: Dedicate fixed percentage of each sprint to tech debt
Example: 20% of every sprint is "platform health"
When: Always, as ongoing investment
Pros:
• Sustainable, not a big ask
• Prevents debt accumulation
• Becomes normal part of planning
Cons:
• May be too slow for big problems
• Can be first thing cut under pressure
How to pitch:
"Just like we maintain our office and equipment, we need to
maintain our code. 20% continuous investment prevents the need
for expensive emergency rewrites. This isn't optional work—it's
the cost of sustainable operation."
STRATEGY 2: THE BUNDLED APPROACH
════════════════════════════════════════════════════════════════════
What: Attach debt work to feature work
Example: "To build Feature X, we need to fix Y first"
When: When debt blocks specific features
Pros:
• Clear connection to value
• Gets approval more easily
• Done in context
Cons:
• Only addresses blocking debt
• Can inflate estimates suspiciously
How to pitch:
"This feature requires touching the payment system. The current
payment code is fragile. I recommend we include a stabilization
phase in the feature work. It adds a week but prevents the 3-week
incident we'd likely have otherwise."
STRATEGY 3: THE DEDICATED SPRINT
════════════════════════════════════════════════════════════════════
What: Full sprint focused on tech debt
Example: "Hardening Sprint" once per quarter
When: When accumulated debt needs focused attention
Pros:
• Concentrated progress
• Visible commitment
• Team morale boost
Cons:
• Visible feature pause
• Can be cut under pressure
• Doesn't prevent accumulation
How to pitch:
"Once per quarter, we do a hardening sprint. This is when we
pay down accumulated debt, address security patches, and improve
developer experience. It's one sprint that makes the other 5
sprints more productive."
STRATEGY 4: THE BIG BET
════════════════════════════════════════════════════════════════════
What: Major project to address significant debt
Example: "Platform Modernization" initiative
When: When debt is so severe it requires focused investment
Pros:
• Can address big problems
• Gets executive attention
• Proper resourcing
Cons:
• Hard to get approved
• Visible feature impact
• High expectations
How to pitch:
Use the full business case template. This is a major investment
that requires executive buy-in. Frame as strategic initiative,
not maintenance.
STRATEGY 5: THE PARALLEL TRACK
════════════════════════════════════════════════════════════════════
What: Dedicated team or person for platform health
Example: "Platform team" or "DX team"
When: At scale, when continuous investment is needed
Pros:
• Clear ownership
• Sustained focus
• Career path for engineers
Cons:
• Can become disconnected
• Cost of dedicated team
• "Throw it over the wall" risk
How to pitch:
"As we scale, we need dedicated investment in our platform.
A small team focused on developer experience, infrastructure,
and system health. They don't build features—they make feature
building faster for everyone else."
Negotiation Tactics
┌─────────────────────────────────────────────────────────────────────┐
│ NEGOTIATING TECH DEBT WORK │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ WHEN THEY SAY: "We can't slow down on features" │
│ ───────────────────────────────────────────────────────────────── │
│ You say: "We're already slow. This investment makes us faster. │
│ Doing nothing means we keep getting slower. In 6 months, we │
│ either have this problem fixed, or we have a bigger problem." │
│ │
│ WHEN THEY SAY: "Maybe next quarter" │
│ ───────────────────────────────────────────────────────────────── │
│ You say: "Every quarter we wait, the cost increases. What we │
│ can fix in 6 weeks now will take 12 weeks in 6 months. Here's │
│ the minimum we could start with this quarter: [smaller ask]." │
│ │
│ WHEN THEY SAY: "How do we know it's really that bad?" │
│ ───────────────────────────────────────────────────────────────── │
│ You say: "Here's the data: [velocity trends, incident counts, │
│ bug rates]. I can do a more detailed assessment if helpful, │
│ but the trends are clear." │
│ │
│ WHEN THEY SAY: "Just hire more engineers" │
│ ───────────────────────────────────────────────────────────────── │
│ You say: "New engineers take 4-6 months to ramp up on our │
│ codebase because of the complexity. Adding people will actually │
│ slow us down short-term. We need to fix the foundation first." │
│ │
│ WHEN THEY SAY: "Can the team just work on it when they have time"│
│ ───────────────────────────────────────────────────────────────── │
│ You say: "That's been our approach. It's not working—we never │
│ have time because urgent always beats important. This needs │
│ dedicated, protected time." │
│ │
│ WHEN THEY SAY: "We'll rewrite it eventually anyway" │
│ ───────────────────────────────────────────────────────────────── │
│ You say: "The rewrite is 18+ months away. Meanwhile, we're │
│ paying $800K/year in debt tax. Targeted investment now reduces │
│ that cost and makes the eventual rewrite smaller." │
│ │
└─────────────────────────────────────────────────────────────────────┘
Preventing Future Debt
The best debt is the debt you don't take on.
Making Debt Visible at Decision Time
WHEN SHORTCUTS ARE PROPOSED:
════════════════════════════════════════════════════════════════════
Instead of: "Let's just do it the fast way"
Require: "Let's document the debt we're taking on"
┌─────────────────────────────────────────────────────────────────┐
│ TECHNICAL DEBT ACKNOWLEDGMENT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Decision: Skip authentication refactoring for Q4 launch │
│ Date: 2024-01-15 │
│ Deciders: PM Alice, Tech Lead Bob, VP Carol │
│ │
│ Time Saved: 3 weeks │
│ │
│ Debt Created: │
│ • Auth code remains complex (~40% of bugs in this area) │
│ • Adding new auth methods will take 3x longer │
│ • Security audit findings remain unaddressed │
│ │
│ Estimated Future Cost: 6 weeks to fix properly │
│ Recommended Payback: Q1 2024 │
│ │
│ Signed: [All parties acknowledge this tradeoff] │
│ │
└─────────────────────────────────────────────────────────────────┘
This makes debt a conscious business decision, not an engineering
accident. Stakeholders own the decision, not just engineers.
Debt Prevention Practices
┌─────────────────────────────────────────────────────────────────────┐
│ PRACTICES THAT PREVENT DEBT │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ DESIGN REVIEWS │
│ ───────────────────────────────────────────────────────────────── │
│ Catch bad architecture before it's built. │
│ "An hour of review saves a month of refactoring." │
│ │
│ CODE REVIEW STANDARDS │
│ ───────────────────────────────────────────────────────────────── │
│ Don't approve code that creates debt. │
│ "This works, but it's going to cause problems. Let's fix now." │
│ │
│ DEFINITION OF DONE │
│ ───────────────────────────────────────────────────────────────── │
│ Include quality criteria in "done." │
│ Tests, docs, monitoring—not "extra," but required. │
│ │
│ TIME BUFFERS │
│ ───────────────────────────────────────────────────────────────── │
│ Don't schedule to 100% capacity. │
│ Leave room for doing things right. │
│ │
│ BLAMELESS CULTURE │
│ ───────────────────────────────────────────────────────────────── │
│ Make it safe to surface problems. │
│ "I found tech debt" should be welcomed, not punished. │
│ │
│ REGULAR REVIEWS │
│ ───────────────────────────────────────────────────────────────── │
│ Quarterly architecture review. │
│ Monthly tech debt inventory. │
│ "How are we doing?" not just "What are we shipping?" │
│ │
│ OWNERSHIP │
│ ───────────────────────────────────────────────────────────────── │
│ Clear ownership of code areas. │
│ Owners empowered to maintain quality. │
│ │
│ ENGINEERING LEADERSHIP SUPPORT │
│ ───────────────────────────────────────────────────────────────── │
│ Leaders visibly prioritize quality. │
│ "We don't ship crap" is a stated value. │
│ │
└─────────────────────────────────────────────────────────────────────┘
Tracking and Reporting
Tech Debt Dashboard
┌─────────────────────────────────────────────────────────────────────┐
│ TECH DEBT DASHBOARD (Monthly Report) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ OVERALL HEALTH SCORE: 62/100 │
│ Trend: ↑ 5 points from last month │
│ │
│ ═══════════════════════════════════════════════════════════════ │
│ │
│ VELOCITY METRICS TREND │
│ ───────────────────────────────────────────────────────────────── │
│ Avg feature delivery time 18 days ↓ 2 days (better) │
│ Sprint velocity 27 points ↑ 3 points (better) │
│ Time on unplanned work 38% ↓ 5% (better) │
│ │
│ STABILITY METRICS TREND │
│ ───────────────────────────────────────────────────────────────── │
│ Incidents this month 6 ↓ 2 (better) │
│ Change failure rate 25% ↓ 3% (better) │
│ MTTR 3.2 hrs ↑ 0.5 hrs (worse) │
│ │
│ QUALITY METRICS TREND │
│ ───────────────────────────────────────────────────────────────── │
│ Bug escape rate 12% ↓ 2% (better) │
│ Test coverage 42% ↑ 4% (better) │
│ Dependency currency 67% ↑ 5% (better) │
│ │
│ ═══════════════════════════════════════════════════════════════ │
│ │
│ DEBT WORK COMPLETED │
│ ───────────────────────────────────────────────────────────────── │
│ • Migrated user service to new auth (was: top incident cause) │
│ • Added monitoring to payment flow (60% of incidents now have │
│ alerts before customer impact) │
│ • Updated 12 critical dependencies │
│ │
│ DEBT WORK PLANNED (Next Month) │
│ ───────────────────────────────────────────────────────────────── │
│ • Database query optimization (target: 50% latency reduction) │
│ • API error handling standardization │
│ • Test coverage for checkout flow │
│ │
│ KEY RISKS │
│ ───────────────────────────────────────────────────────────────── │
│ • Legacy billing system: Single point of failure │
│ • Analytics pipeline: 6 months behind on security patches │
│ • Mobile API: No test coverage, every change is risky │
│ │
└─────────────────────────────────────────────────────────────────────┘
Reporting Cadence
TECH DEBT REPORTING RHYTHM:
════════════════════════════════════════════════════════════════════
WEEKLY (Team level):
─────────────────────
• What debt work was done?
• What new debt was introduced (consciously)?
• Any emerging concerns?
Audience: Team lead, team
Format: Brief standup mention or async update
MONTHLY (Department level):
───────────────────────────
• Tech debt dashboard review
• Progress on planned debt work
• Updated risk assessment
• Proposed focus for next month
Audience: Engineering leadership, PMs
Format: Written report + brief meeting
QUARTERLY (Executive level):
────────────────────────────
• Health score trends
• ROI on debt investments
• Major risks and mitigations
• Investment asks for next quarter
Audience: Executive team, possibly board
Format: Executive summary + presentation
ANNUALLY (Strategic):
─────────────────────
• Full architecture review
• Multi-year tech strategy
• Major platform investments
• Competitive technology position
Audience: Executive team, board
Format: Strategic planning document
Common Scenarios
"We Don't Have Time for Tech Debt"
THE SITUATION:
════════════════════════════════════════════════════════════════════
PM: "We're behind on the roadmap. We can't afford to spend time
on tech debt right now."
THE REFRAME:
════════════════════════════════════════════════════════════════════
You: "I understand the pressure. Let me show you something:
Last quarter, we planned 40 story points per sprint.
We delivered 26 on average.
Where did the other 14 go? Here's the breakdown:
• 6 points: Bug fixes from previous releases
• 4 points: Working around broken test suite
• 4 points: Incidents and emergency fixes
That's 14 points of 'tech debt tax' every sprint.
I'm not proposing we stop shipping features. I'm proposing
we spend 6 points per sprint fixing the root causes. In 3
months, we'll be delivering 35 points instead of 26.
What would you do with 9 extra points per sprint?"
KEY MOVES:
─────────────────────────────────────────────────────────────────
1. Acknowledge the pressure (don't dismiss their concern)
2. Show the data (velocity loss is already happening)
3. Quantify the cost (14 points/sprint = X features/quarter)
4. Propose investment, not stoppage
5. Paint the better future
"The Engineers Just Want to Play with Code"
THE SITUATION:
════════════════════════════════════════════════════════════════════
Stakeholder: "I feel like the engineers just want to refactor
things instead of building what customers need."
THE REFRAME:
════════════════════════════════════════════════════════════════════
You: "I hear that concern. Let me be direct: sometimes that's
true, and it's my job to filter it out. Not every cleanup
is worth doing.
But here's what I'm seeing that IS worth doing:
The checkout flow crashes 3% of the time. That's 300 lost
orders per month. The fix requires touching old code that
nobody wants to touch because it's fragile. Every attempt
makes it worse.
This isn't about clean code—it's about losing customers.
A focused 2-week investment will reduce those crashes to
near zero and make future checkout improvements possible.
I'm not proposing we chase theoretical purity. I'm proposing
we fix things that are costing us money."
KEY MOVES:
─────────────────────────────────────────────────────────────────
1. Acknowledge the concern is sometimes valid
2. Differentiate: this isn't that
3. Connect to business impact (lost orders, not clean code)
4. Specific, bounded proposal
5. Frame as investment, not indulgence
"We'll Fix It After the Launch"
THE SITUATION:
════════════════════════════════════════════════════════════════════
PM: "Let's just get it shipped. We'll fix the tech debt after
the launch."
THE REFRAME:
════════════════════════════════════════════════════════════════════
You: "I've heard that before—we all have. Here's the pattern:
Launch happens → we move to next launch → debt gets worse
→ we say 'after next launch' → repeat
I'm okay shipping with some debt IF:
1. We document exactly what debt we're taking on
2. We both sign off on the future cost
3. We schedule the payback work NOW, not 'later'
Here's my assessment: shipping this way creates 3 weeks of
future work. I propose we schedule that work for Sprint 14.
If we do that, I'm fine shipping the shortcut version now.
But if we're just saying 'later' as a way to never do it,
I need you to know: this will be 6 weeks of work by Q3,
and we'll have had 2-3 incidents related to it by then.
Your call—but let's make it a real decision, not a vague
promise."
KEY MOVES:
─────────────────────────────────────────────────────────────────
1. Acknowledge the pattern (don't pretend it's new)
2. Offer a conditional yes
3. Make the future cost explicit
4. Require commitment, not just promise
5. Escalate the stakes if needed
Quick Reference
┌─────────────────────────────────────────────────────────────────────┐
│ TECH DEBT COMMUNICATION CHEAT SHEET │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ FRAMING │
│ ───────────────────────────────────────────────────────────────── │
│ DON'T SAY SAY INSTEAD │
│ "Tech debt" "Development tax" / "Velocity drag" │
│ "The code is messy" "Changes take 3x longer than they should" │
│ "We need to refactor" "We need to reduce cost of future work" │
│ "Quality is suffering" "We're losing X customers/dollars to Y" │
│ │
│ STAKEHOLDER PRIORITIES │
│ ───────────────────────────────────────────────────────────────── │
│ CEO: Growth, market position, competition │
│ CFO: Costs, efficiency, ROI │
│ CPO: Features, user value, roadmap │
│ CTO: Team health, delivery, tech direction │
│ PM: Sprint delivery, hitting dates │
│ │
│ METRICS THAT RESONATE │
│ ───────────────────────────────────────────────────────────────── │
│ • Feature delivery time (days/weeks) │
│ • Sprint velocity trend │
│ • Incident count and cost │
│ • Bug fix time as % of total │
│ • Onboarding time for new hires │
│ │
│ THE BUSINESS CASE STRUCTURE │
│ ───────────────────────────────────────────────────────────────── │
│ 1. Cost of status quo (with numbers) │
│ 2. Proposed investment (specific, bounded) │
│ 3. Expected return (measurable) │
│ 4. Timeline and milestones │
│ 5. Risks and mitigations │
│ │
│ OBJECTION HANDLERS │
│ ───────────────────────────────────────────────────────────────── │
│ "No time" → "We're already slow; this makes us faster" │
│ "Later" → "Every month costs $X more; schedule it now" │
│ "Hire more" → "New people can't be productive in this mess" │
│ "Prove it" → [Show velocity trends, incident data, bugs] │
│ │
│ PREVENTION │
│ ───────────────────────────────────────────────────────────────── │
│ • Document debt when taken (make it a decision) │
│ • Include quality in Definition of Done │
│ • Reserve 15-20% for continuous maintenance │
│ • Quarterly architecture reviews │
│ │
└─────────────────────────────────────────────────────────────────────┘
Conclusion
Tech debt isn't an engineering problem. It's a business decision made over time—sometimes consciously, sometimes not—that has compounding business consequences.
When you frame it this way, the conversation changes:
Old conversation: "Can we have time for tech debt?" "No, we need features."
New conversation: "We're paying $800K/year in reduced velocity. A $200K investment would cut that by half. Here's the data and the plan." "Let's look at the specifics."
The goal isn't to win arguments. It's to make tech debt visible as what it is: a product decision with quantifiable costs and benefits, owned by the business, not just engineering.
Your job is to make the invisible visible, translate engineering reality into business language, and ensure that debt decisions are made consciously—not by default.
Because every day you don't address tech debt, you're making a decision too. Make sure it's the right one.
What did you think?