Continuous Delivery in a Restaurant
What value are you delivering?
A few days ago I spoke with Vasco Duarte & Johanna Rothman about delivering a product into production with defects and the resulting time it took with fixing these defects. And I had a picture in my head of how that would be in a restaurant (I have a son who is learning to become a cook, so I think a lot about how restaurants are organized).
For me, restaurants are a great example of continuous delivery:
- When you enter the restaurant, they ask you with how many people you are and they deliver you a table for four (or whatever you want).
- Then you order an appetizer and they bring it to you.
- While they deliver your drinks, they ask you what you want to eat, and then they make that and deliver that to you.
- While you eat, you might ask for some extra bread, french fries, water and they will deliver that to you.
- When you are done, you can ask for a dessert or a coffee and they deliver that to you.
Imagine that a restaurant has a KPI to deliver your food 10 minutes after you have ordered it.
You asked for a well-done steak. The cook knows it’s not well-done on time, yet the cook gets punished for not delivering the steak. All because the management created that KPI or expected the work to be done by a certain time — regardless of whether the work was done. In management’s defense, they might think it’s a timebox to have the work done, yet as you will quickly discover, that is not how the cook feels it.
The waiter thinks about the delivery bonus and takes the steak to your table. The steak looks delicious, just like the mussels that your partner ordered.
You both start eating. While you cut the first part of the meat, you already notice the steak looks more rare than well done. You don’t want to spoil the appetite of your partner, (you remember how thrilled your dinner partner was about this restaurant) so you don’t say anything and put the piece of meat in your mouth. Only when you start chewing, you realize, nah, this is not going to work. You call the waiter, they take the plate away and the cook fixes the meat.
As this restaurant is used to complaints, they also have KPIs for fixing the food. 7 minutes after the food came back to the kitchen, the food has to be back at the customer’s table. The cook is lucky, by the time the waiter comes back, this time the steak is well done. Before the waiter takes the plate away, the cook has a look at the rest of the dish. Uh oh, the french fries are completely cold, and the vegetables have dried up from being in the hot kitchen.
But, because it’s 6 minutes and 15 seconds, the cook says nothing. The waiter takes the plate.
You now have your well done steak, you are lucky, your partner is still busy eating mussels. You do notice that the rest of your plate is pale, you set the french fries to the side, you order an extra pot of french fries and wonder if this was for both of you, or just one person. (You don’t realize that because of the 10-minute limit, this restaurant always delivers everything in small portions.)
Next to the normal cook, this restaurant also has a table cook. You might think this is one of these fancy-schmancy restaurants where they cook the fish at the table, and indeed that is what the owner thought they were getting. In reality, the way the staff has organized this is to use the table cook for things they know can’t be prepared in 10 minutes. (The cook thinks they should add a well done steak to that list, yet they are sticking to the list of things a waiter came up with when they started this. ) So when someone orders beef stew, the cook starts in the kitchen and then the table cook finishes it off at your table after the first 10 minutes have passed.
After reading this story, you might think continuous delivery is a wrong concept for a restaurant. I personally think the opposite. It’s a perfect metaphor for CD, it even shows some of the misunderstandings about CD.
CD is about continuous delivery of finished products with the desired quality.
Delivering a non-finished product or a finished product with known bugs (that is not finished in my eyes, but some people make that distinction) is not what CD is about. Delivering a non-finished product is not what delivering interim value is about, either.
For me, CD is about automating everything between writing the code (aka creating the product) and delivering the product at a place where the client can decide to start using it.
In that sense, an all-you-can-eat buffet might be even a better metaphor as continuous delivery is not the same as continuous deployment. Delivery might be the buffet and the deployment when it automagically comes at your table.
Next time, when you look at the continuous delivery process at your company, try to think about what would be the restaurant equivalent of it. How would you like your restaurant experience to work?
Think about what you and your team release to production. How fast can you release completed work into production? If you release interim value, can you hide the unfinished work from the customer? If you feel the pressure of a timebox, how can you make the increment of value smaller so you can create happy customers.
Bon appétit to you and your team, for both your software and your restaurant experiences.