Software development is unpredictable but people waste hours every week trying to guess how long tasks will take.
Estimation can provide confidence in future changes, but this doesn’t apply to software development because:
- If you can predict work then you should automate it instead of repeating it.
- If you can’t predict work then attempting to do so is a waste of time.
Automation Instead of Accurate Estimation
Repetition increases predictability. It isn’t possible to accurately estimate how long a task will take if you have never done it. In other words, the more you repeat a task the more predictable it becomes.
Repeated work should be automated. In software development the ability to re-use libraries, frameworks, and APIs means that repeatable work can be automated. The more you repeat it the more effort would be saved with code re-use and automation.
Accurate Estimates Correlate with Wasted Effort. As repetitions increase the value of automating and the predictability both go up. Therefore …
Inaccurate Estimation is Harmful
If the purpose of estimation is to plan around the future then inaccurate estimates can only lead to problems. This is compounded by the cost of estimating work in time and effort.
Instead of spending time and effort on estimating work that can’t be predicted or should be automated we should find alternatives. One of the most agile approaches is to work without estimates.
Working Without Estimates
Working without estimates is critical to good software development and goes hand in hand with continuous delivery. The simplest process to work without estimates is:
- Identify the most valuable task.
- Work on that task.
- Repeat.
It is important to consider the time spent on estimating work and the value it provides. This minimal process may be too strict for you but next time you are estimating your work consider the value it provides.
Follow Up Article: Deadlines Without Estimates
If you would like to discuss this further please contact me on Twitter @BenTorvo or Email ben@torvo.com.au