GitScrum / Docs
All Best Practices

Sprint Backlog Refinement | Grooming Best Practices

Conduct effective backlog refinement sessions with Definition of Ready, story sizing, and team estimation. GitScrum tracks ready items and health metrics.

6 min read

Refinement Goals

GoalIndicatorBenefit
Ready for sprintMeets DoRFaster planning
Well-estimatedTeam consensusPredictable velocity
Right-sized1-3 day tasksManageable work
PrioritizedStack-rankedClear focus
UnderstoodQuestions answeredLess mid-sprint confusion

Refinement Process

BACKLOG REFINEMENT WORKFLOW

BEFORE SESSION (Product Owner + Tech Lead):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  1. Review incoming requests                    β”‚
β”‚  2. Draft user stories with acceptance criteria β”‚
β”‚  3. Identify items needing technical input      β”‚
β”‚  4. Pre-prioritize items to discuss             β”‚
β”‚  5. Flag items with dependencies or risks       β”‚
β”‚                                                 β”‚
β”‚  Time: 1-2 hours before weekly session          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
REFINEMENT SESSION (Full Team):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Duration: 1 hour per week                      β”‚
β”‚                                                 β”‚
β”‚  Agenda:                                        β”‚
β”‚  1. Review new items (15 min)                   β”‚
β”‚     └── PO presents, team asks questions        β”‚
β”‚                                                 β”‚
β”‚  2. Clarify existing items (20 min)             β”‚
β”‚     └── Answer open questions, update stories   β”‚
β”‚                                                 β”‚
β”‚  3. Estimate ready items (20 min)               β”‚
β”‚     └── Planning poker or similar               β”‚
β”‚                                                 β”‚
β”‚  4. Identify risks/dependencies (5 min)         β”‚
β”‚     └── Flag for follow-up                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
AFTER SESSION (Ongoing):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  1. Update stories with clarifications          β”‚
β”‚  2. Research flagged technical questions        β”‚
β”‚  3. Resolve dependencies                        β”‚
β”‚  4. Split stories if too large                  β”‚
β”‚  5. Keep backlog prioritized                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Definition of Ready

DEFINITION OF READY (DoR)

BEFORE ENTERING SPRINT, ITEM MUST HAVE:

CLARITY:
☐ User story follows format (As a... I want... So that...)
☐ Acceptance criteria are specific and testable
☐ UI designs attached (if applicable)
☐ Technical approach understood

SIZE:
☐ Estimated by team
☐ Can be completed in 1-3 days
☐ If larger, broken into sub-tasks

DEPENDENCIES:
☐ No blocking dependencies, OR
☐ Dependencies scheduled to complete first
☐ External dependencies have timeline

PRIORITY:
☐ Product Owner has prioritized
☐ Stakeholder alignment confirmed

TESTABILITY:
☐ Test scenarios identified
☐ Edge cases documented

Story Sizing Guidelines

STORY SIZING REFERENCE

1 POINT - Trivial
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Configuration change                         β”‚
β”‚  β€’ Text update                                  β”‚
β”‚  β€’ Simple bug fix with known cause              β”‚
β”‚  Time: < 4 hours                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2 POINTS - Small
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Add field to existing form                   β”‚
β”‚  β€’ Simple API endpoint                          β”‚
β”‚  β€’ Basic UI component                           β”‚
β”‚  Time: 4-8 hours (half day to full day)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3 POINTS - Medium
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ New feature with known pattern               β”‚
β”‚  β€’ Moderate complexity                          β”‚
β”‚  β€’ Some testing/edge cases                      β”‚
β”‚  Time: 1-2 days                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5 POINTS - Large
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ New feature with some unknowns               β”‚
β”‚  β€’ Multiple components involved                 β”‚
β”‚  β€’ Integration with external system             β”‚
β”‚  Time: 2-3 days                                 β”‚
β”‚  Consider: Can this be split?                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

8 POINTS - Very Large
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Complex feature                              β”‚
β”‚  β€’ Significant unknowns                         β”‚
β”‚  β€’ Cross-team coordination                      β”‚
β”‚  Time: 3-5 days                                 β”‚
β”‚  Action: Should definitely be split             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

13+ POINTS - Epic
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Too large for single sprint                    β”‚
β”‚  Action: MUST be broken down                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Refinement Session Template

REFINEMENT SESSION AGENDA

OPENING (2 min):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Review session goals                         β”‚
β”‚  β€’ Check: How many items need refinement?       β”‚
β”‚  β€’ Time-box reminder                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ITEM REVIEW (50 min for ~5 items):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  For each item (10 min max per item):           β”‚
β”‚                                                 β”‚
β”‚  1. PO reads story and acceptance criteria      β”‚
β”‚  2. Team asks clarifying questions              β”‚
β”‚  3. Technical discussion if needed              β”‚
β”‚  4. Estimate (if ready)                         β”‚
β”‚  5. Mark as ready or note follow-ups            β”‚
β”‚                                                 β”‚
β”‚  If not resolvable in 10 min:                   β”‚
β”‚  └── Park for offline follow-up                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

WRAP-UP (5 min):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Recap items refined and estimates            β”‚
β”‚  β€’ List follow-up actions with owners           β”‚
β”‚  β€’ Confirm enough ready for next sprint         β”‚
β”‚  β€’ Note: Ready backlog should be 2 sprints deep β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Backlog Health Metrics

BACKLOG HEALTH DASHBOARD

READINESS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Items meeting Definition of Ready:             β”‚
β”‚                                                 β”‚
β”‚  Ready for next sprint:     35 points   βœ“       β”‚
β”‚  (Target: 1.5x sprint capacity of 30)           β”‚
β”‚                                                 β”‚
β”‚  Ready for sprint after:    28 points   ⚠       β”‚
β”‚  (Target: 1x sprint capacity)                   β”‚
β”‚                                                 β”‚
β”‚  Needs refinement:          45 points           β”‚
β”‚  (Pipeline for future)                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ESTIMATION COVERAGE:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Top 20 items:                                  β”‚
β”‚  β”œβ”€β”€ Estimated: 18 (90%)        βœ“               β”‚
β”‚  └── Unestimated: 2 (10%)       βœ“               β”‚
β”‚                                                 β”‚
β”‚  All items:                                     β”‚
β”‚  β”œβ”€β”€ Estimated: 45 (65%)                        β”‚
β”‚  └── Unestimated: 24 (35%)                      β”‚
β”‚  (Lower backlog items can wait)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

STORY SIZE DISTRIBUTION:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Ready items breakdown:                         β”‚
β”‚  1-2 points: 8 items  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                  β”‚
β”‚  3 points:   5 items  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                     β”‚
β”‚  5 points:   4 items  β–ˆβ–ˆβ–ˆβ–ˆ                      β”‚
β”‚  8+ points:  1 item   β–ˆ (needs splitting)       β”‚
β”‚                                                 β”‚
β”‚  Health: Good (most items < 5 points)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Best Practices

  • Refine continuously not just before planning
  • Keep 2 sprints worth of ready items
  • Time-box discussions to prevent rabbit holes
  • Split large stories proactively
  • Document questions resolved in session
  • Pre-work by PO makes sessions efficient
  • Track readiness metrics for health
  • Involve the right people for each item
  • Anti-Patterns

    βœ— Refinement only during sprint planning
    βœ— No Definition of Ready
    βœ— 3+ hour refinement meetings
    βœ— Estimating without understanding
    βœ— PO works alone on all items
    βœ— Never splitting large stories
    

    Related Solutions