Software development is alien to a lot of people and explaining it in technical terms really makes it worse. So, we use metaphors. Lidor Wyssocky says it is like a broken telephone. And there have been many more attempts, to compare it with the construction industry with similar roles – architect, designer, developer (?) or manufacturing. Here is my attempt.
Software Development Is Like Running A Restaurant
This is the closest metaphor I can find today. To serve the customer that satisfies his/her needs, to provide tasty servings that are unique enough to make you standout but still within the realms of expected quality and standards is what we both do. It requires a delicate balance of creativity, engineering, understanding of the customer’s needs and other constraints like time and budget.
The waiter has to not only provide the menu but also gather what is it that the customer is looking for. Most of the times the customer does not what to order because he is not familiar with the culinary skills. It is upto the waiter to get the information, and help the customer choose a course. The course is split into parts and include the condiments like wine or starters are part of the order, they are the ones that complete the experience.
Once the order is taken, it has to be given to the kitchen so that the chefs and use their knowledge and skills to work on the order and create something that will satisfy the customer. There should be good information flow and collaboration between the dining area and the kitchen so much so that the customer feels that they are one and the same. The chefs have to be careful to select the right ingredients and the right combinations and the right proportions. Any change in this will cause a change in experience to the customer. However, the chefs cannot have all the time in the world, they have to serve before the customer gets frustrated waiting for the food. If the customer is hungry it might call for a different order or an expedited preparation. The decision involves not only the chefs’ skills but also the needs and constraints of the customer.
In the kitchen it is a different ball game for the chef. He has to design the dish, along with managing and motivating his team to complete the dish in time with a certain quality. This calls for samplers, tasting (or testing), good people management and good communication. Typically the kitchen ends up serving more than one customers which requires good estimation and scheduling skills.
Sometimes it makes sense for the chef himself to come up and talk to the customer. A lot of times problems raise their ugly head, like lack of seating or local problems like loss of electricity or disasters in the kitchen. The restaurant needs to have a good manager who can handle these situations and keep the customer abreast. A good restaurant will like to take the customer’s feedback and suggestions, and factor them in their improvement. Unless this experience is good, the customer is not going to revisit the restaurant or suggest it to his colleagues or friends.
Last but not the least, it is important for the restaurant to realise that every customer is unique. The same course need not satisfy all the customers, the restaurant has to consider and treat every customer individually and serve individually.
All this has to happen while making sure that the customer does not feel that he has been handed an expensive deal. The restaurant should still keep making money, and hopefully good profit so that some of it goes back in improvements of the restaurant and stay updated to the trends. The restaurant has to, in the background, make sure to manage the raw materials and manage the vendors.
And you see all kinds of restaurants – from the five star ones where there is a hierarchy of waiters to the ones who are affiliated to hotels and lodges to the three star ones, the Thai, Italian, Mexican and such specialized ones to the mass caterers to the diners to the ones that are part of a food court in the malls to the ones who give take-aways to the ones on stalls on the road.
It Is Still A Metaphor
Having said all this, running a restaurant is still a metaphor. The biggest difference is that the software development is about automation that is expected to serve for a longer time. This is what makes it complex, it is expected to serve for a time in which the customer’s needs and requirements keep changing.
Copyright Abhijit Nadgouda.