I had the pleasure of recently eating dinner at Kitchen Market, a contemporary fusion restaurant in Tel Aviv’s port Namal. The restaurant is usually packed, so when we arrived we were seated in the only available spot – a pair of stools looking directly into the open kitchen. The dinner was incredible, and one of the best I had while in Tel Aviv – and my unique seating that gave me a literal front-row view of the inner workings of the kitchen led to some thoughts about software development, and how a team can deliver a stellar product that delights its customers.
Allow me to share some key points that I noticed about the restaurant staff tonight.
Everyone Understands What is Expected of Them
Every staff member of the restaurant had a clearly defined role and a set of responsibilities that went with it. The head chef designed new dishes and presented his vision for each new dish to his staff; a chef carefully checked each ingredient before beginning to cook; chefs rotated through cooking the various dish components; one chef concentrated on plating, organizing the empty plates in a sort of assembly line and carefully designing the presentation of all dishes precisely to the head chef’s specifications. Once the dishes were complete, they were transferred to the wait staff to deliver to the patrons, but not without being checked again by a final person who ensured all dishes were to be delivered exactly as requested and to the right table. The wait staff dedicated themselves to ensuring guests had a delightful experience, as they offered to serve us a “surprise menu” that they would select after asking us a few questions about our likes, dislikes, and dietary restrictions.
Everyone Cares About Quality
There was a hum in the air as everyone went about their individual tasks. The kitchen was essentially 10 feet of hallway, and yet there were always at least six chefs bustling about. The head chef set a clear and lofty standard for what the dishes in the restaurant should be, and every chef set about meeting or exceeding that standard with the work they completed. Though everyone did their work with the goal of delivering the best end product, the chef responsible for plating most visibly represented this as he stopped to tilt his head after placing potatoes or onions just so to consider whether what he had done was good enough. If not, he would immediately revise.
Senior Employees are Responsible for Training Junior Employees
As the head chef taught his apparent senior chefs about a new dish, the chefs took photographs and asked lengthy questions about aspects of the dish, until they felt satisfied they could replicate it themselves. The head chef took his time and patiently answered all questions he was asked, and referenced aspects of the dish as he described what went into creating it.
A junior chef attempted to make a complicated dish that involved delicately rolling up raw fish and organizing them on a plate as a set of upright cylinders (with tweezers!). He asked for feedback from a more experienced chef, who advised him that it was not quite right and demonstrated the correct way to place the fish on the plate and adjusted some of the pieces, all while explaining to the younger chef.
Mistakes Happen, and When They Do, You Fix Them
At one point during the meal, a waitress returned two dishes to the kitchen, and my best guess is that the patrons had complained that they were not hot enough. Without complaint, the chef received the dishes and immediately set to work reheating the dishes and then meticulously re-plating to the same exacting standards as the original dish.
From Delivering Dinner to Delivering Software
Is there one of these lessons that does not apply to building software? On a software team, we all benefit from having clear definitions of our roles and responsibilities; given this, we are able to rise to the occasion and even aim for achieving more than is expected of us. If we all make it a core part of our job to ensure that the end result of our individual work is a product of stellar quality – whether that is a clear and well-scoped design document, well-written code that meets our customer’s needs and delivers a pleasant user experience, or the careful review of a finished product to ensure that it delivers on the promise of its original conception – then the work of our group will also be excellent in aggregate.
When those of us who are more experienced spend time to respectfully and thoughtfully guide our junior team members, our whole team is enriched by the knowledge sharing. This includes sharing of team expectations of quality! And when we build a work environment where we acknowledge that to err is human and the important thing is to respond quickly and remedy the error, we build a team culture that ensures mistakes do not stop the kitchen. Rather, the mistake is addressed and the work continues on.
In the end, I had a delicious meal and a very pleasant experience. I really enjoyed watching this team at work. I hope that the team I work with, who works to deliver a rather different kind of product, can be as successful in helping to make our customers happy.