Why Restaurants aren’t run by the Software Industry

Last week, I attended a great cooking class as part of my Architect Bootcamp delivery in Denmark. It is really impressive to see how this industry understands the streamlining of the creation of a meal but still is able to ensure the highest level of quality. While we were preparing parts of our own meal, I started to think what would happen if our industry would run a restaurant:

Let’s imagine the experience of a dinner in a restaurant that is run by the methods and principles of software development:

You entered the restaurant and the waiter guides you to your table. After you’ve been seated for already 15 minutes you start to wonder when he is going to present you with the menu. At this stage you can’t know that many waiters also act as cooks and the reason for this delay is based on fact that he currently was cooking a dish for table #5. After another 15 minutes the waiter finally made his appearance and asked you what you want for dinner. Since this is not your first time in a restaurant, you wonder why he is not presenting you with a menu. Based on experience there exists only one possible reason for that: They don’t offer an “a la carte” menu and there is no need for you to specify your choice. You just order the multi course gourmet menu, that’s it. But wait a minute; this restaurant is run by the software industry: You can order whatever you want! You only have to ensure that the waiter understands what you mean by “medium” or “well-done”. After a lengthy discussion about the different type of meat you decided to order a lamb shoulder on herbs and served with a red wine sauce. As a side dish you wanted something that another restaurant called “potatoes a la Provencal”. Regrettably, you’re unable to explain this dish in a way the waiter understood so he suggested you should go with rice. The waiter disappears in his kitchen and starts to cook your meal: First, he’s looking for appropriate cooking books containing a suitable recipe. After a couple of minutes he found something: It was a recipe for a beef roast with a delicious red wine sauce. If it works for beef why shouldn’t it work for lamb? When he was trying to organize a lamb shoulder he realizes that this is going to be more expensive than expected so he decided to replace the lamb trough pork. But the real trouble started as soon as he wanted to create that delicious red wine sauce. He suddenly realized that the sauce is based on a stock that itself is a reduction of 110 liter of water together with 10 kilograms of beef bones. Making such a stock takes ages because it will be cooked until only approximately 8 liters of intense and concentrated beef stock is left. That was the point where he decided to replace the red wine sauce with the leftover of the previous meal: a sweet curry sauce… All in all more than an hour later, the waiter also known as the cook serves your dish: “A nicely roasted pork shoulder on a sweet curry sauce served with rice”. This is for sure a nice dish but just not what you ordered. As if this wouldn’t be enough, the dish was even more expensive than agreed. The restaurant argued that everything was especially created for you and therefore they couldn’t accurately predict the cost… as if you would care…

While analyzing their approach I came up with some interesting points that may help our industry to better understand how we can become more efficient

  • To deliver on the highest level of quality, you need to be specialized. Not only are most restaurants categorized (Thai, seafood) but the smaller the menu, the more likely the ingredients are fresh (freshness increases the quality).

  • To create a dish fast and on the highest level of quality you are required to focus on a small number of dishes. This allows you to think about the streamlining of the preparation and you’re able to prepare the different “building blocks” in advance.

  • To avoid misinterpretation provide your guests with a menu. Also be aware that they might be unknowledgeable of the domain specific expressions such as “Pommes Dauphine”.

  • To deliver on time, planning and preparation is essential. When the chef is planning a new dish, he is not only thinking about the recipe but also about the way he can streamline its creation. What are the “building blocks” that need to be prepared upfront (such as the stock), what is the stuff that will be prepared before the restaurant opens (such as cutting onions or herbs), what are the required tools (e.g. steamer)… For a restaurant, a successful dish doesn’t only require a great recipe but also clear descriptions of the requirements, different building blocks, tools and a process that describes how to cook a meal on a consistent level of quality.

  • Prices are based on a transparent calculation based on the cost for ingredients and the time needed to prepare that dish.

It’s very promising to see that these points are addressed by the four “pillars” of Software Factories, so stay tuned for the second part of that post…