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 and asked whether it was important for them to become more proficient in estimating the level of effort required. I think it is very important and it is a skill that is often neglected in Agile development projects. Here’s why I think it is important:
- At a project level, there is a need for some kind of planning to estimate the scope of the effort and to set expectations of how long it is going to take to finish the project. Very few projects are given a “blank check” to get something done without some kind of expectations associated with the cost and schedule of the project and 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; and, in one case, the 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 when the project had to be re-planned and estimated.
- At a more tactical level within a project, there is an ongoing need for the Product Owner to evaluate the value produced by stories against the level of effort required to develop that capability to ensure that the work is being prioritized properly to maximize the value the project produces. If you only know the business value to be produced without an idea of the level of effort associated with it, it is very difficult to make a good decision about that.
- 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. It can be demoralizing for a team to never finish a sprint successfully because they weren’t able to accurately estimate the level of effort required.
There is no question that estimation is a difficult thing to do in an Agile environment, but the importance of doing estimation is not well-understood and 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 and that may be considered OK but that doesn’t have to be the norm for all Agile projects. It is not an all-or-nothing decision to be totally adaptive with no plan or estimates at all or to be rigidly plan-driven. There are plenty of alternatives between those two extremes.