I participated in a discussion recently on the subject of estimation in an Agile Project.
- The individual who started the discussion indicated that his team was not very good at estimating.
- He asked whether it was important for them to become more proficient in estimating the level of effort required.
Why Is Agile Estimation Important?
Estimation can be very important and is a skill that is often neglected in Agile development projects. There are different levels of estimation in an Agile project. Here’s why I think each of those levels is important:
Agile Estimation in Project-level Planning
At a project level, there is a need for some kind of planning to estimate the scope of the effort. That can be essential to set expectations of how long it is going to take to finish the project:
- Very few projects are given a “blank check” for a project without some expectations about the cost and schedule of the project
- In that situation, it’s irresponsible to not set and manage those expectations
I have seen Agile projects where the project has gone on-and-on for an extended period of time without a plan for when it would finish:
- In one case, a project was so large that it couldn’t possibly be done by a single Agile team, and
- That wasn’t discovered until well into the project
- At that point, the whole project had to be re-planned and estimated
Agile Estimation in Determining Business Value
At a more tactical level within a project, there is an ongoing need for the Product Owner to evaluate the value produced by stories:
- The Product Owner needs to compare the value of the stories against the level of effort required to develop that capability
- He/she needs use that information to prioritize he work properly to maximize the value that the project produces
- If the Product Owner only knows the business value of the work without an idea of the level of effort associated with it, it is very difficult to make a good decision
Agile Estimation in Sprint Planning
There is also a need to accurately size the level of effort that can be taken into a sprint so that it can be completed successfully:
- A team can become demoralized if they never finish a sprint successfully. And, that can happen if they weren’t able to accurately estimate the level of effort required
- Estimating the work to be done also allows the team to better allocate the work among people on the team to do it more efficiently
What’s the Right Level of Estimation?
The level of estimation can range from
- Very rough, high-level estimates to
- More accurate, detailed estimates
The right approach for estimation in an Agile project will depend on several factors:
|Level of Uncertainty||The level of uncertainty in the project is the most important factor. Naturally, the accuracy of any estimate must be proportional to the level of uncertainty in the requirements|
|Customer Expectations||The customer’s need for predictability is important. However, that obviously needs to be balanced against the level of uncertainty so that the customer expectations are properly set|
|Contractual Requirements||Any contractual requirements will also have a big impact. The nature of a contract might range from a very collaborative partnership to a more typical “arms-length” contract.|
There is no question that estimation is a difficult thing to do in an Agile environment and, the importance of doing estimation is not well-understood. For those reasons, developers sometimes resist making estimates.
- The important thing is to define the approach for doing estimation in the context of the project you’re operating in
- Some projects may have very uncertain requirements and may be very difficult to estimate
- That may be OK for some projects but that doesn’t have to be the norm for all Agile projects
It is not an all-or-nothing decision between:
- A totally adaptive with no plan or estimates at all and
- A rigidly plan-driven approach with highly detailed estimates
There are plenty of alternatives between those two extremes. What is most important is that the project team and the customer have a common understanding of:
- The level of uncertainty in any estimates and
- How that uncertainty will be managed.
You will find much more detail on this in my Online Agile Project Management Training.