Allen Holub does a very good talk about not using estimates for prediction. In an agile context, there are far better ways of predicting how long things will take. For example, predictions can be made through continuously working. As we add stories to the product, and complete stories for the product, we begin to see trends of when the completion dates will be. This is due to two reasons.
- adding stories begins to slow over time, so the velocity (burn down charts) show the completion timeframe.
- some stories will be big, others will be small, but over time we begin to see the average story completion time, giving us some releatively good accuracy.
At the end, Allen Holub talks about how estimates are entirely waste, and we could have been programming instead. This is a critically important statement.
I used to be the president of a local figure skating club. I ended up volunteering to be a region rep as well. That lead to me gaining various understandings of how they manage high performing Olympic athletes. Essentially, they manage their nutritional intake, and a lot of other things, so that the athlete can focus on practicing every day for hours on end. It's critically important to do this, or they don't have time for that practice!
How they get better every day all comes down to neuroscience. As we practice, we damage our neural pathways. The body repairs and reinforces them, so that next time it doesn't get as damaged. The same thing happens with muscles. The insulation around the neurons protect the neuron from chemical and electrical interference, which makes it so that the person can focus extremely well. That's essentially why they are good at what they do, because of their ability to focus without distraction.
So, if the athlete has to spend time managing all these other "admin things", like figuring out what they should be eating, learning about nutrition, etc, they don't have as much time for actual practice.
When it comes to ALL skills, the effects are the same. Do we want our developers and sys-admins being low performers because they have no time to practice their craft? Or do we want them to be naturally high performers because they spend most of their day actually programming?
A dysfunctional organization has developers spending hours per day doing administrative work, including things like estimates, but a functional organization inverts that, preferably to the extreme. As Allen said, a manager's primary goal is to remove obstacles to the work!