Sprint Velocity & Capacity Forecast
Calculate sprint velocity, adjust for team capacity, and forecast release timelines with confidence ranges based on historical throughput and variance.
Formula
Adjusted Velocity = Avg Velocity × (Available Hours / Total Hours); Sprints to Complete = Backlog / Adjusted Velocity
Sprint velocity forecasting combines historical throughput with capacity adjustment for realistic planning. Velocity = average story points completed over last 6 sprints. Capacity = (Team size × Work days × Hours/day) - PTO - Meetings. Capacity factor = Available / Total. Adjusted velocity = Historical velocity × Capacity factor. Example: 6 people, 10 days, 8 hrs = 480 hrs. PTO (40 hrs) + Meetings (90 hrs) = 130 hrs off. Available: 350 hrs. Factor: 350/480 = 73%. If velocity is 40, adjusted = 29 points. Sprints needed = Backlog / Adjusted velocity. 200 points / 29 = 6.9 sprints. Use range for confidence: If std dev is 8, pessimistic velocity = 29-8 = 21, optimistic = 29+8 = 37. Sprints range: 200/37 to 200/21 = 5.4 to 9.5 sprints. Communicate: '7 sprints expected, range 5-10.' Formula works because it uses empirical data (actual throughput) instead of estimated task durations, and adjusts for known capacity constraints. Historical velocity self-corrects estimation bias—if team overestimates, velocity normalizes to actual output. Key insight: Velocity is descriptive (what happened) not prescriptive (what should happen). Pressuring velocity increase leads to gaming, not productivity improvement.
Worked Examples
Example 1: Q3 Release Forecast
Problem:6-person team, 2-week sprints, historical velocity 40 ± 8, backlog 200 points. 5 days PTO planned, 15 hours meetings per person. Forecast completion.
Solution:Team Capacity Analysis: Base capacity: - Team: 6 developers - Sprint: 14 days (~10 work days) - Hours/day: 8 - Total: 6 × 10 × 8 = 480 team-hours Deductions: - PTO: 5 days × 8 hrs = 40 hrs - Meetings: 15 hrs × 6 people = 90 hrs - Available: 480 - 40 - 90 = 350 hrs - Capacity: 350/480 = 73% Adjusted Velocity: - Historical: 40 points/sprint - Adjusted: 40 × 0.73 = 29 points - Range: 29 ± 8 → 21-37 points Backlog Forecast (200 points): - Optimistic (37 pts): 200/37 = 5.4 sprints - Expected (29 pts): 200/29 = 6.9 sprints - Pessimistic (21 pts): 200/21 = 9.5 sprints Timeline (2-week sprints, counted from the start of the next sprint): - Optimistic: 5.4 × 2 = 10.8 weeks - Expected: 6.9 × 2 = 13.8 weeks - Pessimistic: 9.5 × 2 = 19.0 weeks - Spread between best and worst case: 8.2 weeks, so c
Result:29 pts/sprint adjusted | 7 sprints (~14 weeks) expected | Range: 5-10 sprints
Example 2: Small Squad on One-Week Sprints
Problem:4-person squad, 7-day sprints, historical velocity 15 ± 3, backlog 90 points. 2 days PTO planned, 6 hours of meetings per person per sprint. How many sprints to burn down the backlog?
Solution:Team Capacity Analysis: Base capacity: - Team: 4 engineers - Sprint: 7 days x 0.71 = 4.97 work days - Hours/day: 8 - Total: 4 x 4.97 x 8 = 159 team-hours Deductions: - PTO: 2 days x 8 hrs = 16 hrs - Meetings: 6 hrs x 4 people = 24 hrs - Available: 159 - 16 - 24 = 119 hrs - Capacity: 119/159 = 74.8% Adjusted Velocity: - Historical: 15 points/sprint - Adjusted: 15 x 0.748 = 11 points - Range: 11 +/- 3 -> 8-14 points Backlog Forecast (90 points): - Optimistic (14 pts): 90/14 = 6.4 -> 7 sprints - Expected (11 pts): 90/11 = 8.2 -> 9 sprints - Pessimistic (8 pts): 90/8 = 11.3 -> 12 sprints Timeline (1-week sprints): - Optimistic: ~7 weeks - Expected: ~9 weeks - Pessimistic: ~12 weeks Per-Person Velocity: 15/4 = 3.8 points/person/sprint Recommendations: 1. Commit externally to the 12-week
Result:11 pts/sprint adjusted | 9 sprints (~9 weeks) expected | Range: 7-12 sprints
Frequently Asked Questions
What is sprint velocity?
Velocity is the amount of work (story points) a team completes per sprint on average. Measured empirically: Sum completed points over last 3-6 sprints, divide by sprint count. Example: Team completed 35, 42, 38, 45 points over 4 sprints. Velocity = (35+42+38+45)/4 = 40 points/sprint. Use for forecasting: 200-point backlog at 40 velocity = 5 sprints. Important: Velocity is team-specific—don't compare across teams. A '40-velocity' team isn't faster than '30-velocity' team; they estimate differently. Track trend, not absolute number.
How do I calculate sprint capacity?
Capacity = Available work hours for the sprint. Formula: (Team members × Work days × Hours/day) - PTO - Meetings - Other commitments. Example: 6-person team, 10 work days, 8 hrs/day = 480 hrs total. Minus: 2 days PTO (16 hrs), 10 hrs meetings/person (60 hrs), 20% buffer (80 hrs). Available: 480 - 16 - 60 - 80 = 324 hrs. If velocity is 40 points at full capacity, adjusted = 40 × (324/480) = 27 points. Use capacity to adjust velocity when team has unusual sprint (holidays, on-call, training).
Should I use story points or hours for estimation?
Story points recommended for most teams. Points are relative complexity (this story is 2x harder than that one), not time. Benefits: (1) Abstract from individual speed differences, (2) More stable velocity (hours vary by who does work), (3) Easier estimation (compare to reference stories). Hours when: Very small team (1-2), well-understood work (support tickets), external billing by hour. Hybrid: Points for planning, track hours for capacity (different purposes). Key: Consistency matters more than choice—pick one, use consistently.
How many sprints of data do I need for reliable velocity?
Minimum 3 sprints, ideally 6-8 for reliable average. Early sprints (1-2): Velocity unstable—team forming, learning, calibrating estimates. Mid-term (3-5): Pattern emerges, use average with caution. Mature (6+): Reliable baseline; use standard deviation for confidence range. New teams: Start with capacity-based planning (hours available), transition to velocity after 3 sprints. Warning: Major changes (team composition, tech stack, product area) reset velocity—treat as new team.
What is a good velocity for a team?
No universal 'good' velocity—it's team-specific. Factors: (1) Estimation calibration (some teams use 1-5 scale, others 1-100), (2) Story granularity (big stories = fewer points completed), (3) Team skill and domain experience, (4) Technical debt and code quality. Benchmarks (rough): 5-10 points per person per 2-week sprint is common. So 6-person team: 30-60 points. But a team doing 25 points of well-estimated, high-quality work is better than 80 points of poorly-scoped, buggy work. Focus on trend (improving?) and predictability (consistent?), not absolute number.
How do I handle velocity variance in forecasting?
Use range, not single number. Calculate standard deviation of last 6 sprints. Example: Velocities 35, 42, 38, 45, 40, 36. Mean: 39.3. Std dev: 3.6. Forecast: 39 ± 4 (pessimistic 35, optimistic 43). For 200-point backlog: Pessimistic: 200/35 = 6 sprints. Expected: 200/39 = 5 sprints. Optimistic: 200/43 = 5 sprints. Communicate range to stakeholders: 'We'll complete in 5-6 sprints, most likely 5.' High variance (>25% of mean) signals estimation problems or scope instability—address root cause.
Should velocity increase over time?
Not necessarily—stable is often better than increasing. Velocity growth reasons: Team gelling, better tools, reduced tech debt, clearer requirements. Velocity plateau: Team at sustainable pace, complexity matches estimates—this is healthy. Velocity decline: Burnout, increased complexity, technical debt accumulation, team changes. Warning signs: Pressure to 'increase velocity' leads to gaming (inflating points) or cutting quality. Better metric: Value delivered (features shipped, customer impact) not points completed. Sustainable, predictable velocity > artificially high velocity.
How do I plan sprints with varying team capacity?
Adjust commitment based on capacity factor. Steps: (1) Calculate normal capacity (full team, no PTO). (2) Calculate actual capacity (account for PTO, holidays, on-call). (3) Capacity factor = Actual / Normal. (4) Adjusted velocity = Historical velocity × Capacity factor. Example: Normal: 6 people × 10 days = 60 person-days. Sprint has 1 person on vacation (10 days out), holiday (6 person-days out). Actual: 60 - 10 - 6 = 44 person-days. Factor: 44/60 = 73%. If velocity is 40, adjusted = 40 × 0.73 = 29 points. Don't overcommit on low-capacity sprints.
What if we consistently miss our sprint commitment?
Diagnose root cause: (1) Over-commitment: Reduce planned points to 80-90% of velocity (build buffer). (2) Unplanned work: Track interruptions, allocate capacity (20% for bugs/support). (3) Poor estimation: Stories take longer than expected—break into smaller pieces, use planning poker. (4) Scope creep: Stories grow mid-sprint—enforce 'no new work' after sprint start. (5) Dependencies: Blocked by other teams—identify earlier, plan around. (6) Technical debt: Everything takes longer—allocate 20% capacity to pay down debt. Fix one issue at a time. Target: Complete 90%+ of committed stories.
How do I forecast a release date?
Use velocity range for probabilistic forecast. Steps: (1) Size remaining backlog (total story points). (2) Calculate velocity range (mean ± std dev). (3) Divide backlog by velocities for sprint range. (4) Multiply by sprint length for date range. Example: 200 points remaining, velocity 40 ± 8, 2-week sprints. Optimistic: 200/48 = 4.2 sprints = 8.4 weeks. Expected: 200/40 = 5 sprints = 10 weeks. Pessimistic: 200/32 = 6.25 sprints = 12.5 weeks. Communicate: 'Target 10 weeks, range 8-13 weeks.' Add buffer for unknowns (20% for first release, 10% for mature products). Under-promise, over-deliver.
Background & Theory
Sprint velocity and capacity forecast planning uses historical throughput data and team availability to predict future sprint completion, enabling realistic commitment and release forecasting that accounts for variance and avoids the systematic over-commitment common in traditional project planning.
Concept Overview
Velocity is empirical measurement: story points completed per sprint, averaged over 3-6 sprints. Not estimation of what team "should" do, but observation of what they actually accomplish. Example: Team completed 38, 42, 35, 45, 40, 38 points over 6 sprints. Mean velocity: 39.7 ≈ 40. Standard deviation: 3.4. Use for planning: Commit to ~40 points next sprint (or 35-37 for safety buffer).
Capacity adjusts velocity for availability. Normal sprint: 6 people × 10 days = 60 person-days. Upcoming sprint: 1 person on vacation (10 days), company holiday (6 person-days). Available: 60 - 10 - 6 = 44 person-days. Capacity factor: 44/60 = 73%. Adjusted velocity: 40 × 0.73 = 29 points. Commit to 29, not 40. This prevents over-commitment when team is short-staffed.
Forecasting uses velocity range, not single point. 200-point backlog at 40 velocity = 5 sprints (simplistic). Better: 40 ± 8 velocity. Pessimistic: 200/32 = 6.25 sprints. Expected: 200/40 = 5 sprints. Optimistic: 200/48 = 4.2 sprints. Communicate: "5-7 sprints, most likely 5-6." Stakeholders get realistic range, not false precision.
Key Variables & Intuition
- Team Size — Number of developers; velocity scales roughly with size (not linearly—communication overhead)
- Sprint Length — Typically 1-4 weeks; 2 weeks most common (enough time to complete stories, short enough for course correction)
- Avg Velocity — Historical points completed per sprint; primary forecasting input
- Velocity Std Dev — Variance in velocity; lower = more predictable
- Planned PTO — Days off during sprint; reduces available capacity
- Meeting Hours — Non-development time; meetings, ceremonies, reviews reduce capacity
- Backlog Size — Total points to complete; divided by velocity for sprint count
Assumptions
- Past velocity predicts future velocity (team composition, domain, tech stack stable)
- Story point calibration is consistent (teams don't inflate or deflate over time)
- Backlog is sized accurately (estimates don't change significantly during execution)
- Velocity is normally distributed (allows mean ± std dev forecasting)
- Team works at sustainable pace (no crunch that temporarily inflates velocity)
Limitations & Edge Cases
- New teams — No velocity history; use capacity-based planning until 3+ sprints complete
- Major changes — New team members, new technology, new domain resets velocity baseline
- Estimation drift — Teams may unconsciously inflate points over time (velocity looks stable, but stories are smaller)
- External dependencies — Blocked work doesn't complete; velocity drops unpredictably
- Technical debt — Accumulated debt slows velocity gradually; hard to forecast
Scenario: Team has 40 velocity for 6 months. New sprint: Add 2 junior developers (team 6 → 8). Expected velocity: 40 × (8/6) = 53? Wrong. Reality: Onboarding slows seniors (mentoring time), juniors are less productive initially, communication overhead increases. Actual velocity likely drops to 35-38 for 2-3 sprints, then gradually increases. Lesson: Don't assume linear scaling. Treat team composition changes as velocity reset. Monitor and re-baseline.
Interpretation Guide
Velocity per Person (2-week sprint):
- <4 points: May indicate large stories, high overhead, or difficult domain
- 4-8 points: Typical range for most teams
- 8-12 points: High productivity or well-calibrated small stories
- >12 points: Check estimation calibration (points may be inflated)
Capacity Percentage:
- >85%: High availability; can commit to full velocity
- 70-85%: Normal; adjust velocity proportionally
- 50-70%: Significant constraints; reduce commitment substantially
- <50%: Consider canceling sprint or very limited scope
Velocity Variance (Std Dev / Mean):
- <15%: Very predictable; high confidence in forecasts
- 15-25%: Normal variance; use range for forecasting
- 25-40%: High variance; improve estimation, reduce scope changes
- >40%: Unpredictable; address root causes before forecasting
Practical Tips
- Track velocity every sprint — Even if not using for planning; builds historical baseline
- Use velocity range — Mean ± std dev for realistic forecasts; single number is false precision
- Adjust for capacity — Don't commit to 40 points when team is at 70% capacity
- Leave buffer — Commit to 85-90% of adjusted velocity; absorbs surprises
- Don't game points — If pressure to "increase velocity," points inflate, forecasting breaks
- Re-baseline after changes — New team members, new domain = reset velocity history
- Focus on predictability — Stable velocity enables planning; high variance signals problems
Common Mistakes
- Using velocity as performance metric — Leads to gaming; velocity is for forecasting, not evaluation
- Comparing across teams — Different calibration makes comparison meaningless
- Not adjusting for capacity — Full commitment on short-staffed sprint = missed goals
- Single-point estimates — "We'll finish in 5 sprints" is false precision; use range
- Extrapolating new team velocity — Need 3+ sprints before reliable baseline
- Ignoring variance — High variance team needs larger buffer, not just average
When NOT to Rely on Velocity
- New team — No history; use capacity (available hours) until 3+ sprints complete
- Exploratory work — Research, spikes, prototypes don't have predictable throughput
- External dependencies — If team is blocked 50% of time, velocity is unreliable
- One-person "team" — Individual velocity is highly variable; hours may be better
- Kanban/flow — Continuous delivery uses throughput and cycle time, not velocity
History
Sprint velocity and capacity planning evolved from fixed-scope project management to empirical forecasting as agile teams discovered that measuring actual throughput was more reliable than estimating individual task durations and that capacity adjustments prevented the chronic over-commitment that plagued waterfall projects.
Origins & Why It Emerged
Traditional project management (Waterfall) estimated task durations, summed them, added buffer, set deadline. Problems: (1) Duration estimates systematically wrong (optimism bias), (2) Dependencies and integration time underestimated, (3) No feedback loop—learn project was late only at the end. Agile (Scrum, XP) emerged in 1990s-2000s with different approach: short iterations, frequent delivery, empirical process control.
Velocity concept formalized in early Scrum (Schwaber, Sutherland): Measure what team actually completes, not what they estimate. Story points abstracted from hours—relative sizing (this is twice as complex as that). After 3-4 sprints, team has baseline velocity. Forecasting: Backlog size / velocity = sprints to complete. Simple, data-driven, self-correcting.
The insight: Teams are bad at estimating duration but good at comparing relative complexity. Point estimates are more stable than hour estimates. And actual throughput (velocity) is more reliable than planned throughput (estimates). The practice spread: By 2010s, velocity was standard agile metric.
How It Evolved in Practice
2000s: Velocity as planning tool. Teams tracked velocity, used for sprint commitment and release forecasting. Common mistake: Treating velocity as productivity metric (pressure to increase). Better teams understood: Velocity is for forecasting, not performance evaluation. Stable, predictable velocity is better than high, variable velocity.
2010s: Capacity planning added nuance. Raw velocity assumes full team availability. Reality: PTO, holidays, training, on-call, meetings reduce capacity. Formula: Adjusted velocity = Historical velocity × (Available capacity / Normal capacity). Teams with significant capacity variation (support rotations, holiday seasons) used capacity-based planning.
2010s-Present: Probabilistic forecasting. Instead of single-point estimates, teams use velocity range (mean ± std dev) for probabilistic forecasts: "80% confident we'll finish in 8-12 weeks." Monte Carlo simulations (1000s of random velocity samples) provide confidence intervals. Tools (Jira, Azure DevOps) automate velocity tracking and forecasting.
Modern Usage Today
Modern sprint planning: Historical velocity (6 sprints), capacity adjustment (PTO, meetings), commitment at 85-90% of adjusted velocity (buffer for unknowns). Release forecasting: Range with confidence level. Continuous improvement: If velocity drops, investigate (scope creep, tech debt, estimation drift). If variance is high, improve estimation practices.
Common Misconceptions Historically
- "Velocity should always increase" — Sustainable pace matters; stable velocity indicates healthy team
- "Compare velocities across teams" — Estimation scales differ; 40-point team isn't faster than 30-point team
- "Velocity = productivity" — Measures throughput, not value; 100 points of waste is worse than 20 points of value
- "Points = hours" — Points are relative complexity; 8-point story might take different hours for different developers
- "Velocity is fixed" — Changes with team composition, domain, tech stack; re-baseline after major changes