Understanding historic capacity
Planning the future begins with reflecting on the past. We start by looking at a handful of key metrics:
- Investment hours: time spent on different categories of work, including roadmap, bugs, maintenance, security, and customer support.
- Story point velocity: the number of story points we tend to complete month to month
- Delivery record: how much of our previous commitment did we get done
Investment hours
The Investment Hours metric in Allstacks looks at all engineering activity in connected tools and assigns time estimates to each action based on each contributor’s unique behavior. Those actions and associated hours are then linked to the relevant epics, initiatives, and investment categories to accurately estimate where teams are spending their time overall. This data helps us understand how our time was divided so that we can set realistic budgets going forward. For instance, last quarter we saw that about 3/4s of our feature team’s time was spent on roadmap efforts, so we knew right away that we needed to reserve about a quarter of our time in the next quarter for unplanned work.
In Allstacks, organizations can report on their Investment Hours at any level they want: the overall breakdown for their whole organization, the breakdown at a team level, or even the breakdown for an individual. Each of these levels has its own unique capacity questions and concerns, so understanding the ratios at each of the levels you're responsible for, and understanding how they’re different at different levels, is key for planning.
Story point velocity
Velocity has been a key metric for agile teams for decades for good reason. Knowing how many points your team completes sprint over sprint, month over month, etc, gives you a pretty accurate picture of what you can expect going forward. To get the most value out of this metric, teams need to practice consistent estimation. We estimate everything we bring into our sprints, including bugs, so that we have as many reps as possible to hone our estimation skills. We look at our typical story point velocity trend at the sprint level to help us make reasonable sprint commitments, and we look at our story point velocity trend at the month level to validate our capacity to meet a quarter commitment.
Delivery record
Looking at our historic delivery record helps us assess our ability to make solid commitments. If there are things we signed up for in the previous period that we didn’t complete, it’s an opportunity to ask why we missed. Retrospecting on missed commitments leads to a better understanding of our true capacity to deliver. At the end of the day, our capacity isn’t simply a formula about hours and story points. It’s a holistic assessment of our ability to define and manage our work well so that we hit our goals.
Each quarter, we create a theme in Jira that contains all the initiatives we commit to complete by the end of the quarter. This makes it easy to review the status of our commitments throughout the quarter and make adjustments as needed. The primary ways we review this are:
The Deliverables Report
This is a special report in Allstacks that tracks milestone progress and forecasts delivery dates based on the team’s recent and historic behavior. Items that are off track or late are invitations to retrospect, get a shared understanding of what went wrong without finger-pointing, and do better next time.
Quarter Commitment Dashboard
This is a dashboard we built for ourselves in Allstacks that brings together several key metrics into one view that tells us how we’re doing. The trends highlighted in this dashboard help us understand risks and threats to our capacity.
Using this information to plan effectively
Knowing our historic capacity enables us to plan effectively in the following ways:
- Budgeting sufficient time for interrupt work: Unplanned work is by definition unpredictable. However we find that while there can be a lot of variability within a given week or sprint, over the course of a month or a quarter, the spikes even out into a very predictable overall ratio. By keeping tabs on the trends in Allstacks, we’re able to manage the spikes and stay on track.
- Commiting to well-defined, estimated initiatives with confidence: Armed with a realistic budget for roadmap work, we can confidently commit to estimated work up to that budget.
- Avoiding wasting time planning and estimating work we don’t have time for: Knowing our capacity going into planning lets us confidently draw a line between the high priority items we need to work on refining and the lower priority items that have no reasonable chance of getting done.
Continuous improvement is achieved through regular check-ins on a per sprint basis, monthly basis, and quarterly basis. These feedback mechanisms ensure that we stay aligned and make adjustments as needed, and ensure that we’re always practicing and getting better at managing our capacity.
Conclusion
Understanding capacity is vital for successful planning. By understanding how time was spent in previous months and accurately estimating future capacity, teams can set realistic goals and drive productivity. At Allstacks, this approach has proven invaluable, ensuring that our plans are both ambitious and achievable. Embrace the power of capacity planning to unlock your team's potential and achieve greater success in your projects.
Written By: