Capacity Planning

Sprint Cadence

Capacity Planning is simplest when we have a regular sprint length. When sprint length changes, a lot of dynamics within the team will also change, adding a level of unpredictability into any predictions. For the sake of argument I will typically assume a sprint length of 2 weeks in this document (10 working days).

Simple Capacity Planning

The simplest form of team capacity planning is where you take the team velocity for their last three (or five if you prefer) sprints and take the mean average as the prediction for the next sprint.

NOTE: I will use last 3 sprints as my basis for all calculations in this description, but it equally applies if you would prefer to use last 5 sprints.

The great advantage of this is that it's simple and quick to do.

The disadvantage is that over holiday periods, or where the teams are hit with illness, it doesn't take that into account, so give wildly optimistic or pessimistic capacities.

Average Velocity = Sum(Last 3 Sprints) / 3 (sprints)


Taking Time-Off into Account

When we have important milestones around popular holiday periods we can add a layer of sophistication around this formula. We can take into account time off during the previous sprint and time off known about in the upcoming sprint.

We make the capacity of the team, at full strength a capacity of 100%.

We look at the number of Sprint man-days this represents as:

Sprint Man Days

Sprint Man Days = Number of Team Members * Working Days In Sprint


100% Capacity

100% Capacity is the theoretical capacity when Actual Sprint Man Days = Sprint Man Days

Actual Sprint Man Days

Actual Sprint Man Days is the number of days each team member was available to work in a sprint all added together.

Past Sprints

So if you have a 5 member team and a sprint length of 2 weeks (10 days) then your

Sprint Man Days will be 50 (5 * 10)

If one team member had 3 days holiday and another team member had 2 days off sick, then the

Actual Sprint Man Days will be 45 (50 - 3 - 2)


Future Sprints

This works looking forward too, you will often know when team members plan to take time off, although you tend not to know about future team member sickness.

Predicting Future Velocity

In order to predict a team's future velocity, taking time-off into account we need to figure out what their average velocity could have been if they were at full capacity. We'll call this figure 100% Velocity.


100% Velocity = Actual Velocity * (Sprint Man Days / Actual Sprint Man Days)

We can now average these 100% Velocity figures for the last 3 sprints:


Average 100% Velocity = ([100% Velocity for Sprint - 3] + [100% Velocity for Sprint - 2] + [100% Velocity for Sprint - 1]) / 3

So, we now know what the velocity would be if the team were at 100% Capacity, but these cheeky rascals probably want to take some holiday in the next sprint too!

We use the same technique to predict the upcoming sprint based on known time off:


Predicted Sprint Velocity = Average 100% Velocity * ( Actual Sprint Man Days / Sprint Man Days)

And there we have it. We now have our predicted velocity for next sprint, taking known time-off and sickness into account.

A Note About recording Sick Days and Other Non-Working Days

For this model to be most effective, you should record sickness and any other time off like bank holidays, training days, exhibitions etc. in a sprint. Let me use an exaggerated example to explain why:


Example with Sickness:

Lets say we have a sprint team with two team members.

For the last three sprints they have delivered 10 points. Let's assume they haven't booked any holiday.

So their Average Velocity is:

Average Velocity = 30 / 3 = 10 points

But, lets also assume that they have both had to take a week off sick every sprint for the last three sprints. If we don't take this into account, we would expect this team of two to have a velocity for the next sprint of 10 points, right?

Now, when we take their sickness into account we see that their capacity for the last 3 sprints was just 50%.

Using our formula to get their 100% capacity, we get:

100% Velocity = Actual Velocity * (Sprint Man Days / Actual Sprint Man Days)

100% Velocity = 10 * (20 / 10) = 20 points

So the team's Average 100% Velocity is:

Average 100% Velocity = ([100% Velocity for Sprint - 3] + [100% Velocity for Sprint - 2] + [100% Velocity for Sprint - 1]) / 3

Average 100% Velocity = (20 + 20 + 20) / 3 = 20 points

Which gives us a predicted velocity of 20 points, instead of 10 points, which seems a lot more achievable — if they're not off sick again in the upcoming sprint.

Template Document - Simple

The above calculations are included in a Simple Capacity Planning template I've created. Please feel free to copy and experiment:

https://docs.google.com/spreadsheets/....

Planning for Different Sprint Lengths

It is possible to plan for different length sprints, but just be aware we are adding unpredictability into any predictions.

To plan for various sprint lengths you need to choose your base length. I would suggest you choose the most common sprint length for this. If you choose a 1, 2 or 4 week sprint for your base length, then the calculations are a bit easier.

1 Week Base Sprint Length

Every day represents a 20% change in capacity for each person.

So if your variation is a 2 week sprint, then you start with a capacity of 200%, you then remove 20% for each day not working on sprint.

A 3 week sprint would be 300%, a 4 week sprint 400%.

2 Week Base Sprint Length

Every day represents a 10% change in capacity for each person.

So if your variation is a 1 week sprint, then you start with a capacity of 50%, you then remove 10% for each day not working on sprint.

A 3 week sprint would be 150%, a 4 week sprint 200%.

3 Week Base Sprint Length

Every day represents a 6.7% change in capacity for each person.

So if your variation is a 1 week sprint, then you start with a capacity of 33%, you then remove 6.7% for each day not working on sprint.

A 2 week sprint would be 67%, a 4 week sprint 133%.

4 Week Base Sprint Length

Every day represents a 5% change in capacity for each person.

So if your variation is a 1 week sprint, then you start with a capacity of 25%, you then remove 5% for each day not working on sprint.

A 2 week sprint would be 50%, a 3 week sprint 75%.

Add More Sophistication for Longer Term Planning

Now we have the basic calculations done, there are a few additional things we could take into account when planning for longer timescales (quarter or a year):

  • We know either exactly, or roughly how much holiday allowance an employee has, we know how much they've taken off so far, so we can make an allowance for their unbooked holiday in upcoming sprints
  • We know that someone leaving or joining a team has an impact, so we could make adjustments to the team's capacity based on leaver and joiner information

Template Document - Long Term

The calculations for these are a little long-winded to go into on a wiki page, but I've created a model Capacity Planning Google Sheet that can be used to plan for a year or more in advance, so please feel free to copy and experiment:

https://docs.google.com/spreadsheets/....