Every week, 10 new tickets appear in your backlog. Your team ships 4. The math is simple: you are falling behind at 6 tickets per week. In 3 months, your backlog will be unmanageable. In 6 months, critical features will be years away from delivery.
Diagnosing the Root Cause
A backlog that grows faster than you ship has exactly three possible causes:
Cause 1: Insufficient Engineering Capacity
Symptoms:
- Every ticket that enters the backlog is genuinely important
- Team is at full capacity with zero slack time
- Sprint completion rate is high (85%+) but throughput is too low
- You could list 20 features you need this quarter and have capacity for 5
The math: If your team can ship 20 story points per sprint and your backlog adds 35 story points per sprint, no amount of prioritization fixes this. You need more capacity.
Cause 2: Poor Prioritization
Symptoms:
- Backlog contains items from 12+ months ago that nobody cares about
- Multiple stakeholders add tickets without clear business justification
- "Priority 1" items exceed 40% of the backlog (everything is urgent)
- Team works on low-impact items while high-impact items wait
- No clear framework for what gets built vs. what gets deferred
The math: Your capacity may be sufficient. But you are spending it on the wrong things while the right things accumulate.
Cause 3: Scope Inflation
Symptoms:
- Tickets that start as "add a button" become "redesign the entire page"
- Stories are not properly scoped before entering the sprint
- In-progress work frequently expands beyond original estimate
- "Small" requests from stakeholders bypass the backlog entirely
- Bug reports that are actually feature requests
The math: You think you are shipping 20 points per sprint, but half of those points were inflated from their original 2-point estimate to 5 points during execution.
Fix 1: The Backlog Purge
If your backlog has more than 3 months of work at current velocity, it is too large. Most of those tickets will never get built — admit this and clean up.
The Purge Process
Step 1: Export your entire backlog with dates
Sort by creation date. Anything older than 6 months that has not been started goes into a "graveyard" bucket.
Step 2: Apply the "Would we build this if it were proposed today?" test
For each ticket older than 3 months: if it were proposed today with no history, would you add it to the sprint? If not, archive it.
Step 3: Remove duplicate and overlapping tickets
Large backlogs always have 3-5 tickets describing the same underlying need in different words. Consolidate.
Step 4: Re-estimate remaining tickets
Old estimates are wrong. Requirements have changed, the codebase has changed, your team has changed. Re-estimate the survivors.
After this exercise, most teams reduce their backlog by 40-60%. This is not losing work — it is admitting that those tickets were never going to get built anyway.
Fix 2: Prioritization Framework
For the remaining backlog, apply a rigorous prioritization framework:
RICE Scoring
Reach: How many users/customers does this affect per quarter? Impact: How much does it move the metric you care about? (0.25 = minimal, 0.5 = low, 1 = medium, 2 = high, 3 = massive) Confidence: How confident are you in reach and impact estimates? (100% = high, 80% = medium, 50% = low) Effort: How many person-weeks does this take?
Score = (Reach × Impact × Confidence) / Effort
Sort by score. The top 20% are your next quarter's work. The rest is "later" or "never."
The Four Buckets
After scoring, place every ticket into one of four buckets:
- Must Do (Top 15-20%): High RICE score. Clear business impact. Committed to customers or critical for growth.
- Should Do (Next 20-30%): Good RICE score. Will improve the product meaningfully. No external commitment.
- Could Do (Next 20-30%): Moderate RICE score. Nice to have. Would improve things but is not critical.
- Won't Do (Bottom 20-30%): Low RICE score. Archive or delete. Accept that these will not happen in the next 12 months.
The discipline is accepting Bucket 4 and not pretending it will happen "someday."
Fix 3: Controlling Intake
A prioritized backlog stays prioritized only if intake is controlled:
Feature Request Process
- All requests go through a single intake channel (not random Slack messages)
- Each request must include: who wants it, why, and estimated business impact
- Requests are reviewed weekly (not immediately added to backlog)
- Only requests that pass the "Would we build this in the next 6 months?" test enter the backlog
Stakeholder Education
Explain to non-engineering stakeholders:
- Adding a ticket to the backlog is not a promise to build it
- Everything has a priority relative to everything else
- Adding urgent items means other items get delayed
- The team's capacity is fixed (unless we invest in growing it)
Sprint Protection
Once a sprint is planned:
- No new items enter mid-sprint (except production emergencies)
- Scope changes require removing something of equal size
- "Quick asks" that bypass the sprint are tracked as interruptions and their cost is reported
Fix 4: Increasing Capacity
If the root cause is genuinely insufficient capacity (after prioritization and scope control), you need more developers.
Short-term: Team Augmentation (2-4 weeks to impact)
- Add 2-4 developers through a development partner
- They focus on well-defined backlog items while your core team handles complex/strategic work
- Immediate impact on throughput
- Flexible: scale up for a quarter, then reduce if backlog is controlled
Medium-term: Hiring (3-6 months to impact)
- Identify the 1-2 permanent roles that fill the biggest skill gap
- Hire for roles that require deep institutional knowledge or leadership
- Accept that new hires take 3-6 months to reach full productivity
The Combination (Most Effective)
- Augment immediately to address the backlog crisis (2 weeks to productive)
- Hire selectively for permanent strategic roles (3-6 months timeline)
- Use augmentation to maintain velocity while new hires ramp up
- Reduce augmentation as internal team reaches full capacity
Preventing the Cycle from Repeating
After you bring your backlog under control, maintain discipline:
Monthly backlog health check:
- Total tickets should not exceed 3 months of capacity
- No ticket should be older than 6 months without a plan
- Archive anything that has been deprioritized twice
Quarterly capacity planning:
- How many story points can we realistically deliver next quarter?
- How many are already committed (bugs, tech debt, maintenance)?
- Remaining capacity = features we can promise
- If demand exceeds capacity: augment or say no
Visible backlog metrics:
- Backlog growth rate vs. completion rate (should be ≤1:1)
- Average ticket age (should be decreasing or stable)
- Sprint completion rate (should be 85%+)
The goal is not an empty backlog — that means you are not thinking far enough ahead. The goal is a backlog that represents 2-3 months of work, properly prioritized, with clear expectations about what will and will not get built.