Personal note: I started this article about 9 months ago. Although it’s quite a fun article, I have become increasingly critical of the use of analogies to describe software development. My feeling is that analogies lead to assumption that may, or may not, be valid. So, rather than talk about building a bridge, a house or cooking Thai food I’d rather talk about software specific problems or situations.
After some personal doubt I finally decided to complete the article because it is amusing, if not insightful. I hope you enjoy the article. In the future I’ll endeavour to keep analogies far, far away.
Mae Phim is a small Thai restaurant in Seattle . I went there with my colleagues last year and we were impressed with their speed of operations. Within the space of a few short minutes, we were able to place an order and received a hot, freshly cooked meal.
Despite the short duration, it was sufficient time for us to wonder if there were any lessons here to use in Agile software development. After all, if we were able to deliver software as rapidly and with the same high quality as Mae Phim delivers food then that would surely be a good thing.
An interesting observation was that the business model for Mae Phim is common to the business model of other Thai restaurants [especially those that cater to the lunchtime crowd who present their own set of unique challenges]. This article discusses some of the characteristics of their operation and discusses the applicability (or not) to developing software.
General description of placing an order at Mae Phim.
Like many small restaurants at lunchtime, Mae Phim had a queue of people out the door. It was a popular place. A busy restaurant is usually an indicator of a good restaurant.
It only took a few minutes for our small little group to get to the front of the line and order. Deciding what to order was made simple by a picture of available dishes above the counter. Ordering simply consisted of calling out a number and the degree of spicy-ness (mild, medium, hot) that one preferred. All lunch dishes were the same price; $6 even. In anticipation that the majority of their customers pay with a $10 bill, Mae Phim had a stack of prepared $1 bills in groups of 4. Upon giving a $10 bill, I immediately received back a group of four $1 bills. Exact change without even counting!
Once the order was given it was passed onto one of two chefs. Each chef knew exactly what was required based upon the order placed. Each dish was complete after a few short minutes. After completing the order is packaged appropriately and passed back to the order taker for distribution.
Mae Phim operates in a very competitive business. Lunchtime customers can be demanding; they expect cheap food of a reasonably high quality, and they expect it within a 10 minute (or less) timeframe [price, quality and time]. If Mae Phim fails to deliver then there is always a Mexican or Chinese restaurant that’s willing to take it’s place. Having been in business a number of years, Mae Phim have evolved their business processes to a point where they are highly efficient. For the lunchtime customer what this means is they have a high ROI [more lunch for your money].
We know that Mae Phim is successful [they’re still in business after a number of years] and that they have a loyal customer base [they’re very, very busy during lunch], but how have they been able to achieve this? What are the characteristics of their operation that allow them to be efficient and to deliver upon their customer obligations?
More lunch for your money
I believe one of the reasons that Mae Phim is successful is because they have a very efficient process. I also believe that this process is not solely restricted to cooking, but is applicable to other endeavours. There are any similarities between Agile software development (specifically Scrum) and the Thai restaurant business model. They both attempt to turn customer requests into a tangible product within the shortest possible timeframe and with the minimum amount of unnecessary cost (ie waste). Lets look at the more obvious characteristics of the two models:
- Orders are queued. This happens naturally as customers walk through the door and line up to place an order. In most western cultures we expect to form a queue based on time of arrival and we can get quite upset when that order isn’t followed. Interestingly traditional software development (waterfall, RUP etc) doesn’t follow that convention; all “Highly Desirable” requirements are treated equally. Scrum requires that all Backlog Items are queued by business priority. In establishing a queued list of requires, both Scrum and the Thai restaurant model create a common understanding of the order in which requirements will be work on, and when the product will be delivered.
- There was no management. The entire process at Mae Phim is driven by the customer and the order in which their requests are given. Each chef simply takes the next task of the top of the list and manages his own work load. Similarly, Agile teams are very flat and work best as team of unique individuals all of whom are important to the team, but no one individual being more important (or having more status) than any other. The emphasis is on the team being able to solve their own problems … just like the cook being the best judge of his own impediments.
- The value chain is very, very short. The only hand-offs at Mae Phim were from the customer to the order-taker, and from the order-taker to the chef. With fewer handoffs there’s reduced likelihood for misunderstandings or incorrect assumptions. Software development typically has many, many handoffs and a very lot value chain. Anything that can be done to create direct communication between the sponsor (i.e. the person who is purchasing the software) and the development team is a step in the right direction. Agile software development (Scrum and XP) encourage the sponsor [Product Owner/Customer] to be a part of the team.
- Every chef was capable of cooking all of the available dishes. There was no separation of the tasks between the two chefs. Both we capable (and I assume expected) to be able to cook the fully range of dishes whether they were noodle, seafood or chicken. Similarly, Agile software development encourages a wide (and deep) knowledge of software development. This is important. Good practical decisions can only be made if there is a broad understanding of software. Of course, having a broad and deep range of knowledge is the ideal.
Okay, so that’s all very well and good, but now let’s also look as some of the difference between the two:
- There is a limited number of different requirements to select from. Mae Phim’s lunch menu has approximately a dozen (12) items to choose from. This is a luxury that software doesn’t afford; it’s just far too complex. Agile software development practices address this by limiting the size and scope of functionality that can be completed each Iteration. By developing software in limited chunks of time (2 weeks, 4 weeks, etc) the complexity of functionality is deliberately reduced.
- The cost of each requirement is fixed. This is related to the item above. Because Mae Phim has a limited number of dishes available, there is less variability in the end products. This allows them to offer fixed pricing on each of their dishes. Software is completely different in this regard. Not only are the requirements usually uncertain, there is usually a broad spectrum of different combinations and options. Scrum (and XP) tackles this problem but working in iterations and constantly working to refine the end product. By working in iterations, at least the cost is fixed to the cost of an iteration.
- Thai food tastes better than software. Thankfully, this will always be the case!
Small restaurants that cater to the lunchtime crowd have to be very efficient in order to survive in a tough competitive market. We are able to see some of the same efficiencies in Agile software development processes. But the analogy breaks down because Thai restaurant model is about producing food and not software. Importantly, it breaks down in areas that are critical to software development such as complexity and cost.
 Mae Phim Thai Restaurant
 “Starbucks doesn’t use 2 Phase commit”, by Gregor Hohpe
 Thai One On is my favourite Thai restaurant in the Seattle area.
Note: This article is also available on my personal blog at: http://KaneMar.Wordpress.com