I’ve done three blog posts about #NoEstimates, you can find them here, here & here. They are all among my most popular posts. In this one, I will continue the ”series” with something that can be my most controversial yet?
(This is my favorite local pizzeria, picture taken from http://www.lillarottsollentuna.se)
Imagine the following conversation. I’m calling my favorite pizzeria to order a take away pizza.
Me: ”Hello, I would like to order a Capricciosa.”
Pizzeria: ”That will be 10-15 minutes.” (or ”tiominuterenkvart” as it says in Swedish)
There is nothing strange at all about this. I pick up my Capricciosa and enjoy a wonderful pizza with tomato sauce, cheese and ham.
Now to the next conversion, I’m ordering pizzas for my family.
Me: ”Hello, I would like to order four pizzas (one Capricciosa, one Kebab pizza and two Margherita).”
Pizzeria: ”That will be 10-15 minutes.”
This is an order four times bigger than the first one, but still the same delivery time. There is nothing strange about this either.
Finally, the last conversation, I’m ordering pizzas for a housewarming party.
Me: ”Hello, I would like to order twenty pizzas.”
Pizzeria: ”That will be …”
… something else than 10-15 minutes I can almost assure you. How come? Because the pizzeria knows their capacity! Their process has a very significant delimiting factor and that is the number of pizzas that can be in their pizza oven at the same time. This is their bottleneck. But as long as they keep control of the incoming orders and the number of pizzas in them, this is manageable. How can they control the incoming flow of orders? By simply not answering the phone if they are close to getting over their maximum capacity 🙂
How much effort do you think goes into their estimation process to come up with the ”10 to 15 minutes”-answer? A quick glance at the oven (to see the current capacity) and to deem the value of the order (number of pizzas) and then they can give a reply. That’s what I call #NoEstimates!
Do you know your capacity in your software development process? Up until recently I only had a hunch of ours.
The self-planning piano
But what if we knew our capacity exactly in software development. Then we could create a self-planning piano where very little overhead is needed for managing orders and planning projects. Orders simply come in, a standard delivery time is given (using a time span), they are placed in a FIFO (First In First Out) queue, and then they flow through our process and finally gets delivered.
The following things are needed to get the self-planning piano up and running:
- You must know your current capacity (and bottleneck)
- You must understand the scope of each order (to “accept or deny”)
- Your process must be smooth, allowing orders to flow through your system without to much of a problem (this is maybe the biggest challenge for software development)
- Don’t go over your capacity (by accepting to many or too large orders at the same time)
Like a self-playing piano not much overhead effort is needed when this is up and running! Wouldn’t you rather spend your time on actually delivering things than to estimate and pre-plan?
What if you go over your capacity? I.e., how to handle the equivalent of the ”20 pizzas order”? This could get you into delivery problems, it’s like a knot that will stay there until you assign enough people to unknot it. One answer is to refuse the order, it’s to big and will risk all the other orders coming in. This is something I’ve not seen happening often, a company wants to say yes to their customers almost no matter what the risks are. The other more agile answer is of course to try and make the delivery in smaller pieces (the pizzas are needed for a housewarming party where not all guests are arriving at the same time, so they will not be eating at the same time either).
For me this pizzeria-analogy tells me about an agile organization where it’s key to understand the capacity and of #NoEstimates in full swing. Can the self-planning piano soon become a reality in the software business? I don’t have the answer, but these are my thoughts on how to get there. Do you have something similar up and running already? Let me know and we can share ideas!