Story points and velocity

What are story points?

Story points are an invented, team-local, measure of the innate complexity of a feature or story. How do we estimate using invented measures?

  • In the first release:
    1. Sort the stories from easy to difficult. Create an absolute ordering by comparing each new story with those already on the table.
    2. Assign the easiest story 1 point. Assign the most difficult one 5 points. You may choose another range of numbers, but keep it small. This helps “level the load or “Heijunka
    3. Divide the other stories into 5 groups, where the stories in each group have about the same difficulty. Give the stories in each group 1, 2, 3, 4 or 5 points.
    4. Done!
  • In the next releases:
    1. Compare the new story with one or more existing stories, which have already been estimated (and preferably implemented) and seem to have the same difficulty. Give the new story the same number of points.
    2. Done!

The only important thing is that the stories are estimated consistently.

You still don’t know how many stories you can implement…

What’s velocity?

Velocity is another invented, team local measure of how much work the team can do. Velocity is the number of story points’ worth of stories the team can implement in one release. How do we know our team’s velocity?

  • In the first release:
    • We don’t know, so we’ll guess.
    • Halfway the release we know a bit more: we’ll probably implement twice as many as we’ve already completed.
  • In the next releases:
    • We use the sum of the story points of all stories that were implemented and accepted by the customer in the previous release(s).

How many stories can you implement this release? Velocity points worth.

Why use this two step process?I feel it divides estimates into two separate factors:

  • Story Points tells me the innate complexity of a feature. I don’t expect this value to change over time. If we want to get more done, we can work with the customer to look at the stories critically and see if there’s no way of simplifying the story (and thereby reducing its cost estimate), without significantly affecting the story’s value. Story points are quite imprecise and reflect that my estimates are also quite imprecise; they give none of that false sense of precision that estimations in man-hours/day give. Over a whole release, the imprecisions of the estimates mostly cancel out.
  • Velocity tells if the team is speeding up or going slower if the story point estimates are consistent. If we want to get more done, we can look at various ways to improve the team’s performance. Velocity is a great way to quickly see the effects of various interventions. E.g. if we spend some time refactoring a particularly nasty piece of the code, I would expect our velocity to go up after the refactoring. If we skimp on code and test quality, I expect our velocity to go down.

Keeping the cost of stories low is a joint responsibility of customers and developers. Keeping velocity high is the responsibility of developers.