The Question: What should we do with extra capacity during Sprint Planning sessions?
The Answer: It depends. Isn’t that always the answer?
Before we dive into the response to this question, lets take a moment to review a few things about capacity and sprint planning.
- Teams measure capacity in hours. (Wondering what to consider when calculating an individual team member’s capacity? Check out the Capacity Planning Worksheet we have in the Agile Tool Kit.)
- Comparing tasks’ hour-estimates to the team’s available capacity to ensure authenticity. This helps the team avoid overcommitment.
- It is incorrect to pull a partial set of tasks for a backlog item. The goal is not “full utilization.” If the team will not complete the user story within the coming sprint, then the team should not start on it early.
It is quite common for teams to have “left over” hours, unallocated time at the end of a sprint planning session. In a perfect world, the team would have an item small enough that within the hours remaining they could complete all tasks. We all know that Agile teams live in an imperfect world.
So, what to do? Here are 4 great ideas for how to use your extra capacity.
- Pairing for Quality
- Pairing for Cross-Training
Pairing for Quality
You can think of this as traditional pairing. Putting two team members together to gain efficiencies in quality. Two sets of eyes on one task allows both the right-brain and left-brain to engage simultaneously. Dual perspectives increase precision and offer a systems-thinking lens to the activity. This allows for enhanced execution and assessment of overall quality. While it may seem inefficient on the surface, studies show the reduction in rework outweighs the cost of pairing.
Consider promiscuous pairing when allocating capacity. Expand pairing beyond two team members with the same expertise. (e.g. Pairing a developer with another developer.) Cross-discipline pairing has proven to be beneficial for teams as well. It is also the perfect segue to the second recommendation.
Pairing for Cross-Training
There is a spectrum of specialist → generalist. High-performing, cross-functional teams are not comprised of all specialists. If they were, then swarming and task sharing would be much more difficult. Strong teams have the right level of specialty in certain disciplines and also include individuals with general knowledge and understanding useful for many activities. (Consider reading The Life of Pi blog post by Tom Wessel for more information on growing this capability.)
Prevent bottlenecks and increase the ability for team members to take on tasks outside of their traditional area of responsibility by using extra capacity for cross-training. Testing activities are a great place to start; exceptional Agile teams are efficient and effective at swarming testing activities. That means every team member should develop expertise in the discipline of quality assurance.
You may also find it useful to pair developers with skills in varying technologies and languages. This provides opportunities for professional development and mentoring while team members increase their skill-sets.
“Getting a Story Ready” highlights that teams should avoid pulling an item for Sprint Planning unless it is “ready” for commitment. Backlog depth and ‘readiness’ are separate topics, but it is safe to say there is always backlog refinement to do. Leveraging extra capacity for refinement is a way to pay-it-forward and ensure future sprints will come and go with fewer impediments and gotchas.
Every system has technical debt. Extreme Programming (XP) practices tell us Refactoring is key to technical excellence. Agile Principles state technical excellence is essential for agility. If technicians on the team have extra capacity, use your available time to refactor a piece of code and make it better. The effort now, will make maintainability, scalability, and agility a lot easier in the long run.
What are your ideas for using extra capacity? Please leave your thoughts below!