Agile 101 Estimating delivery dates — part 2: refining estimates throughout the project
Introduction
In part one I explained how to estimate project delivery dates before your project had started. In this part, I’ve taken the same model but refined it so that you can calculate delivery dates (or re-calculate if you did the upfront estimate in part 1) once the project has started.
Why it’s important to re-calculate delivery dates during production
Not only is it useful for everyone involved to understand estimated delivery dates prior to production activities, it’s extremely important to refine your estimates once the project has begun. Up-front estimates are useful in so much as they help different teams plan and coordinate activities and to manage key stakeholder expectations around the bigger picture. But upfront estimates are the least accurate form of estimation. In order to continue to manage expectations, to refine plans and to make crucial decisions along the way (such as dropping a feature or shifting launch date) it’s important to regularly refine the original estimate based on data generated from the current project. Remember, estimates become more accurate the more you know about the project and the further you’re into the project (the only thing I can guarantee is how long it will take to complete a project once it’s complete).
The estimation
Your estimate should take the following formula:
Delivery estimate = (CE + WIP) / CR
Where:
CE = current estimated size of backlog
WIP = size of work in progress
CR = rate at which you complete work per day
This works however you size / estimate your project or even if you have ‘one size fits all’ tasks / stories.
Example 1 (with tasks):
Project is 18 days into delivery
Initial backlog consisted of 50 stories
4 stories in progress which were broken down to 7 tasks
6 stories complete which were broken down to 19 tasks
Average tasks per story = (tasks in progress + tasks completed) / (stories in progress + stories complete) = 26 / 10 = 2.6
Task completion rate = completed tasks / days into delivery = 19 / 18 = 1
Current estimated size of backlog = average tasks per story x stories remaining in backlog = 104
Size of work in progress = 7
Number of days to deliver = (104 + 7) / 1 = 111 days
Example 2 (with story points):
Project is 15 days into delivery
Initial backlog consisted of 20 stories
2 stories in progress which are estimated at 38 points
3 stories complete which were estimated at 48 points
Average points per story = (points in progress + points completed) / (stories in progress + stories complete) = 86 / 5 = 17.2
Point completion rate = completed points / days into delivery = 48 / 15 = 3.2 points per day
Estimated remaining points for project = (average points per story x stories remaining in backlog) + points in work in progress = (17.2 x 15) + 38 = 296 points
Number of days to deliver = 296 / 3.2 = 93 days
Example 3 (with unsized stories):
There’s a subtle but important difference to the calculation of the completion rate in this example because the project has been running for more than 20 days. I haven’t used the completion rate for the entire project but rather a moving average of the most recent 20 day period because it’s a more accurate reflection of current productivity. The general rule would be to take the most recent 2 or 4 week period for your calculation. Here, I’ve taken the stories completed in the last 20 days.
Project is 85 days into delivery
Initial backlog consisted of 30 stories
Backlog contains 5 stories
2 stories in progress
7 stories complete in last 20 days
Current story completion rate = 7/20 = 0.35
Number of days to deliver = ( 5 + 2 ) / 0.35 = 20 days
As we know, it’s rare that the scope of a project won’t change during the course of delivering so in part three I’ve covered how to include changes to your project in these calculations