Thursday, March 17, 2005
So a few of you have realized that I was being mildly flippant (well perhaps more than mildly ) when I suggested that you should STOP ESTIMATING! But I hope I got your attention.
By asking you to stop estimating, I’m suggesting that traditional forms of estimation - take a list of tasks, ask for a level of effort for each one (in man hours or days) - is a waste of resources. It’s better to have some form of inventory measure. A fine grained one based on some quick, broad and cheap analysis would be ideal - like Features in FDD - but anything else is just fine too, for example, Change Requests, Bugs, Scenarios, Use Cases, User Stories. Now don’t estimate them, but measure the velocity - how many you can do in a given time, and measure the variation in the velocity. Use this to estimate the mean time to complete a given batch of inventory and the required buffer for variation. Or flip it on its head and buffer an iteration appropriately and then use the mean velocity to calculate how many units of inventory you can take into the iteration and guarantee to complete them all within the given time.
It’s lightweight estimating - weigh the number of value units and multiple by velocity, and buffer for variation. An agile estimate should have a number of value units, a velocity, an end date and a buffer (or a measure of variation in velocity). That’s it. You shouldn’t be estimating anything individually. Fine grained individual estimates of effort are waste - muda! Just say “No!”