Sprint Planning
Sprint Planning sets the stage for a successful sprint by defining clear goals, selecting achievable work, and ensuring team alignment.
Overview
Sprint Planning is a collaborative ceremony where the team selects work for the upcoming sprint, breaks it down into tasks, and commits to a sprint goal. The ceremony bridges strategic intent (product backlog priorities) with tactical execution (sprint backlog tasks), translating business needs into executable engineering work.
Effective sprint planning requires balancing competing forces: ambitious enough to deliver value, realistic enough to complete, flexible enough to handle unknowns. Teams that plan too conservatively underdeliver value. Teams that overcommit create stress, cut quality corners, and miss sprint goals. The art lies in finding sustainable pace - a velocity the team can maintain indefinitely without burning out.
A successful sprint planning results in a clear sprint goal, a realistic commitment, and high team confidence. The team should leave planning knowing exactly what they'll deliver and why it matters. If any team member feels unclear about the sprint direction or doubts the commitment's feasibility, those concerns must be addressed before planning concludes - silent doubt becomes vocal failure mid-sprint.
Core Principles
- Goal-Oriented: Every sprint has a clear, achievable goal
- Capacity-Based: Commitment matches team capacity
- Collaborative: Entire team participates in planning
- Realistic: Team commits only to what they can complete
- Flexible: Plan allows for learning and adjustment
Sprint Planning Structure
Duration
- 2-week sprint: 2 hours
- 1-week sprint: 1 hour
Participants
- Development Team (required)
- Product Owner (required)
- Scrum Master (facilitator)
Agenda
Part 1: Sprint Goal Definition (15 minutes)
What is a Sprint Goal?
A sprint goal is a concise statement describing what the team aims to achieve. It provides coherence to the sprint backlog - a unifying purpose that guides trade-off decisions during the sprint. When unexpected issues arise, the sprint goal helps the team decide what to protect versus what to defer.
Good Sprint Goals (outcome-focused, specific, valuable):
- "Enable customers to schedule future payments" → Clear user capability, measurable completion
- "Improve payment processing performance by 50%" → Quantifiable improvement, technical focus
- "Complete OAuth2 authentication integration" → Specific integration, clear completion criteria
- "Reduce payment failure rate to <1%" → Measurable quality improvement
Bad Sprint Goals (output-focused, vague, unfocused):
- "Complete 30 story points" → Focuses on velocity metric, not business value
- "Work on payments" → Too vague, no clear success criteria or direction
- "Fix bugs and add features" → Lacks coherence, just a collection of unrelated work
A strong sprint goal enables the team to self-organize around a shared objective. When a developer finishes their current task, the sprint goal helps them select the next most valuable work. Without a goal, the sprint becomes a collection of disconnected stories with no narrative thread - completion feels arbitrary rather than purposeful.
Defining the Sprint Goal
Product Owner Presents:
- Business context and priorities
- Key stakeholder needs
- Success criteria for sprint
Team Discusses:
- Technical feasibility
- Dependencies and risks
- Alignment with product roadmap
Team Agrees:
- Single, clear sprint goal
- Success criteria
- How this aligns with longer-term goals
Part 2: Capacity Planning (10 minutes)
Calculate Available Capacity
Capacity planning grounds sprint commitments in reality. Without capacity calculation, teams rely on gut feeling - a recipe for consistent overcommitment. The formula accounts for all the hidden time that erodes development capacity:
Available Capacity = (Team Size × Sprint Days) - Planned Absences - Meetings - Support Work
Example Calculation:
Team: 5 developers
Sprint: 10 working days
Planned absences: 2 days (1 developer on vacation)
Meetings/Ceremonies: 0.5 days per developer (standups, planning, review, retro, refinement)
Support/BAU: 1 day per developer (production support, code reviews, helping other teams)
Available Capacity = (5 × 10) - 2 - (5 × 0.5) - (5 × 1)
= 50 - 2 - 2.5 - 5
= 40.5 developer-days
This reveals a critical insight: only 81% of theoretical capacity is actually available for sprint work (40.5 / 50). New teams often ignore these "overhead" hours and wonder why they consistently deliver only 60-70% of committed work. The problem isn't execution - it's unrealistic planning that ignores reality.
Velocity Considerations
Velocity measures the team's historical output, providing an empirical basis for commitment. It answers "Based on past performance, how much work can we realistically complete?" Velocity isn't a performance metric to maximize - it's a planning tool for sustainable delivery.
Historical Velocity:
- Review last 3 sprints' completed story points (not committed, but actually completed)
- Calculate average velocity to smooth outlier sprints
- Identify trends (increasing/decreasing) that might indicate systemic changes
- Recognize that velocity is team-specific - comparing velocities across teams is meaningless due to different estimation calibration
Adjustment Factors:
Teams must adjust raw velocity for sprint-specific circumstances that differ from historical context:
- New team members (reduce capacity by 20-30%): Onboarding consumes experienced team members' time through pairing, code reviews, and knowledge transfer. The new member contributes minimal output initially while creating overhead.
- Technical debt work (reserve 10-20% capacity): Refactoring and architecture improvements rarely deliver user-visible stories but require capacity. Explicitly budget this work rather than letting it squeeze story completion.
- Known risks or unknowns (add buffer): If the sprint involves unfamiliar technologies, complex integrations, or dependency on external teams, reduce planned velocity to account for learning curves and coordination overhead.
- Holiday periods (reduce capacity): Major holidays reduce available working days. Account for this in capacity calculation - don't pretend December sprints deliver the same velocity as March sprints.
Example Calculation:
Last 3 sprints: 28, 32, 30 story points
Average velocity: 30 story points
Adjustments:
- New team member: -20% = -6 points
- Technical debt sprint: -10% = -3 points
Sprint commitment target: 30 - 6 - 3 = 21 story points
Part 3: Story Selection (60 minutes)
Selection Process
1. Start with Highest Priority
Product Owner presents top priority stories in order
Team discusses each story:
- Acceptance criteria clear?
- Dependencies identified?
- Risks understood?
- Estimate still accurate?
2. Assess Against Sprint Goal
For each story, ask:
- Does this contribute to sprint goal?
- Is it essential for sprint success?
- Can it wait for next sprint?
3. Check Capacity
Running total of story points
Compare to available capacity
Stop when capacity reached
4. Add Buffer
Reserve 10-20% capacity for:
- Unexpected issues
- Code review time
- Bug fixes
- Support requests
Story Breakdown
For large stories (>5 points), break down further:
Payment Scheduling Story (8 points):
Original: "As a user, I want to schedule future payments"
Break down into:
- Backend API for scheduled payments (3 points)
- Database schema for scheduled jobs (2 points)
- Frontend UI for date selection (2 points)
- Background job processor (3 points)
- Email notifications (2 points)
Total: 12 points (larger than estimate - needs discussion)
Handling Dependencies
Identify Dependencies:
- External team dependencies
- Infrastructure dependencies
- Third-party service dependencies
- Waiting on stakeholder input
Mitigate Risks:
- Front-load dependent stories
- Have backup stories ready
- Communicate dependencies early
- Escalate blockers immediately
Part 4: Task Breakdown (20 minutes)
Breaking Stories into Tasks
For each committed story, identify specific tasks:
Example: Payment API Story (5 points):
Tasks:
1. Create Payment entity and repository (2 hours)
2. Implement PaymentService with validation (4 hours)
3. Create REST controller with endpoints (2 hours)
4. Write unit tests for service layer (3 hours)
5. Write integration tests with TestContainers (4 hours)
6. Update OpenAPI specification (1 hour)
7. Code review and fixes (2 hours)
8. Update documentation (1 hour)
Total estimate: 19 hours (~2.5 days)
Task Estimation Guidelines
Time Estimates:
- Use hours for tasks (not story points)
- Tasks should be 2-8 hours max
- If >8 hours, break down further
Include All Work:
- Development
- Testing (unit, integration, contract)
- Code review time
- Documentation
- Bug fixes
Who Estimates:
- Developer who will do the work
- Others provide input
- Team validates estimates
Part 5: Sprint Commitment (10 minutes)
Confirm Commitment
Team Votes:
Fist of Five voting:
5 fingers = Highly confident
4 fingers = Confident
3 fingers = Somewhat confident (discuss concerns)
2 fingers = Not confident (identify risks)
1 finger = Cannot commit (major issues)
If Confidence Low:
- Identify specific concerns
- Remove stories if needed
- Adjust scope
- Re-vote
Document Commitment:
- Sprint goal
- Committed stories
- Total story points
- Key risks and mitigations
Sprint Planning Output
Documented in Jira:
- Sprint created with dates
- Stories moved to sprint
- Sprint goal visible
- Tasks created and assigned
Communicated:
- Sprint goal shared with stakeholders
- Risks escalated
- Dependencies flagged
- Team aligned on priorities
Best Practices
Preparation is Critical
Product Owner Preparation:
- Backlog prioritized
- Top stories refined and estimated
- Sprint goal drafted
- Stakeholder priorities clarified
- Dependencies identified
Development Team Preparation:
- Review upcoming stories beforehand
- Research technical approaches
- Identify questions for Product Owner
- Review velocity and capacity
Keep It Focused
Timebox Discussions:
- Use timer for each story discussion
- Park detailed technical conversations
- Follow up on specifics after planning
Parking Lot:
- Capture off-topic items
- Schedule follow-up discussions
- Don't derail planning
Realistic Commitments
Don't Overcommit:
Bad: "We can definitely do 40 points!" (historical velocity: 28)
Good: "Based on our velocity and capacity, we'll commit to 25 points"
Include Buffer:
- 10-20% buffer for unknowns
- Reserve capacity for code review
- Account for support work
Be Honest About Capacity:
- Account for all planned absences
- Include meeting time
- Consider team experience
Common Anti-Patterns
Status Quo Planning
Problem: Planning based on previous sprint without reassessing Solution: Evaluate capacity fresh each sprint
Gold Plating
Problem: Adding nice-to-have features to stories during planning Solution: Stick to acceptance criteria, defer enhancements
Over-Tasking
Problem: Breaking every story into 20+ tiny tasks Solution: Task breakdown should be helpful, not bureaucratic
No Sprint Goal
Problem: Sprint is just a collection of unrelated stories Solution: Define clear goal that unifies the work
Passive Participation
Problem: Only Scrum Master and Product Owner talking Solution: Ensure all developers actively participate
Sprint Planning Checklist
Before Sprint Planning
- Backlog prioritized and refined
- Top stories estimated
- Team capacity calculated
- Sprint goal drafted
- Previous sprint reviewed
- Dependencies identified
- Demo environment ready
During Sprint Planning
- Sprint goal agreed upon
- Team capacity reviewed
- Stories selected based on priority
- Story points sum matches capacity
- Dependencies documented
- Risks identified and mitigated
- Stories broken into tasks
- Team confidence level high (3+)
- Commitment documented in Jira
After Sprint Planning
- Sprint goal visible in Jira
- Stories in sprint backlog
- Tasks created and assigned
- Stakeholders informed
- Dependencies communicated
- Risks escalated
Further Reading
- Ceremonies Overview - All agile ceremonies
- Backlog Refinement - Preparing stories for planning
- User Stories - Writing effective user stories
- Definition of Ready - Story readiness criteria
- Sprint Review - Demonstrating completed work
Summary
Key Takeaways:
- Clear Sprint Goal: Define specific, achievable goal that guides story selection
- Capacity Planning: Calculate realistic capacity accounting for absences and overhead
- Collaborative Selection: Team selects stories based on priority and capacity
- Task Breakdown: Break stories into concrete tasks with hour estimates
- Team Commitment: Ensure high team confidence through Fist of Five voting
- Buffer Included: Reserve 10-20% capacity for unknowns and code review
- Preparation Required: Product Owner and team must prepare beforehand
- Document Thoroughly: Capture sprint goal, commitment, and risks in Jira