Five Easy Steps To Better Software Estimates
Software estimation is a tricky business. In most cases, you are supposed to project the duration of a project that has never been done before, with a team that doesn’t have the domain experience, and a client who hasn’t figured everything out yet.
While it seems like an impossible task, there is a pretty good way of going about it that many advanced agile organizations use.
There are just five key steps to follow.
1. Think Of Yourself As An Art Supplier
Think of user stories as various pieces of art — paintings, statues, sculptures, installations. It comes in all shapes and sizes, but the common thing is that each piece is very valuable.
Think of your team as a train that is supposed to carry that art from Developer City to Louvre.
There is just one catch though — you don’t know how much each piece of art weighs, and how much the truck can carry. All you know is that Louvre expects to know when the art is going to be at the museum, so they can announce the opening date.
You need a way to figure this out.
2. Estimate Your Art
Once you know user stories are really pieces of art, it’s time to pick a dozen of them for delivery.
Simply ask each team member to estimate how much they weigh, and answer any questions in the process. You can decide to estimate in points, pounds, kilograms or whatever unit you wish. Just make sure people understand they are estimating weight, not time.
Planning poker is a pretty cool way to do this.
3. Load The Truck and Start Moving
Once you’re done estimating, load a few of your user stories onto the truck and tell the team the Louvre expects them in a week (or two, if that’s the duration of your sprint).
The team must know this timing is fixed. If they doubt they can deliver everything, they can unload some of the pieces from the truck, but the sprint time has to remain fixed.
Louvre must get something by the end of the week.
4. Check The Delivery
Once the truck arrives at its destination, count the stories that got delivered. Check their estimated weight, and sum the numbers.
Oh look — you now know your team can deliver about 5 art pieces per week, or 1250 points in total (this is just an example of course, your exact numbers will differ).
Now you have a capacity of your team truck, and you can plan the next ride better!
5. Repeat and Project
For your next sprint, do the same — pick some stories, estimate them and measure how much weight you managed to pull at the end of the sprint.
Once you do this a few times, you will catch some slight variations in the delivery capacity between the sprints, and you will be able to calculate a reliable average capacity.
Now you can use this figure to easily estimate the time you will need to deliver everything to Louvre. Simply estimate all pieces of art you have in the shop — your backlog — and divide the total weight by the average capacity. So if you have 10 tons of art, and your average capacity is 1 ton per week, it’s going to take you about ten weeks to empty the shop.
- Use story points to estimate the weight of a user story. Never estimate time.
- At the end of each sprint, count the number of stories you delivered and sum their points to arrive at a team capacity. Average this number over several sprints to smooth out variations and come up with a reliable team capacity figure.
- Use the team capacity to project how many sprints it’s going to take you to get the whole product done. All you need to do is estimate each user story in the backlog and divide the total points with team capacity.