Technical Debt: Why Your Product Keeps Getting Slower
Learn what technical debt really means and how to fix it without drowning in jargon.
Prerequisites
- • Basic understanding of how software teams work
- • Experience working with developers
Your developers are working hard. Everything takes longer than it used to.
The Problem You're Facing
Six months ago, your team built features in days. Now the same work takes weeks.
Small bugs turn into all-day problems. Simple changes break other parts. Your best developer just quit.
Nobody can point to a single reason. The team just feels stuck, and the work that used to take a day now drags on for a week.
Most teams lose a day or two every week dealing with old problems. That's a chunk of a developer's salary down the drain.
What Is Technical Debt? (Simple Version)
Think of technical debt like your messy garage. You meant to organize it. But you kept throwing things in to deal with "later."
Now you can't find anything. A 5-minute task takes an hour because moving one box starts an avalanche.
Software works the same way.
Two Types of Technical Debt
Forget complex categories. There are just two types:
1. Quick Fixes (Shortcuts You Took) Like using duct tape instead of proper repairs. You knew it wasn't perfect, but you needed to ship fast.
Examples:
- Hard-coded prices instead of a pricing system
- Copy-pasted code instead of reusable components
- Manual processes instead of automation
2. Accumulated Mess (Problems That Built Up) Like clutter in your garage. No single decision caused it. It just happened over time.
Examples:
- Old code that nobody understands anymore
- Different coding styles mixed together
- Outdated tools that need upgrading
Both types slow your team down. Both cost money.
Is This Technical Debt or Just Normal?
New PMs often wonder: "How do I know if this is actually technical debt?"
It's Technical Debt If:
- The same feature takes 2x longer than before
- Bugs keep coming back in the same area
- Developers say "we can't do that without fixing X first"
- Simple changes require touching many files
- New team members take forever to understand the code
It's Normal If:
- Complex features take time (that's expected)
- You're learning a new technology (temporary slowdown)
- The team is smaller (fewer hands)
- Requirements keep changing (scope problem, not debt)
Quick Test: Ask your team "What slows you down most?" If they all mention the same areas, that's technical debt.
How Much Is This Costing You?
Let's calculate the real cost. It's simpler than you think.
The Only Formula You Need
Weekly cost = Hours lost per week × Team size × $100/hour Annual cost = Weekly cost × 50 weeks
$100/hour is a rough loaded cost for a mid-market US engineer. Use your own rate.
Real Example
Your team of 5 developers each loses 8 hours per week to old problems.
- Hours lost: 8 hours × 5 people = 40 hours/week
- Weekly cost: 40 × $100 = $4,000
- Annual cost: $4,000 × 50 = $200,000/year
That's a whole developer's salary wasted on problems you could fix.
Try This Calculator
See your own team's cost:
Calculator type "velocity" not found
Don't overthink the numbers. Even rough estimates help.
The Simple Priority Matrix
Forget complex frameworks. Use this 2×2 grid:
Your Technical Debt Priority Grid
| Easy to Fix | Hard to Fix | |
|---|---|---|
| Urgent (Blocks work daily) | Do Now | Plan Next |
| Not Urgent (Annoying but manageable) | Do During Downtime | Maybe Later |
Examples:
- Do Now: Slow test suite that runs 20 times/day
- Plan Next: Database that will hit limits in 3 months
- Do During Downtime: Messy code that works but is hard to read
- Maybe Later: Old framework that still works fine
Start with the "Do Now" quadrant. Always.
Real Examples You'll Recognize
Example 1: The E-commerce Site That Got Slower
Problem: Page load went from 2 seconds to 10 seconds over a year.
Why: Quick fixes piled up. Nobody cleaned old code. Database queries multiplied.
Cost: 40% of visitors left. Lost $50,000/month in sales.
Fix: Two developers spent 1 week optimizing. Load time dropped to 3 seconds.
Lesson: Speed problems are technical debt you can measure in dollars.
Example 2: The Mobile App With Bad Reviews
Problem: App crashes increased from 1% to 5% of sessions.
Why: Old error handling code. Never updated for new features.
Cost: Rating dropped from 4.5 to 2.8 stars. Downloads fell 60%.
Fix: One developer fixed error handling in 3 days.
Lesson: User-facing bugs are the most expensive debt.
Example 3: The Feature That Takes Forever
Problem: Adding a simple form field takes 3 weeks.
Why: Form code scattered across 15 files. No documentation.
Cost: Competitors launched 5 features while you built one.
Fix: Restructured form system over 2 sprints. New features now take 2 days.
Lesson: Development speed is competitive advantage.
Your First Month Action Plan
Week by week, here's exactly what to do:
Week 1: Ask the Right Questions
Schedule 30 minutes with each developer. Ask:
- "What slows you down most?"
- "How many hours per week do you lose to this?"
- "What would it take to fix it?"
Write down everything. Look for patterns.
Week 2: Calculate the Cost
Use the simple formula:
- Add up hours lost from Week 1 interviews
- Multiply by $100/hour (or your team's rate)
- Calculate weekly and annual cost
You now have a number to share.
Week 3: Pick One Win
From your Week 1 list:
- Find something in the "Urgent + Easy" quadrant
- Get agreement from the team
- Estimate the fix time (usually 2-5 days)
- Calculate the payback period
Week 4: Get Buy-In and Start
Present to your boss (see scripts below). Start fixing your first item. Track the improvement.
Scripts for Talking to Your Boss
Use these word-for-word if needed:
Script 1: The Cost Conversation
"I discovered our team loses 40 hours per week to technical problems. That's $4,000 per week or $200,000 per year. I'd like to fix the top issue which will take 3 days and save us 10 hours per week."
Script 2: The Speed Conversation
"Our feature delivery has slowed by 40% in the last 6 months. The main cause is [specific problem]. Fixing it will take 1 week and restore our original speed."
Script 3: The Risk Conversation
"We have a growing problem with [issue]. If we don't fix it, we'll likely see [specific bad outcome]. The fix takes X days now, but will take 3x longer if we wait."
Script 4: The Customer Impact
"Our support tickets about [problem] have tripled. Each ticket costs $50 to handle. Fixing the root cause will take 5 days and eliminate 80% of these tickets."
Common Mistakes to Avoid
Mistake 1: Trying to Fix Everything
Problem: You make a list of 50 problems. Fix: Pick ONE. Fix it completely. Then pick another.
Mistake 2: Not Tracking Improvement
Problem: You fix things but can't prove impact. Fix: Measure one metric before and after (speed, bugs, or hours).
Mistake 3: Going It Alone
Problem: You decide what to fix without the team. Fix: Always ask developers what hurts most. They know.
Mistake 4: Waiting for the Perfect Time
Problem: "We'll fix it after this launch." Fix: Allocate 20% of every sprint. Small, steady progress wins.
Mistake 5: Using Too Much Jargon
Problem: You say "refactoring the middleware layer." Fix: Say "fixing the thing that makes checkout slow."
The 70/20/10 Rule (Keep It Simple)
Allocate your team's time like this:
- 70% New Features: Keep shipping value
- 20% Fix Technical Debt: Steady improvement
- 10% Innovation: Try new things
If things are really bad, go 50/40/10 temporarily.
Never go 100% on debt. You'll lose momentum and trust.
Creating Your Ongoing Process
Every Week
- Ask in standups: "What slowed you down?"
- Track hours lost in a simple spreadsheet
- Celebrate when something gets fixed
Every Sprint
- Reserve 20% for debt fixes
- Pick from your priority matrix
- Share improvements with stakeholders
Every Quarter
- Review your technical debt list
- Calculate total cost saved
- Adjust your 70/20/10 split if needed
Quick Wins to Start With
These almost always exist and are easy to fix:
- Slow Tests: If tests take >10 minutes, developers waste hours daily
- Broken Development Setup: New developers taking days to start coding
- Manual Deployments: If releasing takes hours of manual work
- Missing Documentation: When everyone asks the same questions
- Flaky Tests: Tests that fail randomly waste debugging time
Pick one. Fix it this sprint.
Try This First
Today (15 minutes): Ask one developer "What's the most annoying thing you deal with daily?"
Tomorrow (30 minutes): Calculate how many hours that thing wastes per week.
This Week (1 hour): List your top 5 problems and put them in the 2×2 matrix.
This Sprint: Fix one thing from the "Urgent + Easy" quadrant.
Key Takeaways
Technical debt is normal. Every team has it. Most teams lose a day or two per week to old problems. Calculate the cost: Hours × People × Rate. Fix urgent + easy problems first. Allocate 20% of time to debt. Every sprint.
You Can Do This
Technical debt sounds scary, but it's not. It's just old problems that need fixing.
You don't need to understand the code. You need to:
- Ask what slows the team down
- Calculate the cost
- Fix the easy stuff first
- Keep going
Every PM deals with this. You're not alone. Start small, track progress, and celebrate wins.
Next Steps
Ready to tackle technical debt?
- Use our Velocity Calculator to track improvement
- Try the Impact/Effort Matrix to prioritize
- Read How to Track Team Velocity
Remember: You're not fixing code. You're fixing the team's ability to deliver value.
Start with one question: "What slows you down?"
The rest will follow.