Story points & Agile estimation

An important element in agile estimation is the use of story points. Here's an overview of story points and their usage.

So, what are story points?

A story point is an abstract and relative measure of size of an user story. Estimating size in story points should take into consideration all of the activities (such as design, development, testing, etc.) required to complete the user story, plus the complexity involved, any uncertainties and risks.

What scale is used to assign these values? And, what do the story point values mean?

First, the story point scale is chosen by the agile/scrum team. It may be t-shirt sizes (small, medium, large, extra large, ...) or Fibonacci series (tends to have a good spread) or a series of numbers. The requirement is for the agile team to agree upon and have a common understanding of the scale. The values by themselves are not important. The relation of one value to another is of significance. For example, if we have a scale with values such as 1, 2, 3 and so on the expectation is that if a story is estimated to have a story point value of 2 it implies that this story is 2 times the size of a story that has a story point value of 1.

When we talk of estimating "size", the general confusion is to associate "size" with "duration" or "effort". An user story can have varying effort estimates based on the individual implementing it. For example, an experienced person may take 1 hour to do a particular job whereas a less experienced or fresh person may take 5 hours for the same job. However, despite the varying effort estimates, the size of the job does not change. Story points are a relative unit of measuring this size. The confusion around the three terms - size, duration and effort lead to these being used interchangeably when they actually are distinct entities.

Duration is a derived metric while we estimate size. Before getting into the how of deriving duration, let us look at another term - Velocity. Velocity refers to the number of completed story points per iteration or the sum of the story point estimates for delivered/completed stories in each iteration. For example if an agile team completed five stories in a particular iteration wherein each story was estimated at 4 story points, the total story points completed in the iteration would be 5 x 4 = 20 story points which is the velocity of the team. Since velocity can fluctuate for various reasons, it is advisable to consider velocity across multiple iterations to obtain a stable measure. To derive duration, sum up the story point estimates for all planned stories in a project and divide this by velocity. This number represents the number of iterations required to complete the planned set of stories. Given the number of iterations required to deliver the planned set of stories and the duration of each iteration, we can easily find out the schedule for the project.