Working in Japan: Can Modern Software Engineer become Shokunin (職人)

Norris Chiu
4 min readMay 23, 2020
Image from ANA’s “Is Japan Cool?” project

Sho-ku-nin more or less means artisan or craftsman. In recent years, this Japanese vocabulary is given more context in places outside Japan. People have been using it to describe a certain perspective on craftsmanship and even a way of living. In Jiro Dreams of Sushi, a documentary published in 2013, the renowned (now 94-year-old) sushi chef Jiro Ono present to the audience how he lives a life of sho-ku-nin.

“Even at my age, after decades of work, I don’t think I have achieved perfection. But I feel ecstatic all day — I love making sushi. That’s the spirit of the sho-ku-nin.”, Jiro Ono

  • A sho-ku-nin loves his work and treats it as his life
  • A sho-ku-nin is highly disciplined to repeat the same process over and over again almost every day
  • A sho-ku-nin is constantly looking for improvement and pursuing perfection
  • A sho-ku-nin strives to provide the best experience or product to the customers

So I have come to think about — can myself as a software engineer be sho-ku-nin?

Software Engineering as a Collective Craft

To be qualified as a Sho-ku-nin, we need to be practicing a craft. There have been many discussions around whether software engineering is a craft already (Look up Software Craftsmanship for more info), so let’s skip that and say it is indeed a craft.

But different from many traditional crafts which are possible to be done solely, modern software is complicated and large enough that requires tremendous effort in not only making the product itself, also in communication and maintainability. Except from programming skills, effectively delivering information around, and making our work easily understandable by others are also key skills to acquire. In other words, the interaction with others also define the success of our craft. We are practicing a collective craft.

Progressive and Iterative

Modern software development approach as such Agile, as the name suggested, focus a lot on agility. Development cycles are broken into small partitions for example 2 weeks, and repeat delivery of a working product is the key. Large feature are broken down into many small features and be implemented progressively. Improvement should be made on top of functioning product instead of aiming for a solution that solves it all in one go.

Sho-ku-nin repeats the same process over and over again to look for slight improvement, while modern software engineering iterates on a large feature to gradually complete it. Even they are slightly different in context, software engineering does capture the spirit of progression and iteration.

Attention to User

Result is of utmost importance in the practice of a craft. The often quoted (but maybe wrong) “customer is always right”, Japanese brings it to another level with the phrase “O-kya-ku-sa-ma wa ka-mi-sa-ma” (お客様は神様), which literally means “customer is god”. A Japanese sho-ku-nin of course also uphold the same belief. They believe user satisfaction is the sole factor to decide whether they are a good craftsman. That is why hand massaging an octopus for 50 minutes straight before serving is a thing, as described in Jiro Dreams of Sushi.

Modern software engineering embraces indecisive users. Being able to respond to rapid change in user requirement is considered more important than following a plan. Sometimes user experience research is done to avoid too flawed requests from user, but nevertheless the user is the final factor to judge if a software is good.

Reflection

Constant improvement requires constant reflection. It is not difficult to imagine a sho-ku-nin reflects on himself regularly in order to achieve the unachievable perfection.

Scrum, a agile software development framework, contains a stage called sprint retrospective. To simply put, it is a regular meeting that the team sit down and talk about what went well and what not in the last development cycle (as mentioned for example 2 weeks) and what should be done to improve the situation. In order to take full advantage of this process, the key is to always find something to improve, even a very tiny detail. This matches with how a sho-ku-nin thinks there is no perfection attainable but at the time always strive for perfection.

So yes, a software engineer can be a sho-ku-nin. But the next question is, do we want to? Being a sho-ku-nin means your work defines your life. You are the craft you are practicing. That might not be the life that everyone wants to lead.

I think sho-ku-nin can be a useful way to introduce the Japanese working style to foreign newcomers in local companies. For example, we are always annoyed by the fact that our colleagues never try to negotiate with the clients or tell them they are wrong directly. We might think they are just bad and afraid to give opinion, but in another perspective we can say there is a spirit of sho-ku-nin in their heart and denying customers is not an option.

If done well, everyone can learn to respect the belief each others are upholding and it can contribute to smoother cultural intergration. Of course sho-ku-nin cannot be the ultimate answer for software engineering and there is a lot of room for different interpretation and improvement.

--

--