Does the mob really use no estimates?
In the time that we have done development as a mob we have done no estimates for management. We value our time as a mob highly and spending that time making guesses about how long it would take us to do something rather than using that time to accomplish that goal does not make sense.
So how do you do it you say?
Well the answer is disappointingly simple. We keep the application deployable between each feature and often deploy it as soon as any one feature is complete. Since we have tests around all of our work we have a high level of confidence in what we have created. There is a light amount of exploratory testing before we are happy with releasing the application.
What about hard deadlines?
We have had projects that needed to be complete by a certain date. A hard deadline. This is an interesting scenario. I have been on projects at previous companies that had similar hard deadlines and we would spend a large amount of time estimating tasks that would then get prioritization and finally worked on only to find that the estimates were wrong and some features would be cut. The inverse is to use no estimates and prioritize each feature after the next.
Can you explain how you prioritize a little more?
SURE! When we start working on a project we meet with our end user and show them what we currently have. Then we ask them what the next feature they need the most is. We may collect 2 or 3 features, then send them off and work on those. As soon as each feature is completed we ask them if the others we have are still a priority. We find that usually they have new priorities because they have been using the latest features we developed. They often ask for something completely different. In this way we steer the project toward a better result than if we had predicted and estimated all the features.
Is this approach only for the Mob?
No, you can use the no estimate approach too! Anyone can approach software this way and I recommend it. If you are estimating projects you should consider what value (if any) they bring you ultimately. Ask yourself how often have estimates been wrong? How much time did you spend up front making the estimates only to find out they were useless. Did you prioritize a feature that is rarely used over a feature that was cut just because of an estimate?
The Reason Why
Each bit of work someone does in software development should not be repeated if possible. We want to automate repetitive work. Therefore any work done by a programmer is presumably new work. This is why estimates have no value, you cannot accurately estimate something you have not done before.
So No Estimates
It is a simple decision. Do you want to spend money on information that seems to have value but truly does not or do you want to spend your resources on more important matters? In my opinion, software development evolves at such a dramatic rate that estimates cannot be useful.