Shuhari and Computer Science

守破離

Shuhari is a term that describes the phases or learning in Japanese arts and is considered a part of some martial arts like Aikidō. Learning can be decomposed into three phases:

(SHU) – Conformance
Learning while conforming to the rules.
(HA) – Deviation
Developing one’s own style, breaking some rules
(RI) – transcendence
Building one’s own rules

While reading about the subject on the internet, I found an interesting blog post called The Fallacy of Shu-Ha-Ri, which discusses the application of that principle to computer science. It is not so much a criticism of the decomposition than a realisation that it cannot really be applied in a chaotic medium like computer science: what is the point of mastering some technique if you are not sure that said tool is the solution.

To me shuhari looks like a good model once you have accepted a given path. Unsurprisingly, Japanese arts are divided into ways ( []), early on, you choose a way and you follow it until you transcend it; not exactly the way things work in computer science.

Reflecting on my situation, there are a very few tools that have stayed around since I started dabbling with computers, having learnt the trade on Commodore 64 with BASIC and 6510 assembly. I learnt C programming in 1992, at the University of Geneva and I’m still coding in C++ these days, but the difference between the two languages is pretty large. In C++, I would say I’m at somewhere between SHU and HA: can’t say I’m fully mastering it, but sometimes bending some rules and using advanced features.

Leave a Reply