Kanban Estimate is a simple and flexible technique for sizing user stories. It provides high level guidance, which is useful when there’s not enough information or detail about the user story to actually estimate in hours or points (i.e., you have a 20-foot backlog item).
The Kanban Estimate estimation method uses only three fields: Story Points, Ideal Days and Remaining Days. The field values are equal for all cards in a lane at a point in time. After analyzing these values over several sessions, it becomes possible to get insightful information about overall flow of work across multiple lanes and how many days it should take from start to finish for that type of work item. If the average team velocity is known, then planning for a new release is possible.
In support of the estimation method, I’ve created a Kanban Estimation Card in Trello Board and a Google Spreadsheet to make it easy for you to apply this yourself. The card has three columns: Story Points, Ideal Days and Remaining Days. You can use these values to make better decisions about your backlog items. Once a user story or bug fix is selected, just add its points on top of the list and use the spreadsheet to calculate the total number of days that will be needed to complete all work on cards in each column.
The Excel file contains two sheets: “Data” and “Estimate”. On the Data sheet enter your average team velocity (points per iteration) in column A (A3 on the screenshot). All additional data columns are already filled out for you. On the sheet Estimate, enter your current backlog items with their points, ideal days and remaining days (columns B to D). As you complete more sessions of backlog grooming, simply add more cards to this list. The numbers will be calculated automatically when you change an entry in one of these fields.
The most important thing about planning is understanding what makes up a good day for you. You can put anything that helps facilitate decision making into this field – velocity per team member, preferred working hours or anything else that makes sense for your projects. Enter average number of story points completed per team member in Ideal Days column. Remaining Days will be automatically calculated for you.
You should see the chart on the right side of the Spreadsheet page change to reflect your entries. Green bars indicate ideal days and dark green indicates available capacity, i.e., how many ideal days are left in this iteration. On the Estimate sheet, a bar is drawn if a day value was entered in the Remaining Days field of at least one card in a given column. Bars above 0 indicate that work from that column can be completed by end of iteration, while bars below 0 point out that you have undershot your velocity goal – there are more story points than remaining days!
Kanban Estimate Help You in following ways:
- It helps you keep track of all your progress across multiple categories.
- It gives you a quick visual tool for comparing the relative size of different features in backlog, which is useful because prioritization conversations are often “gut feel” or subjective decisions that have nothing to do with actual feature effort involved.
- You can use it as a simple bug/user story estimation mechanism when refining stories so everyone on the team has a common understanding about their relative size. This also works well for estimating point values for epics or user stories that are part of an epic.
- You can use it to monitor how much work remains before a release and adjust plans accordingly, basing these adjustments on observed velocity from past iterations instead of just trying to extrapolate how much work you can take on.
Finding the estimation range is similar to finding velocity or team capacity. You take your average points per day and divide it by two (the middle of the Fibonacci sequence) to get an upper limit; then multiply that number by two (the next highest Fibonacci number) to get a lower limit for story point estimation ranges. Use either one of these numbers depending on whether you want more or less accurate estimates. If you are trying to improve velocity, use the low estimate, if not go with high estimate. This will help smooth out inconsistencies in your team’s performance over time and give better practical guidance when using your backlog come release planning time.
For example: Your team’s average velocity is currently 8 points per day. So the range of story point estimates for this team will be [8,16]. If you are trying to improve your velocity, use the low estimate: [8,16]. What if in your estimation range you have estimated a really big user story and there’s no way it can fit in the regular iteration? The same technique we used above cannot just be used on that single “big” user story. You can break up that feature into smaller user stories (while keeping them cohesive) and continue using an estimation range like we did earlier until all the pieces fit nicely in regular iterations. But what if there aren’t enough days available to complete even one or two of those pieces? That’s when you start breaking down the release into iterations or Sprints.
Calculating Ideal Days for an Iteration
It’s time to see the fruits of our labor. We now have a wealth of information that can be used to derive ideal cycle times, capacity utilization and forecast completion dates for an iteration. The steps are as follows:
- Start by entering your team velocity on the Upper Limit line on the Sprints sheet in the Expected Realism column.
- Enter all user stories or epics (preferably sorted by priority) on rows after each other below your team’s velocity number. Put just one story per row with estimated numbers entered in the Remaining days column only . Do not worry about entering estimates into any other columns yet or even filling out the entire card at this point if you are using Story Points. The process of entering estimates will be explained in detail for both User Stories and Epics below.
- Now, choose the “Show Advanced” option on your screen to get access to other columns on this sheet which you can use to aggregate user stories into Sprints or iterations while checking cycle time expectations against capacity utilization while doing so.
- Select all cells under Reported by team (RBT) column for each Sprint/Iteration you defined above and enter the numbers from Ideal days column for that iteration in their respective places on the Capacity Utilization worksheet (highlighted blue). Once this number has been entered, it will instantly update percentage values shown under Capacity utilization column for each iteration on the Sprints sheet.
- Now, enter a number in the Expected Realism column on rows corresponding to iterations you defined above and all other rows will be automatically populated with RBT numbers from the Capacity Utilization worksheet.
Entering Estimates for User Stories For both user stories and epics, start by entering a number only in the Remaining days column for each of them one at a time until all of them have been entered. Then continue to the next step below depending on what type of estimation you are going to use: hours or story points.
Estimating Using Story Points One thing about using story points is that they are abstract units of value representing ideal development effort required to deliver something from backlog compared to other stories/features usually expressed as Fibonacci sequence—we don’t know how many “points” specific feature will take because it’s not related to specific hours of work needed to complete it. We only know that one story/feature is larger than another (or smaller depending on size convention your team chooses). So if you are using story points, the Remaining days column will need to be filled out by multiplying the number of points each user story or epic estimates.