Story Points: The Theory of Relative Estimation

What is a story point? This is a question Scrum Masters often hear from new development team members. They may even hear it from development team members who have worked in agile environments before, but were previously too afraid to ask. Unfortunately, this is a common occurrence. The idea is a simple one, but a dramatic departure from the way things work in the waterfall world, and thus begins our journey to understanding what story points (also known as complexity points) are and why they’re difficult at times to wrap our heads around.

Let’s take a look at a scenario many of us are familiar with, and estimate some common household chores using a waterfall-based approach compared to a point-based approach.

Consider that the chores you’re looking to estimate effort for include taking out the trash, gathering and sorting the mail, cooking dinner, and doing the dishes. In a waterfall-based approach, you would have a Gantt chart with all of these chores listed (as the lowest level of work), hours estimated for all of these chores, and maybe some dependencies reflecting the order in which these chores need to be completed.

n theory, this works out great because you’re capturing what chores need to be done and how long it will take for each chore to be completed.

Challenges arise when it comes time for you to estimate the time it will take to complete each chore due to a number of real-world factors. These factors may include the many small steps involved to complete each chore, dependencies on other tasks, and other yet-unknown factors.

How to Estimate: Waterfall vs. Story Points

Let’s look at this in practice: the chore that we’d be estimating is doing the dishes. In order to consider the amount of time it would take to do the dishes, we need to consider at least the following:

Who is doing the dishes? I tend to be twice as fast as my wife, but there’s no accurate way for us to know which one of us will do the dishes on the night in question.
How many dishes are there? This would depend on what our meal will be, and how many people will eat.

In a perfect world with none of these external constraints and every factor predicted, this would be valuable information because it may accurately identify the amount of time it would take to complete each task.

Unfortunately, we don’t live in a perfect world. Many things are unknown, and things change on the fly often, so we need to find a way to estimate the time it would take to complete each of these chores by taking into account the various aspects of each chore that we didn’t document in our waterfall-based approach.

These aspects include:

the level of complexity for a given chore
the time it would take to complete all of the tasks for that given chore
the unknown variables surrounding each chore
any dependencies that each chore may have which may make it easier or more complicated to complete
The beauty of story points then, is in their simplicity. With story points, we don’t need to know all of the nitty-gritty details about each chore and the tasks under those chores, we just need to know how complex each chore is compared to the other chores that we have to do. In other words, it’s a rough-order-of-magnitude (ROM).

In order to do this, we first assign arbitrary numbers to each chore quantifying their level of complexity. Let’s look at our list of chores and select what we think is the simplest chore with the least amount of variability: taking out the trash.

We know that taking out the trash is pretty routine; it happens every Tuesday, we always have the same round that we do throughout the house to consolidate the various trash bins, and once the trash is consolidated, we take our trash bags out to the master trash bin, wheel that bin to the curb, and call it a day. Since the level of complexity and unknown factors regarding this chore are low, we’ll quantify it as a 1.

Now let’s look at one of our other chores and quantify its level of complexity relative to taking out the trash.

The chore we’re going to look at is gathering and sorting the mail. There’s a bit of variability with this chore since the amount of mail that comes in every day is different; on Monday it may just be a Penny Saver and a bank statement, while on Tuesday it may seem like every bill on earth was sent to your house requiring immediate attention.

Since we know that this chore is more complex than taking out the trash considering the level of unknown and the amount of attention that will be required, we simply have to estimate how much more complex it is than taking out the trash.

If we assume that gathering and sorting the mail is 3 times more complex than taking out the trash, we’ll assign it a point value of 3. Similarly, if we know that cooking dinner has a high degree of variability since we don’t know what we’ll be cooking until the moment of, and we don’t know whether we’ll have all the ingredients required or whether we’ll need to run to the store for a quick grocery run, we can estimate that cooking dinner will be twice as complex as gathering and sorting the mail; giving it a point value of 6.

What Do Story Points Mean?

While this is all great, there’s no real value being derived from assigning these relative point estimates to your chores unless you’re using them in some meaningful way.

That’s where story points begin to tie into agile methodologies like Scrum or Kanban. To continue our scenario, we’ll use a continuous flow method like Kanban, which is essentially a task board that we’ve stuck to our kitchen wall with a few different columns: chores not started, chores in progress, and chores completed.

Let’s assume all of our chores are written down on independent sticky notes and are all sitting in our chores not started column. As we begin to work on our chores, we move the corresponding sticky notes over to our chores in progress column, and naturally as we complete them, we move them again to our chores completed column.

At the end of each day, we’re able to see which chores were completed, but more importantly, we start to see how many story points worth of work we’re able to get through each day by aggregating the point values across the sticky notes.

This is where the value of story points begins to really take shape.

By knowing how many story points worth of work we’re able to get through in a given day, we’re able to see how productive our team, or in this case our family, is at getting their work done. This is super helpful when planning the next days’ worth of work, since we’re going to have a relative baseline for how many story points we’re able to get done given the capacity we have in that day to dedicate to our chores.

By knowing how many story points we’re able to complete on an average day, we’re able to plan better (by not biting off more than we can chew), which contributes to a sense of completion, and keeps everyone energized by checking off their to-do list in a continuous and efficient manner. It also helps us forecast how much more work we might be able to complete if another person were added to our team, or conversely, if someone was away on a business trip and we lost capacity for a few days.

Take Away

Though our scenario looks at how we can use story points in our homes to keep our household chores chugging along, we use them in a similar fashion at work. Many of us are on agile teams where we participate in sprint planning sessions every 2-4 weeks and self-assign stories to work on during that period.

By baselining the team on what kind of work we consider to be valued at 1 story point, we’re able to estimate each of our stories for the sprint and determine how many story points we will reasonably be able to commit to for that period. Knowing this information helps us set a lower story point target over the holidays when folks are out of the office, or let management know how many more team members we may need if management wants us to get a lot of new work turned around in a short period of time.

Simply put, story points are ROM estimates that we assign to work in order to help us plan our upcoming workload more efficiently. The goal then, isn’t to remain in a state of ever-increasing velocity, but rather to identify and achieve a sustainable velocity that keeps the team ticking along like a beautifully designed Swiss watch.