On Sprint Planning and Peeling Potatoes

Erez Rabih
Nanit Engineering
Published in
7 min readSep 29, 2021

--

I really like finding analogies between my work and “real” life. I recently found a cool one which I’m going to share in this post.

So what does sprint planning have to do with potato peeling? Apparently a lot! Let’s go for a ride.

The Grocery Store

Last Friday I went to the grocery store to buy some potatoes to cook for dinner. When I arrived at the store, I saw a heap of potatoes and they were all tiny, very small potatoes. I wasn’t glad, to say the least, to see these tiny potatoes — I knew I was going to work hard to peel all of them. I needed about 2kg of potatoes and I really wished to find 4–5 large potatoes I could easily peel but instead of that I had to purchase (and eventually peel) dozens of them.

I remember that all I could think about when I waited in line to pay was sprint planning. I didn’t know exactly how, but I had a strange feeling there’s a connection between these potatoes and story points. I could feel the thought crawling up my spine, arriving to my head and starting to get a form and a clear shape. And then it hit me — this is a great demonstration for why story points don’t add up!

Wait, what?!

Story Points

At nanit, we use story points to reflect capacity when we plan sprints. We also have a rough mapping between story points and estimated time for a task:

1 point -> up to an hour of work
2 points -> several hours of work (not more than half a day)
3 points -> half a day up to 2 days
5 points -> 2 days up to 5 days
8 points -> 5 up to 10 days of work

Now that’s strange — 8 tasks of 1 point add up to 8 points, the same as a single task of 8 points, but the time they reflect is significantly different:
8 tasks of 1 point add to up to ~8 hours of work
1 task of 8 points reflects ~5 to 10 days of work.
If we consider an agile team working in two-weeks sprints and a sprint velocity of 8 points — both fill up the team’s whole sprint but they sum up to a totally different amount of work hours.

So 8 tasks of 1 point, which add up to ~8 hours of work, takes the capacity of a full sprint, meaning it would take us two weeks to complete them. It’s understandable with a single task of 8 points since we have 10 work days in a sprint but it doesn’t make any sense for 8 tasks of 1 point.
Have we just proved mathematically that 8x1 != 1x8 ??
Are story points totally broken?

Of course not — back to potatoes!

Potatoes

To cook my meal, I had to generate 2kg of peeled potatoes. I could achieve that by peeling 5 large potatoes or 30 small ones. I was very frustrated to see they only had small ones because unconsciously I realized I would have to work harder to peel that 2kg heap of potatoes.
In other words I knew it would take me a lot more time to peel 2kg of potatoes if I had to peel 30 potatoes instead of 5.

If we try to think why does it take us longer to peel the same weight of potatoes, we can break it down to several reasons:

  1. Let’s start with the obvious one: there’s more peel to peel if we have more potatoes. Try to imagine a single, huge 2kg potato. Now split it in the middle to two 1kg potatoes — suddenly you have a peel in the middle right? and on both potatoes’ inner sides! That’s outrageous!

The minimum amount of work we would need to invest to peel 2kg of potatoes would be if we had a single 2kg potato. The more potatoes we have, the more peel we have to peel and that means we would have to invest more time to finish the job.

2. Every potato has a different shape, curves and angles. After a few repeated peeling movements, you start getting into the zone and peeling becomes easier and faster as your hand muscle memory adjusts to the potato’s curves, delivering a dance-like peeling experience. I’m exaggerating of course but I am sure you can relate.
Shifting between many potatoes breaks the flow of peeling since our hand has to memorize a new potato topology until it reaches top speed peeling and we’re “in the zone” again.

3. After peeling a potato, we might decide to put down our peeler, take a break or cleanup a bit before we move to the next one. If we had a single potato the chances for all of these to happen are slimmer since we’re already in the zone of peeling. By having many potatoes there are more options for mental breaks before we start peeling the next potato.
These breaks might prolong the total time it takes us to peel the 2kg potato heap.

So now we understand the practical reasons that make peeling a bag of 30 potatoes slower than peeling a bag of 5 potatoes, even if both bags are the same weight.

Let’s take this knowledge and apply it on the process of creating software.

Why Story Points Don’t Add Up

Explaining this fact now is going to be easy because, fortunately, each of the reasons described in the former section apply to software engineering in some way or another (each bullet refers to the matching bullet in the former section):

  1. The same way many potatoes have more peel to peel, many tasks imply more work: we have to commit the code, open a Pull Request, address the feedbacks, deploy to a staging environment, go through some sanity checks, deploy to production and eventually monitor our changes. This list of actions is per task and it takes time, so with each task comes the overhead of the activities we go through to deliver it. Eventually it means that delivering a task takes time in the same way typing the code for the task takes time and we have to somehow account for that when we plan our capacity.
  2. The same way that we start to peel faster when peeling a single potato, we work faster when we’re on the same task/project. The mental model of the project sits well in our minds, we’re getting familiar with the code topology and where we should make the changes and each project has its own domain and nuances that need to be taken into account.
    Working on a single project allows us to use the project-specific knowledge we gained and have faster progress.
    Jumping between projects (context switching) requires us to go through this cold start over and over again and by this slows us down.
  3. When we finish a task we have the tendency to take a pause before we go on to the next one. We might take a break, use the time to reply to emails / slack messages or read a blog post on the web. I’m not saying everyone work this way — there will always be those that can jump from a task to another task in a blink of an eye but many of us just need this pause to refresh our minds and take a deep breath before we deep dive into a new project.
    Working on a single project does not generate this artificial break so we can work continuously and use our time in a more efficient way.
    On the other hand, having many different projects generates more breaks and eventually slows us down.

Now that we understand that each task and moving between tasks slows us down, the fact that story points don’t add up suddenly makes a lot of sense.

If I have 8 tasks, each of them is estimated at 1 point, my work will be slowed down by all the reasons mentioned above so I will have to devote much more time to achieve these 8 points (in total).

If I have a single 8 points task I’ll be able to stay focused, won’t suffer from context switching and will work faster once I’m “in the zone” where my task’s mental model sits well in my head and I’m able to translate my thoughts to work more efficiently.

Summary

The fact that story points don’t add does not mean the story points system is broken, on the contrary: in my opinion this is where story points shine. It takes the number of tasks, the context switches between them and the overhead introduced by each task into account in our capacity planning.

If we would have estimated tasks by time (and not story points) we’d either have to take all of these into account ourselves or wonder how come we did not accomplish our goals for the sprint due to undocumented time spent moving between tasks.

Hope you enjoyed and don’t forget to pick those larger potatoes — it will make your life easier and your meal taste better :)

--

--