22 August 2014

Shu-Ha-Ri is a way of thinking about how you learn a technique. The name comes from Japanese martial arts (particularly Aikido), and Alistair Cockburn introduced it as a way of thinking about learning techniques and methodologies for software development.

The idea is that a person passes through three stages of gaining knowledge:

  • Shu: In this beginning stage students follow the teachings of one master precisely. They concentrate on how to do the task, without worrying too much about the underlying theory. If there are multiple variations on how to do the task, they concentrate on just the one way their master teaches them.
  • Ha: At this point students begin to branch out. With the basic practices working they now start to learn the underlying principles and theory behind the technique. They also start learning from other masters and integrates that learning into his practice.
  • Ri: Now the students aren't learning from other people, but from their own practice. They create their own approaches and adapts what they've learned to their own particular circumstances.

The fundamental idea here is that when teaching a concept, you have to tailor the style of teaching to where the learner is in their understanding and that progression follows a common pattern. Early stages of learning focus on concrete steps to imitate, the focus then shifts to understanding principles and finally into self-directed innovation.

There are other expressions of this style of learning. A more nuanced approach is the Dreyfus model. I rather like Clark Terry's formulation of this model: Imitate, Assimilate, Innovate.

Further Reading

You can find Alistair's (better) description of this in his book: Agile Software Development.


Originally posted 30 Sep 2006, updated to include the generalization and mention of similar models on 22 Aug 2014