The Concept of Agile Estimation

Lets quickly recap the definition of ‘Estimation’:

Estimation (or estimating) is the process of finding an estimate, or approximation, which is a value that is usable for some purpose even if input data may be incomplete, uncertain, or unstable.

Wikipedia

Consider for a moment what an estimation means in your organisation, for most it is perceived as a solid deadline where you promise to deliver something on or before this time.  When given the definition above it would be very difficult to give an accurate estimation at the start of a project regardless of its size.

With agile estimation you are required to re-estimate at each iteration of a project life cycle.  As time progresses, milestones are passed and information comes to light our estimations get better, error margins decrease and a more accurate picture starts to emerge.  This concept is represented perfectly in the Cone of uncertainty:

Learn more about the Cone of uncertainty >

Rather than a new estimation being seen as a deviation from the original plan and a threat to the deadline, a deviation under this system is merely a more accurate approximation of the projects progress.

The cone of uncertainty has its roots in the waterfall methodology, where each iteration is a defined milestone (UI complete, homepage layout complete etc…). However it can be adapted to fit Agile nicely by replacing these defined milestones with ‘sprints’, and as each sprint is completed you’ll learn more about the project and be able to re-estimate and plot the information along the cone of uncertainty, reducing the margin of error and increasing the accuracy.

The whole concept of agile estimation is that you re-estimate at the end of each iteration, and the estimations will become more accurate over time.