How Writing Software Is Like Making Sushi
Super imposed text on top of a screen capture from Jiro Dreams of Sushi (2011)

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:

  1. Take your work seriously
  2. Always aspire to improve your skills
  3. Cleanliness
  4. Impatience
  5. 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.


Sean Wayne

Freelance Animator at PeoplePerHour

5 年
回复
Moses Matsuzawa (松澤茂世須)

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!

回复
Paul Bergen

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

回复
Lars Uterm?hlen

Enterprise IT Architekt aus Passion. Eine gute IT muss sich nachhaltig in eine Organisation integrieren lassen. (Hier als Privatperson aktiv)

7 年

Very good derivation.

回复
Eklak Dangaura

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.

要查看或添加评论,请登录

Chris Ng的更多文章

  • My hopes for Ember in 2019 – Better JavaScript Community Visibility

    My hopes for Ember in 2019 – Better JavaScript Community Visibility

    This blog is my input on what I believe the priorities should be for Ember in 2019, in response to the second annual…

    3 条评论
  • ForwardJS Ottawa 2019 Recap

    ForwardJS Ottawa 2019 Recap

    ForwardJS Ottawa is a 2 day conference held at the Adobe offices in Ottawa, Ontario, Canada. The conference had…

    2 条评论
  • The Open Office Layout

    The Open Office Layout

    Let's talk about a contentious topic among developers – the open office layout. While some developers love it, the…

    4 条评论
  • WYSIWYG 3: Browser Peace?

    WYSIWYG 3: Browser Peace?

    Hey all, In this week’s issue of WYSIWYG, we’ll be taking a break from the security issues and jumping into browser…

    1 条评论
  • WYSIWYG 2: How do we protect our data?

    WYSIWYG 2: How do we protect our data?

    Hey all, Fresh off the security breaches from last week’s edition, we have even more data compromises to report. This…

    1 条评论
  • WYSIWYG 1: Security Issues All Around

    WYSIWYG 1: Security Issues All Around

    Hi there! Welcome to the first edition of WYSIWYG by Chris Ng! WYSIWYG, pronounced "wiz-ee-wig", is an acronym for…

  • Make It Beginner Friendly – My hopes for Ember in 2018

    Make It Beginner Friendly – My hopes for Ember in 2018

    This blog is in response to Katie Gengler’s Call for Blog Posts with the goal of having shared, clear, and published…

    13 条评论
  • EmberConf 2018 Recap

    EmberConf 2018 Recap

    EmberConf is the best place to meet the people behind the Javascript framework Ember.js.

  • How to Write About What You're Working On

    How to Write About What You're Working On

    Note: While I write this from a software engineer’s point of view, many parts of this article are easily transferable…

    3 条评论
  • Dealing with the Communication Paradox

    Dealing with the Communication Paradox

    TL;DR: Getting to the point with as much detail as needed reduces both problems of lacking in context and information…

社区洞察

其他会员也浏览了