# Story point estimation with a little help from Marshmallow, Dude and The Gang.

Oct 11, 2016 · 6 min read

Software development is hard. It’s even harder if your release schedule is unpredictable and deadlines are frequently missed.

There are a few ways for engineers to estimate features. Time estimates are the simplest to understand, but they only tell part of the story.

Using points to estimate user stories gives a more complete picture of how complex each item is. Points also encourage lively discussions on what’s involved in delivering each story. However, engineering teams often struggle to move away from equating points to time.

“So one point is one hour… right?” — Engineer

After being frustrated by this process many times I tried a different approach. I introduced the concept of points with tasks that had nothing to do with coding. This helped the team become familiar with the system and kept the discussion focused on complexity instead of time.

After going through the steps with these alternative tasks, the team understood the concept of points and had a Mental Model of the theory that they were immediately able to apply to engineering tasks.

For this to work, the choice of alternative tasks is important. They need to be fun, relatable and encourage conversation without being too divisive. The tasks must vary in complexity and have an element of the unknown- just as engineering tasks do.

I settled on having my team assess how complex it would be to wash 6 different dogs. The dogs ranged from a well-behaved but dreadlocked hound (Dude) to a pack of puppies (The Gang).

This is what happened to our velocity after going through this process:

Interested in giving this a go? Gather your whole team (engineers, QA, product managers, designers) and follow the four steps outlined below. This process works better if everyone is there in person, but can be done remotely with a little more preparation.

# Task: Order 6 dogs by how complex they would be to wash.

Props:
- 6 printed photos of dogs. Use more dogs if you have a large team.
- 5 cards with the numbers 1, 2, 3, 5 and 8 written on them.

Present each dog to the team. As you reveal each dog’s photo, introduce it by name and give the dog a short description.

For example: this is Marshmallow. He’s fluffy and quite grumpy. He doesn’t enjoy being washed.

This is Dude. He’s a happy chappy but has very particular hair needs.

… and so on, until you’ve presented the six dogs and answered all questions about them.

*Bonus points if you know why Bo may be a little complicated.

Place the photo of Bo in the middle of the table. This is your Baseline Dog. The other dogs will be more or less complex to wash than Bo.

Take it in turns to go around the room. Each person can either pick an unplaced dog and place it above or below Bo, or move a dog that has already been placed. Everyone must take part, and each person must explain why they placed the dog where they did.

Keep going around the room until all the dogs are placed and agreement on the order is reached. Use a thumbs up/down consensus vote to wrap up if dogs are still being moved after going around the room a few times.

Remember the 5 points cards you printed? It’s time to use them.

Place the number 1 card above your Least Complex dog- in this case, Fred:

Give the number 2 card to someone in the room- let’s call that person Jeremy. Jeremy must place the number 2 card above the dog that he believes will be twice as complex to wash as Fred.

Jeremy thinks that Marshmallow will be twice as complex to wash as Fred.

Next up is Beatrice. Beatrice can either move a point card or place a new point card. Beatrice thinks that Jeremy overestimated how hard Marshmallow would be to wash. She thinks that he would be just as easy to wash as Fred. She moves the number 2 card.

Go around the room until all the dogs have a points value. Use a thumbs up/down vote to confirm consensus.

With the dogs below, The Gang has been judged to be 8 times more complex to wash than Fred.

Question: Why do the numbers go 1, 2, 3, 5, 8?
-
The larger a story is, the less likely you’ll be able to estimate it accurately.

Question: Why don’t the numbers go above 8?
-
If a story’s that complex you should break it down it to smaller pieces that can each be delivered in a reasonable time.

And… back to reality! Repeat this exact same process for your user stories:

1. Introduce the ̶d̶o̶g̶s̶ user stories, answering questions about each.
2. Order by ̶w̶a̶s̶h̶i̶n̶g̶ complexity to deliver.
3. Assign points to ̶d̶o̶g̶s̶ user stories.

Repeat Step 4 at the beginning of every sprint. Over a short time the team will be estimating more accurately and having valuable conversations about each story.

# What next?

The Scrum Alliance advocates strictly adhering to points for each sprint. Points do bring structure to planning meetings and provide a useful discussion prompt. However, they become unhelpful and monotonous if used for the sake of using points.

I recommend starting as I’ve outlined above then adjusting as needed, using points in a way that’s appropriate for your team. Hold a regular retrospective to work out the kinks without disrupting the planning process.

Further reading: This article from Pivotal (the king of agile and points) outlines a logical view on agile and points.

Are you thinking about running the dog-wash points intro with your team? Let me know if you have questions, and tell me how it went- I’d love to hear your stories.

Written by

Written by