42% of our week goes to tech debt, yet we treat it like optional cleanup. When does this math stop making sense?

I just pulled our team’s Jira data for Q1, and I’m staring at a number that doesn’t make sense: 42% of our development time went to fighting existing code. Bug fixes, workarounds, patching brittle systems, debugging mysterious failures.

We’re not lazy. We’re not incompetent. We’re just… stuck.

The Stripe Reality Check

Turns out we’re not alone. Stripe’s Developer Coefficient report found that developers spend 42% of every working week dealing with technical debt and bad code. That’s nearly $85 billion in global opportunity cost lost annually.

Think about that math: we’re already paying for technical debt. It’s consuming half our capacity right now. Yet when I propose dedicating 15% of sprint time to refactoring, product treats it like I’m asking for optional cleanup time.

The Paradox

Here’s what bothers me: we call it “tech debt” like it’s future work, but the data shows it’s current work. We’re not deferring the cost—we’re paying interest every single day in slower velocity, harder debugging, and features that take 3x longer than they should.

And here’s the kicker: research shows that 67% of organizations with structured tech debt management report measurable competitive gains. So the teams that treat this seriously are winning, and the rest of us are… well, spending 42% of our time in legacy hell.

Martin Fowler Was Right

I revisited Martin Fowler’s work on scaling bottlenecks, and one line hit hard:

“Technical debt is the #1 impediment to growth for startups in hypergrowth.”

The problem isn’t the initial shortcuts—those are often smart during the validation phase. The problem is failing to go back and address them when context changes. We validated product-market fit 18 months ago. Our team grew from 5 to 18 engineers. But our architecture is still optimized for “move fast and ship.”

Now “move fast” means “move through quicksand.”

The Questions I’m Wrestling With

1. How do you actually prioritize debt work vs new features?

Do you use ROI calculations? Velocity metrics? Customer impact? Or do you just fight about it every planning meeting?

2. Is 15% dedicated refactoring time realistic?

The 2026 IEEE best practices guide recommends teams allocate at least 15% of development time to refactoring and debt reduction. That sounds reasonable on paper. But when leadership is asking for the next feature yesterday, how do you defend that 15%?

3. What metrics actually matter?

I’ve seen teams track code complexity, test coverage, technical debt ratio, MTTR, defect density. Which ones actually predict problems before they explode?

4. How do you get non-technical stakeholders to care?

I can show velocity charts until I’m blue in the face, but “we need to refactor the payment service” doesn’t land the same way as “we’re launching subscriptions.”

What I’m NOT Looking For

  • “Just convince them it’s important” (thanks, tried that)
  • “Rewrite everything” (we don’t have 2 years)
  • “Tech debt is inevitable, deal with it” (I am dealing with it—at 42% of my week)

What I AM Looking For

  • Frameworks for making debt work compete on merit, not guilt
  • Stories from teams who actually carved out sustainable refactoring time
  • Metrics that convinced leadership to invest in paying down debt
  • Practical approaches to balancing innovation with sustainability

Because right now, we’re innovating at 58% capacity, and that math only gets worse.

What’s working for your team?

This hits close to home. I pulled the same numbers at my org six months ago and found we were at 44% technical debt work. Not 44% of engineering time—44% of our entire R&D budget going to fighting yesterday’s code.

When I showed that to our CFO, the conversation changed from “why does engineering need more time” to “why are we getting 56 cents on the dollar from our engineering investment?”

Tech Debt Is a Business Problem, Not Just an Engineering Complaint

Here’s the reframe that got executive buy-in: technical debt is not a code quality issue, it’s a capital allocation problem.

We’re spending $3.2M annually on work that delivers zero customer value. That’s not a development practice problem. That’s a business strategy problem.

I started tracking what we call “opportunity cost per delayed feature”—when a simple integration takes 6 weeks instead of 2 because our API is brittle, what revenue are we losing? For us, it was a fintech case similar to the $2.5M annual example where delays cost real money.

The Framework: Tech Debt Competes on ROI, Not Guilt

You asked for frameworks. Here’s what works for us:

Every debt initiative has to answer:

  1. What feature velocity does this unblock? (measured in story points or cycle time)
  2. What incident frequency does this reduce? (measured in MTTR and on-call hours)
  3. What hiring/onboarding does this accelerate? (new engineer time-to-first-commit)

We don’t make engineers justify refactoring with guilt (“our code is bad”). We make debt work compete on business impact just like features.

Example: Refactoring our authentication service:

  • Projected to reduce login-related incidents by 60% (saving 8 on-call hours/week)
  • Unblocks SSO integration (enterprise sales blocker affecting $1.2M pipeline)
  • Reduces onboarding time for new backend engineers by 5 days

That’s not “cleanup.” That’s a business investment with measurable ROI.

Metrics That Actually Convinced Leadership

The metrics that moved the needle for us:

  1. Technical Debt Ratio (TDR) - remediation cost / development cost. We track this quarterly.
  2. Velocity degradation - compare story points delivered in old vs new code. Our legacy modules were 3x slower.
  3. Time-to-first-deploy for new engineers - this one was shocking. New hires in our modern services: 3 days. In legacy: 14 days.
  4. Defect density - bugs per KLOC in debt-heavy vs refactored code.

We also started using GitHub’s Debt Insights (2026 AI feature) to predict long-term costs. It surfaced that our payment service would hit critical failure within 9 months without intervention. That got attention.

The 15% Question: Yes, But Make It Non-Negotiable

You asked if 15% is realistic. Here’s the hard truth: it’s only realistic if you stop asking for permission.

We don’t negotiate the 15%. Just like we don’t negotiate security reviews or QA time. It’s built into capacity planning. Product doesn’t get to decide whether we pay down debt—they get to decide which debt we prioritize based on ROI.

Our model:

  • Sprint planning starts with 15% capacity reserved for tech health (debt + tooling + process improvements)
  • Engineering brings 3-5 ROI-ranked debt initiatives
  • Product picks which ones unlock their roadmap
  • Everyone understands: we’re delivering at 85% capacity for features, 100% capacity for sustainable delivery

The shift happened when our VP Product realized that sustainable 85% beats unsustainable 100%. You can’t sprint forever.

Align Refactoring with Business Domains, Not Wholesale Rewrites

Last piece of advice: don’t ask to “refactor everything.” That’s a 2-year project nobody will approve.

Instead, align debt work with business initiatives. When product wants to add subscription billing, that’s when you refactor the payment service. When they want mobile app parity, that’s when you API-ify the monolith.

Debt work becomes the foundation for features, not a competitor to features.

The Measure It or Manage It Challenge

You can’t manage what you can’t measure. If your technical debt is a vague feeling of “our code is messy,” you’ll never get buy-in.

But if you can say “our authentication service costs us 8 on-call hours per week and blocks our enterprise sales pipeline,” that’s a conversation leadership understands.

What metrics are you currently tracking? And more importantly, what business outcomes can you tie them to?

Michelle’s ROI framework is exactly right. Let me add the team management and cultural side of this, because even with perfect metrics, you still have to execute.

I learned this the hard way in financial services where regulatory compliance forced us to get serious about tech debt. When your auditors flag system instability as a compliance risk, suddenly tech debt becomes a board-level conversation.

The 15% Allocation Model: How We Actually Implemented It

You asked if 15% is realistic. Here’s our model that’s worked for 18 months:

We run “tech health sprints” every 4th sprint. That works out to roughly 15-17% of total time depending on sprint length.

  • Sprints 1-3: Standard feature work with bug fixes
  • Sprint 4: 100% tech health (debt, tooling, documentation, automation, testing infrastructure)

The key insight: batching the 15% makes it defensible. When it’s spread across every sprint, product will chip away at it (“can we just do 10% this sprint?”). When it’s a dedicated sprint, it’s non-negotiable.

The Product Manager Challenge

Here’s the conversation I had with our VP Product that changed everything:

Me: “We need Sprint 4 for tech health.”
Her: “Can we push it to next quarter? We have critical features.”
Me: “Last quarter we skipped tech health. Know what happened? The ‘critical feature’ took 8 weeks instead of 4 because our API integration broke three times. We lost 4 weeks fighting tech debt we should’ve fixed in Sprint 4.”
Her: “…point taken.”

The framing that worked: Tech health isn’t overhead, it’s the foundation that makes feature sprints actually deliver on time.

We started tracking “planned velocity vs actual velocity” for sprints that followed skipped tech health sprints. The data was ugly: 30-40% velocity degradation when we deferred debt work.

Now our product team protects Sprint 4 as aggressively as we do.

Martin Fowler’s Bottleneck Research: The Hypergrowth Context Shift

You referenced Martin Fowler’s work, and it’s essential to understand the context change piece:

“Technical debt isn’t necessarily due to bad work, but more due to the change of context that rapid growth imposes.”

Our startup shortcuts were correct decisions when we had 8 engineers and were validating product-market fit. The problem was not revisiting those decisions when we hit 35 engineers and enterprise contracts.

Example from our legacy: We hardcoded configuration because we had one deployment. Smart at the time. When we needed multi-region for compliance, that “smart shortcut” became a 6-week migration project that blocked customer contracts.

The debt wasn’t the initial decision—it was failing to pay it down when context changed.

Real Story: The Migration That Kept Getting Delayed

Let me share a painful one. We had a database migration that everyone knew we needed. Old schema, performance issues, blocking new features. Estimated at 3 weeks.

We deferred it for 9 months.

Know what happened? That “3-week project” eventually took 12 weeks of feature work because:

  • Performance degraded so badly we had customer escalations
  • Two senior engineers spent 4 weeks firefighting instead of building
  • New feature that would’ve taken 2 weeks took 8 because of schema constraints
  • We lost a major sales deal because we couldn’t demo the feature on time

Total cost: 12 weeks of delivery time, one blown sales opportunity, two burned-out engineers, and customer trust damage.

If we’d just done the 3-week migration in Sprint 4, we’d have saved 9 weeks and shipped the feature on schedule.

That’s when “tech health sprints” became non-negotiable.

The Metrics We Track

Beyond Michelle’s excellent list, we also track:

  1. Mean Time to Resolve (MTTR) - how long does it take to fix production issues? Debt-heavy services: 8 hours average. Refactored services: 45 minutes.

  2. Defect density - bugs per 1000 lines in different modules. Our legacy monolith: 12 defects/KLOC. Our new microservices: 2 defects/KLOC.

  3. Onboarding velocity - time for new engineers to ship their first feature. This one convinced our Head of People to support tech health sprints because recruiting costs are real.

  4. Change failure rate - what % of deployments cause incidents? Legacy code: 18%. Modern code: 3%.

These aren’t abstract engineering metrics—they’re business impact metrics that leadership understands.

Making Debt Visible in Roadmap Planning

This is critical: tech debt can’t be invisible maintenance work. It has to be in the roadmap alongside features.

Our quarterly planning now looks like:

  • Q1 OKRs: 4 product initiatives, 1 tech health initiative (API consolidation)
  • Q2 OKRs: 3 product initiatives, 1 tech health initiative (observability upgrade)
  • Q3 OKRs: 5 product initiatives, 1 tech health initiative (test automation)

Tech health competes for priority just like features. Some quarters it wins (when debt is critical), some quarters it’s lighter (when we’re in good shape).

The key: it’s always there. It’s not something we “fit in” or “get to eventually.” It’s planned, prioritized, and protected.

The Cultural Shift: From Reactive Firefighting to Proactive Investment

The biggest change wasn’t the mechanics—it was the mindset shift from:

Before: “We’ll fix that after we ship.”
After: “We’ll ship that after we fix the foundation.”

It sounds simple, but it required leadership alignment from CEO down. Once everyone understood that sustainable 85% beats burnout 100%, the culture changed.

Now when someone proposes skipping Sprint 4, the response isn’t “engineering is being difficult.” It’s “remember Q2 when we skipped tech health and lost 6 weeks on the feature anyway?”

Question for Alex and Others

What does your sprint structure look like right now? Are you trying to squeeze debt work into feature sprints, or do you have dedicated time?

And for product folks: what would it take for you to protect 15% of sprint capacity for engineering health if you could see the velocity data?

This conversation is hitting me hard. My startup failed partly because we never addressed tech debt, and I’m watching it play out in slow motion reading these posts.

The Startup That Couldn’t Pivot

We were a B2B SaaS tool for design teams. Early days, we moved fast—shipped our MVP in 3 months, got our first 50 customers, raised seed funding. Everything felt like momentum.

Then we needed to pivot. Customer feedback said we’d built the wrong feature set. No problem, right? Startups pivot all the time.

Except our architecture couldn’t support it.

Our database schema was hardcoded around our original feature set. Our API was tightly coupled to the UI. We had zero abstraction layers because “we’ll add that later when we need it.”

Later arrived. We needed it. It would take 4 months to refactor enough to build the pivot features.

We didn’t have 4 months. We had 7 months of runway and needed to show traction. So we tried to ship the new features on top of the brittle foundation.

The Velocity Death Spiral

Here’s what happened to our sprint velocity:

  • Month 1-3 (MVP phase): 45 story points/sprint, felt unstoppable
  • Month 6-9 (first customers): 35 story points/sprint, some slowdown but manageable
  • Month 12-15 (growth phase): 22 story points/sprint, constant firefighting
  • Month 18-20 (pivot attempt): 12 story points/sprint, mostly debugging

We didn’t hire slower people. We didn’t get dumber. The code fought us at every turn.

What Alex described—42% of time on tech debt—we were probably at 70% by the end. Every new feature broke three old ones. Every bug fix created two new bugs.

The Breaking Point: We Couldn’t Ship the Features That Would Save Us

Our last big opportunity: a potential enterprise customer who would’ve extended our runway by 8 months. They needed SSO and role-based permissions.

We estimated 3 weeks. It took 11 weeks. By the time we delivered, they’d signed with a competitor.

Why did it take 11 weeks? Because our authentication was tangled with our session management, which was tangled with our data access layer, which was tangled with our UI state.

We’d skipped “boring” architectural work to ship features fast. Now that “fast” code was making us impossibly slow.

The Lesson: Tech Debt Is Like Financial Debt

Looking back, I think about tech debt the same way as financial debt now:

Some debt is healthy—it lets you move fast early when you’re validating ideas. That’s like a business loan to buy equipment.

Too much debt is bankruptcy—when payments consume all your revenue, you can’t invest in growth. That’s where we ended up.

The mistake wasn’t taking on debt. The mistake was never paying it down.

The 42% Question: What If Good Practices Could Get It to 20%?

Alex’s question about the 42% stat made me think: is 42% normal, or is it a symptom of systemic under-investment?

I wonder if teams with structured tech debt management—like Michelle’s ROI framework and Luis’s tech health sprints—actually spend 20-25% on debt instead of 42%.

The difference between 20% and 42% is 22% of capacity. On a 10-person team, that’s like having 2 extra engineers.

What if the “tech debt tax” isn’t fixed at 42%? What if that number represents deferred maintenance catching up to you?

Cognitive Debt: The Hidden Killer

One more thing I’ve been thinking about: Martin Fowler talks about “cognitive debt”—when no one can explain why design decisions were made.

At my startup, by month 15, nobody understood the full system. The original architect had left. The rest of us inherited a codebase with mysteries.

Why does this service call that endpoint? I don’t know, but if we remove it, checkout breaks.
Why is this data duplicated in three tables? No idea, but changing it caused data loss in staging.
Why does authentication timeout after 17 minutes? Nobody knows, and we’re afraid to touch it.

That’s cognitive debt. And it makes tech debt exponentially worse because you can’t confidently refactor what you don’t understand.

My Resolution: Never Defer Architectural Decisions More Than 2 Sprints

After that experience, my rule now: if we identify an architectural decision that needs to be made, we make it within 2 sprints or we don’t build the feature.

It sounds extreme, but here’s the logic:

If a feature requires architectural changes (new data model, new service, new integration pattern), and we skip that work to “ship fast,” we’re creating debt with 300% interest.

The cost to retrofit architecture after the fact is 3-5x the cost of doing it upfront. Every team I’ve talked to confirms this.

So now I’d rather ship slower with good bones than ship fast with brittle foundations.

Question for the Group

For those of you who’ve successfully managed tech debt:

Did you reduce the 42% tax, or did you just formalize it into planned time?

Like, did Luis’s tech health sprints reduce overall debt work, or just make the 15% visible and protected while the other 27% still happens as firefighting?

I’m genuinely curious if structured management prevents debt accumulation or just manages debt accumulation.

Because my startup lesson was: prevention is the only thing that scales. Management is a band-aid.

(Though I’ll take a well-managed band-aid over what we had, which was chaos.)

Confession from the product side: I didn’t understand tech debt until my engineering team showed me the velocity charts.

I thought “tech debt” was engineers being perfectionists about code quality. Like, “sure, it works, but it’s not elegant enough.”

I was so, so wrong.

The Wake-Up Call: Features Taking 3x Longer Than Planned

We planned a “simple” integration with Stripe. Engineering estimated 2 weeks. I thought, “Great, we’ll ship it mid-quarter.”

Six weeks later, it was still in development.

My initial reaction (I’m embarrassed to admit): “Why is engineering so slow?”

Then my engineering lead sat me down and showed me the data:

  • The Stripe integration itself: 4 days of actual work
  • Fixing our brittle payment service to support webhooks: 8 days
  • Debugging race conditions in our order processing: 5 days
  • Refactoring our database transactions (because they were locking up): 7 days
  • Testing everything because our test coverage was 30%: 6 days

Total: 30 days. And only 4 were “new feature work.” The other 26? Tech debt.

That’s when I realized: tech debt isn’t a quality preference, it’s a velocity tax.

The Metric That Changed Everything: Time-to-First-Deploy

Michelle and Luis mentioned this, and I want to emphasize it from the product side because this metric convinced our leadership to invest in tech health.

We tracked how long it took new engineers to deploy their first feature:

  • New services (clean architecture): 3-5 days
  • Legacy monolith: 12-18 days

Think about what that means: We’re paying the same salary for someone who’s productive in 3 days vs 18 days. That’s a 6x difference in time-to-value.

When I showed this to our CFO, her response was: “Why are we hiring into the monolith at all?”

That question led to a 6-month migration project that I now co-own with engineering.

Now I Co-Own the Tech Debt Backlog

Here’s the shift that’s made the biggest difference: tech debt is no longer “engineering’s problem.”

I attend tech health sprint planning. I help prioritize which debt to tackle based on roadmap impact. I advocate for tech health sprints when execs push for more features.

Why? Because I learned the hard way: deferred tech debt becomes delayed features.

The ROI Framework in Practice

Michelle’s framework—“tech debt competes on ROI, not guilt”—is exactly how we work now.

Every quarter, we have a “debt vs features” roadmap conversation. Engineering brings 5-7 tech health initiatives. Each one answers:

  1. What does this unblock? (specific features or integrations)
  2. What does this accelerate? (velocity improvements, onboarding time, etc.)
  3. What does this prevent? (incidents, outages, customer escalations)

Then we stack rank everything—features and debt—based on business impact.

Some quarters, debt wins. Like Q4 last year, our #1 priority was migrating off a legacy auth service because it was blocking enterprise deals worth $3M ARR.

Some quarters, debt is lighter. Like this quarter, where we’re in growth mode and our tech foundation is solid.

The key: it’s a conversation, not a negotiation. We’re not debating whether to pay down debt—we’re deciding which debt has the highest ROI.

The IEEE 15% Guideline: Our Reality Is 10-20%

You asked if 15% is realistic. Our experience: it depends on phase.

  • Post-MVP phase (validating product-market fit): 5-10% debt work, mostly critical bugs. We’re optimizing for learning speed.
  • Growth phase (scaling the product): 15-20% debt work. We’re paying down shortcuts and building for scale.
  • Mature phase (optimizing and expanding): 10-15% debt work. We’re in maintenance mode with occasional architectural shifts.

The mistake I used to make: treating every phase the same. Early on, I pushed for features at 100% capacity even when we were scaling. That’s how you end up with Maya’s velocity death spiral.

Now I ask engineering: “What phase are we in, and what’s the right debt allocation for this phase?”

A Question I Now Ask During Planning: “What’s the Debt Cost of This Feature?”

This has become my favorite question in sprint planning.

Before we commit to a feature, I ask: “What tech debt does this create, and when will we pay it down?”

Sometimes the answer is: “None, we’re building on clean architecture.”
Sometimes it’s: “This is a shortcut for validation, we’ll refactor in Q2.”
Sometimes it’s: “This feature requires architectural changes first, or we’ll create massive debt.”

That last one used to frustrate me. Now I understand: if we skip the architecture work, the feature will take 3x longer anyway. Better to do it right upfront.

Example: Last quarter we wanted to add real-time notifications. Engineering said, “We need to add a message queue first, or this will be brittle and slow.”

Old me: “Can we ship the feature now and add the queue later?”
New me: “What’s the timeline difference between doing it right vs doing it fast?”

Engineering: “Right way: 4 weeks. Fast way: 2 weeks now, then 6 weeks of firefighting and migration later.”

We did the 4-week version. It shipped cleanly, scaled beautifully, and unblocked three other features that needed the message queue.

Investing in architecture isn’t slower. It’s faster in aggregate.

Challenge to Other Product Managers

If your engineering team is saying they’re too slow, look at the tech debt percentage.

If they’re spending 40%+ of time on debt work, you don’t have a productivity problem. You have a debt accumulation problem.

And the solution isn’t “work harder.” It’s “invest in paying down debt so future work goes faster.”

Our velocity doubled after we did a 6-week tech health sprint to refactor our core services. Doubled. That’s not an exaggeration.

Now when engineering asks for tech health time, I don’t push back. I ask: “What velocity improvement will this unlock?”

Because sustainable 85% with good architecture is way faster than unsustainable 100% with brittle code.

Maya’s Question: Prevention vs Management

Maya asked if structured management prevents debt accumulation or just manages it.

From the product side, I think the answer is: both, but you need to be intentional.

Luis’s tech health sprints manage existing debt—they carve out time to pay down what’s already there.

But what prevents new debt? That’s the upfront architectural work. The “let’s add the message queue before we build 5 features that need it” decision.

We track both:

  • Reactive debt work (fixing what’s broken): This should decrease over time if you’re doing it right
  • Proactive architecture work (building foundations): This should be consistent, 5-10% every quarter

If all your tech health time is reactive firefighting, you’re managing debt but not preventing it.

If you’re investing in architecture upfront, you’re preventing the 42% tax from ever happening.

Final Thought: How We Align Product + Engineering

The best change we made: shared metrics.

We both track:

  • Feature delivery velocity (product cares)
  • Tech debt percentage (engineering cares)
  • Time-to-first-deploy (both care)
  • Incident rate (both care)

When both sides own both metrics, the conversation changes from “engineering needs to go faster” to “we need to invest in foundations so we can go faster together.”

Tech debt isn’t an engineering problem. It’s a business problem that requires product + engineering alignment to solve.

And once you have that alignment, the ROI is incredible.