How Writing Software Is Like Making Sushi
I recently watched the 2011 American documentary, Jiro Dreams of Sushi, on Netflix. The film profiles Jiro Ono, an 85-year-old sushi master and owner of Sukiyabashi Jiro, a Michelin three-star restaurant. Sukiyabashi Jiro is a 10-seat restaurant located in a Tokyo subway station. They only serve sushi and they only serve a 20-course omakase menu.
How does this all relate to software engineering?
Masuhiro Yamamoto, a famous Japanese food writer, was interviewed during the documentary where he outlined what he believes are five attributes of a great chef (and how Jiro meets all of these). Instantly, I can see how these attributes are very much transferable across different crafts including software engineering.
5 Attributes of a Great Chef:
- Take your work seriously
- Always aspire to improve your skills
- Cleanliness
- Impatience
- Passion
1) Take your work seriously
Yamamoto equates this to consistently performing at a high level. Diners expect their meal to be the same or better from a year before. For software engineering, having a predictable cadence of delivery is very important for the success of the project because it makes planning a lot easier. Consistency is the key to trust, and trust is hard to build and easy to lose. Mario Batali, in a recent LinkedIn Speaker Series, said: “if you start something you should finish it”.
This is a common problem for many engineers, as evidenced by empty projects on GitHub with a cool name. There is a challenge of getting a project across the last 10% of the way to launch, which is why we have this whole "definition of done" industry popping up.
2) Always aspire to improve your skills
Chefs need to always improve their menus, technique, and execution to account for the changing public palate or the way we eat. Similarly, the journey never ends for software engineering professionals, technologies change faster than anything else and one should make sure to have their skills up to date. There are a number of ways engineers can do this from reading your r/[ProgrammingLanguage] subreddit to browsing through HackerNews and keeping a pulse on your network on LinkedIn. There just has to be that key repetition of learning in order to have a foundation for future success.
“You have to fall in love with your work. Never complain about your job. Dedicate your life to mastering your skill. That’s the secret of success, and is the key to being regarded honourably.” - Jiro
But the one thing I’ve seen engineers I admire do is to also improve skills in areas outside of engineering. This can range from the practical skills such as management, interaction design, and writing to completely unrelated skills like cooking, music, and theatre. What this does is to open up new ways of problem-solving from different angles outside of just engineering.
3) Cleanliness
For a chef, cleanliness can mean the difference between an A or B health rating, or how the diners feel when they enjoy your creations, or even the success of the restaurant. It is very important not to overlook cleanliness and organisation as it directly pertains to the quality of the restaurant.
This attribute is often overlooked in software engineering. The media portrayal of a software engineer is a chronically disorganised straight white male who cares more about the code he writes rather than his outward appearance or if he took a shower that day. This, as we all know, is a brash stereotype that does not represent the community as a whole. The best engineers I have worked with have been clean in terms of their work.
What does being clean mean?
- Having meticulously organised notes so you never ask the same question twice by retaining knowledge in an easy to access way in the future
- Being on top of your synchronous and asynchronous communications, from emails to messages in LinkedIn, Slack, Facebook, etc and even attending in-person and remote meetings
- Writing code that is not only performant and performing to spec, but also adheres to the style guide and is readable by even novice engineers (for example, writing comments or developing self-documenting code)
- Writing documentation and communication (both sync and async) in the same manner following your own personal style guide to grammar and formatting
In the same way, where food would not feel right in a dirty restaurant, code and the product it has been written for will not feel right if it is not clean.
4) Impatience → Teamwork
Here I disagree with Yamamoto. Stubbornness and an insistence on having it their way are not attributes of a great chef (or software engineer). What I would replace here would be having a great supporting cast and working well with them.
As Jiro’s son, Yoshikazu, mentions in the documentary - “each of the [food] vendors are specialists in their fields. We are specialists in sushi but in each of their specialities the vendors are more knowledgeable”.
I believe this shows that they have built a relationship of trust with other experts in the field to give them the highest quality ingredients for them to execute and perform. This too can be said the same for a development team to have their own crew of tools, analytics, product, design, and marketing teams to provide them with the highest quality of work for the team to execute. That’s what makes teams great when it all works as an ecosystem rather than a forced partnership.
5) Passion
“The way of the shokunin is to repeat the same thing every day. They just want to work.” - Yamamoto
In the words of Jiro, once you choose your occupation you must immerse yourself in it and fall in love. Obviously, this is not something that many of us get right at the start. Maybe Jiro means that you must dedicate your entire being to your work even if you hate it. I would rather think that the way of shokunin loosely translates to craftsmanship. That is what passion brings, isn’t it? Passion for the work makes your craft better.
For Jiro, it was trying to get the highest quality fish and apply his technique to it. For engineers, it would be trying to get the highest quality project out there and executing it. Both paths rely on one to do the same thing every day, improving little by little, striving for perfection (but never knowing if you will ever reach it). There is always a yearning to achieve more, from more robust code to a greater umami in the dishes, this is a common goal for those with passion for their craft that even after decades of work it is still not perfect.
“Even if the history is long, there is always something that can be improved” - Jiro
Signals for Success in Software Engineering and Culinary Arts
While watching this, I realised a lot of these attributes that Jiro was respected for could be applied to software engineering. Come to think of it, software engineering suffers the same fate as the culinary arts career in that it is hard to spot talent. There is no fancy certification, or years of experience, or set standards for one to considered a great chef or developer.
Today, one of the most used signals for success in software engineering is a “proven track record”, seemingly based on where someone has previously worked. This is arguably not a very reliable source since there are many variables that are neglected in this assessment. In the culinary world, as in software engineering, the same principle of using one’s track record to see if you are going to be a good engineer or chef is practised.
How many times have you read a new restaurant’s description where it is highlighted how the team was comprised of “Ex-Momofuku”, or “previously worked at Eleven Madison Park”, or “studied under Jo?l Robuchon”? This very much mirrors the startup scene in tech where founders who are “ex-Google”, “ex-Facebook”, or being “funded by Y Combinator” is the main focus point rather than what particular skills each one of these developers possesses.
The media attention and glorification of both fields is rampant, focusing on the 1% who are successful and conveniently hiding the 99% who don’t make it. We romanticise the journey by watching TV shows like Silicon Valley and Chef’s Table, yet we do not provide steps for those who want to follow because of the hard work it entails.
What I liked about Jiro Dreams of Sushi is the more grounded approach it took. It did not neglect to mention the years of hard work and dedication it took to make it as a sushi chef in Japan, yet also gives hope that anyone with dedication can make it as a sushi chef.
Freelance Animator at PeoplePerHour
5 年visit https://rootmo.com/
Product Quality Inspection Associate at Toyota Boshoku Corp.
6 年I understand if there are several or majority of people disagree with the impatience part, as the impatience part manifests Japanese culture, on how dedicated the so-called masters, or bosses are. Great article!
Leadership | Program & Project Management | Cloud & Data Migration | Legacy Modernization | Systems Integration | Assessments & Consulting
6 年I'm always curious about how various analogies manifest themselves in our lives and especially at work. To me everything is a rock band, even writing software. Check out my HeyPaulBergen articles if you're inclined. -pb
Enterprise IT Architekt aus Passion. Eine gute IT muss sich nachhaltig in eine Organisation integrieren lassen. (Hier als Privatperson aktiv)
7 年Very good derivation.
Full Stack Software Engineer @ Houzz | Java/NodeJS/JavaScript | US Healthcare
7 年Loved how you analysed it, and related it, sir. One more thing I realised after reading this is, experience teaches us to see something and relating it with what we are in love with (Programming). (smile) Thanks.