GitScrum / Docs
All Best Practices

Sprint Backlog Creation | Right Work, Right Size

Build sprint backlogs with properly refined, estimated, and prioritized work. GitScrum helps teams commit to realistic goals using velocity data and capacity.

7 min read

A sprint backlog that's too ambitious leads to failure and demoralization. One that's too light wastes capacity. Creating effective sprint backlogs means selecting the right amount of the right work, properly prepared and understood by the team.

Sprint Backlog Problems

ProblemImpactSolution
Over-commitmentMissed sprint, demoralizationUse velocity data
Unclear workMid-sprint confusionProper refinement
Too large itemsNever finishBreak down tasks
Hidden dependenciesBlocked workDependency mapping
No prioritiesWrong work firstClear ordering

Backlog Readiness

Definition of Ready

DEFINITION OF READY (DoR)
═════════════════════════

A task is READY for sprint when:

CLARITY:
- [ ] Description is clear and complete
- [ ] Acceptance criteria defined
- [ ] "Why" is understood (context/value)
- [ ] Questions have been answered

SIZE:
- [ ] Estimated by the team
- [ ] Can complete within sprint
- [ ] Ideally 1-3 days of work
- [ ] Larger items are broken down

DEPENDENCIES:
- [ ] No blocking dependencies
- [ ] External dependencies identified
- [ ] Prerequisites complete or scheduled

RESOURCES:
- [ ] Design/mockups available (if needed)
- [ ] API specs available (if needed)
- [ ] Test data/environments ready
- [ ] Skills exist on team

Ready vs Not Ready

READY VS NOT READY
══════════════════

βœ“ READY:
"Implement password reset flow"
- API endpoint documented
- Email template approved  
- Acceptance criteria: 5 specific items
- Estimate: 5 points
- No blockers

βœ— NOT READY:
"Build user authentication"
- Too vague - which auth method?
- No API specs
- No acceptance criteria
- No estimate
- Depends on unfinished work

Sprint Planning Process

Capacity Calculation

CAPACITY CALCULATION
════════════════════

STEP 1: Calculate Available Days
─────────────────────────────────────
Sprint length:        10 days (2 weeks)
Team members:         5 developers
Total person-days:    50 days

STEP 2: Subtract Unavailability
─────────────────────────────────────
PTO:                  -3 days (@sarah, @mike)
Holidays:             -0 days
Training:             -2 days (@lisa)
────────────────────────────
Available:            45 person-days

STEP 3: Account for Non-Coding
─────────────────────────────────────
Meetings (~15%):      -6.75 days
Support/bugs (~10%):  -4.5 days
────────────────────────────
Capacity:             33.75 days

STEP 4: Convert to Story Points
─────────────────────────────────────
If 1 point β‰ˆ 0.5 day ideal work
Capacity β‰ˆ 67 story points

STEP 5: Apply Historical Factor
─────────────────────────────────────
Average velocity:     52 points
Last 3 sprints:       48, 55, 53

β†’ Target this sprint: 50-55 points
  (conservative given PTO)

Sprint Planning Meeting

SPRINT PLANNING STRUCTURE
═════════════════════════

DURATION: 2-4 hours (for 2-week sprint)

PART 1: WHAT (60 min)
─────────────────────────────────────
Product owner presents:
β”œβ”€β”€ Sprint goal
β”œβ”€β”€ Top priorities from backlog
└── Business context

Team confirms:
β”œβ”€β”€ Understanding of work
β”œβ”€β”€ Questions answered
└── Work is "ready"

PART 2: HOW MUCH (45 min)
─────────────────────────────────────
Calculate capacity:
β”œβ”€β”€ Team availability
β”œβ”€β”€ Known commitments
└── Buffer for unknowns

Pull from backlog:
β”œβ”€β”€ Highest priority first
β”œβ”€β”€ Until capacity reached
└── Leave 10-15% buffer

PART 3: HOW (45+ min)
─────────────────────────────────────
For each item:
β”œβ”€β”€ Break into subtasks
β”œβ”€β”€ Identify dependencies
β”œβ”€β”€ Assign initial owners
└── Note risks/concerns

OUTPUT:
β”œβ”€β”€ Committed sprint backlog
β”œβ”€β”€ Clear sprint goal
β”œβ”€β”€ Initial task assignments
└── Documented risks

Backlog Structure in GitScrum

Sprint Backlog View

SPRINT BACKLOG VIEW
═══════════════════

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Sprint 23: User Authentication                        β”‚
β”‚  Mar 18-29 | Goal: Complete auth flow for mobile      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Capacity: 52 pts | Committed: 48 pts | Buffer: 8%    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                         β”‚
β”‚  TODO (32 pts)        IN PROGRESS      DONE            β”‚
β”‚  ────────────         ───────────      ────            β”‚
β”‚                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”‚
β”‚  β”‚ Login API      β”‚   β”‚ Password β”‚                     β”‚
β”‚  β”‚ 8 pts @mike    β”‚   β”‚ reset    β”‚                     β”‚
β”‚  β”‚ Ready βœ“        β”‚   β”‚ 5 pts    β”‚                     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚ @sarah   β”‚                     β”‚
β”‚                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                    β”‚
β”‚  β”‚ OAuth setup    β”‚                                    β”‚
β”‚  β”‚ 5 pts @lisa    β”‚                                    β”‚
β”‚  β”‚ Ready βœ“        β”‚                                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                    β”‚
β”‚                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                    β”‚
β”‚  β”‚ Mobile login UIβ”‚                                    β”‚
β”‚  β”‚ 8 pts @tom     β”‚                                    β”‚
β”‚  β”‚ Blocked: API   β”‚                                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                    β”‚
β”‚                                                         β”‚
β”‚  ... more items ...                                    β”‚
β”‚                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Task Breakdown

TASK BREAKDOWN EXAMPLE
══════════════════════

STORY: Login API Implementation (8 pts)

SUBTASKS:
β”œβ”€β”€ Create login endpoint (2 pts)
β”‚   └── @mike, Day 1-2
β”œβ”€β”€ Implement JWT generation (2 pts)
β”‚   └── @mike, Day 2-3
β”œβ”€β”€ Add rate limiting (1 pt)
β”‚   └── @mike, Day 3
β”œβ”€β”€ Write unit tests (2 pts)
β”‚   └── @mike, Day 4
└── Update API documentation (1 pt)
    └── @mike, Day 4-5

DEPENDENCIES:
β”œβ”€β”€ Needs: User model (complete βœ“)
β”œβ”€β”€ Needs: JWT library (complete βœ“)
└── Blocks: Mobile login UI

ACCEPTANCE CRITERIA:
β”œβ”€β”€ POST /api/login accepts email/password
β”œβ”€β”€ Returns JWT on success
β”œβ”€β”€ Returns 401 on invalid credentials
β”œβ”€β”€ Rate limited to 5 attempts/minute
β”œβ”€β”€ Logged in audit trail
└── Tests cover all scenarios

Managing the Sprint Backlog

During the Sprint

SPRINT BACKLOG MANAGEMENT
═════════════════════════

DAILY CHECKS:
β”œβ”€β”€ Any blocked items?
β”œβ”€β”€ Items taking longer than expected?
β”œβ”€β”€ Any scope creep happening?
β”œβ”€β”€ Still on track for sprint goal?

MID-SPRINT ADJUSTMENTS:
β”œβ”€β”€ Can we swarm on blockers?
β”œβ”€β”€ Need to cut scope?
β”œβ”€β”€ Can add work if ahead?
└── Communicate changes

SCOPE CHANGES:
If new urgent work appears:
1. Assess urgency vs. current work
2. If truly urgent, what gets removed?
3. Discuss with product owner
4. Document the change
5. Communicate to stakeholders

NEVER:
β”œβ”€β”€ Silently add work
β”œβ”€β”€ Let scope creep happen
β”œβ”€β”€ Miss sprint goal without raising early
└── Blame team for external factors

Burndown Tracking

SPRINT BURNDOWN
═══════════════

Points remaining by day:

48 │●
   β”‚  ●
40 β”‚    ●  ● (delay)
   β”‚         ●
32 β”‚           ●
   β”‚             ●
24 β”‚               ●
   β”‚                 ●
16 β”‚                   ●
   β”‚                     ●
 8 β”‚                       ●
   β”‚                         ●
 0 │──────────────────────────●
   D1  D2  D3  D4  D5  D6  D7  D8  D9  D10

Legend:
─── Ideal burndown
●   Actual progress

Status: On track after day 4 adjustment
Forecast: Complete with 2 pts buffer

Best Practices

For Sprint Backlogs

  • Use velocity data β€” Don't guess capacity
  • Leave buffer β€” 10-15% for unknowns
  • Prioritize ruthlessly β€” Top items done first
  • Ready means ready β€” Enforce Definition of Ready
  • Protect the commitment β€” Push back on additions
  • Anti-Patterns

    SPRINT BACKLOG MISTAKES:
    βœ— Committing to more than velocity
    βœ— Starting sprint with unclear work
    βœ— Tasks too large to finish
    βœ— No consideration of dependencies
    βœ— Adding work mid-sprint without removing
    βœ— No sprint goal
    βœ— Different priorities than what's in backlog
    βœ— Not tracking progress
    

    Related Solutions