How to Estimate Spikes, Bugs, and Technical Debt
Learn strategies for estimating work that does not fit the traditional user story format, including research spikes, bug fixes, and technical debt items.
Detailed Explanation
Estimating Non-Standard Work Items
Not all backlog items are user stories with clear acceptance criteria. Spikes, bugs, and tech debt require different estimation strategies.
Research Spikes
A spike is a time-boxed investigation to answer a question or reduce uncertainty.
Strategy: Do not estimate spikes in story points. Instead, time-box them (e.g., "2 days to investigate payment gateway options"). The output of a spike is knowledge, not shippable code.
Spike: "Evaluate three caching strategies for product catalog"
Time-box: 1 day
Output: Written recommendation with pros/cons
→ Do NOT assign story points
Bug Fixes
Bugs vary wildly in complexity. A typo fix is not the same as a race condition in a distributed system.
Strategy: Estimate bugs like any other story, but accept wider uncertainty. If the root cause is unknown, consider a spike first.
Bug: "Login fails intermittently on Safari"
Unknown root cause → Spike first (0.5 day to reproduce and diagnose)
Then estimate the fix based on findings
Technical Debt
Tech debt items improve code quality without changing user-visible behavior.
Strategy: Estimate normally. The effort to refactor, add tests, or upgrade a library is real work with real complexity.
Tech debt: "Migrate from REST to GraphQL for user service"
Multiple endpoints affected, schema design needed, tests to rewrite
→ 13 points (large, cross-cutting)
Summary Table
| Work Type | Estimate? | Method |
|---|---|---|
| User Story | Yes (points) | Planning poker |
| Spike | No | Time-box |
| Bug (known cause) | Yes (points) | Normal estimation |
| Bug (unknown cause) | Spike first | Time-box, then estimate |
| Tech Debt | Yes (points) | Normal estimation |
Use Case
Use this guide when your team struggles with how to handle spikes and bugs during sprint planning, or when tech debt items keep getting deprioritized because they have no estimates.