I need to share something that’s been eating at me for the past 18 months. Our team’s velocity dashboard is green—we’re shipping features faster than ever. But here’s what the dashboard doesn’t show: we’re also drowning.
The Numbers Don’t Lie
I just ran the analysis, and it’s worse than I thought:
- 33% of our engineering time goes to dealing with technical debt (not new features, not customer value—just keeping the lights on)
- Our team’s deployment frequency is up 40% year-over-year
- But our time-to-ship for new features is also up 40% because high-debt codebases move slower
We’re in this weird paradox where we’re “moving fast” but can’t actually move anymore.
How We Got Here
18 months ago, we made a conscious choice: ship the MVP fast, get customers, fix it later. That’s startup 101, right?
The problem? “Later” never came. Every sprint, we had new features to build. Every quarter, we had growth targets to hit. The debt kept accumulating, but we kept telling ourselves “just one more sprint, then we’ll pay it down.”
Now? The codebase is a house of cards. Changing one thing breaks three others. Our newest engineer spent 2 weeks just setting up the local dev environment because the documentation is so out of date. Our most senior engineer quit last month, citing “technical debt burnout” in her exit interview.
The Real Cost
Here’s what 33% time tax actually means for us:
- $450K/year in engineering salary going to maintenance instead of innovation (3 engineers × $150K)
- Features taking 6-8 weeks instead of 3-4 weeks because everything is built on shaky foundations
- 51% of our team has mentioned tech debt in our quarterly engagement surveys—20% of them cite it as a reason they’re considering leaving
The retention number scares me most. We’re not just losing productivity—we’re losing people.
The Question I Can’t Answer
Our CEO asked me yesterday: “When does ‘move fast and break things’ become ‘move slow and can’t fix anything’?”
I didn’t have a good answer.
Because here’s the thing—we needed to move fast 18 months ago. We had 6 months of runway and no customers. If we’d spent 3 months building the “right” architecture, we’d be dead.
But now we have customers, revenue, and a codebase that’s actively preventing us from serving them better. We’re trapped in this middle state where the debt is too big to ignore but too expensive to pay down all at once.
What I’m Trying
We’ve started small:
- 20% time allocation rule - every sprint, 20% of story points must be debt paydown
- Debt registry - tracking every “we’ll fix this later” decision with estimated cost
- Refactor Fridays - last Friday of the month is architecture improvement day (no new features)
Three months in, and honestly? I don’t know if it’s working. We’re paying down debt, but we’re also accumulating new debt faster than we’re fixing old debt.
My Real Question
For those of you who’ve navigated this—when did you make the hard stop?
Did you:
- Pause all new features for a “debt sprint”?
- Fire clients to reduce scope and buy time to rebuild?
- Just accept the 33% tax as the new normal?
- Rebuild from scratch (and how did you convince leadership)?
Because right now, it feels like we’re on a treadmill that’s getting faster. The 33% time tax isn’t static—Gartner predicts by 2026, 80% of technical debt will be architectural (the kind you can’t fix in a weekend refactoring sprint).
At what point does “move fast” become “can’t move at all”?
I’d love to hear from anyone who’s been here. Especially if you made it out alive.
Sources: McKinsey analysis, Developer productivity research, Gartner technical debt predictions