Shu-Ha-Ri is a learning concept originating from Japanese martial arts, specifically Aikido. Alistair Cockburn was the one who introduced and applied this concept to the learning of techniques and methodologies in Software Development.
This concept of acquiring knowledge is divided into 3 levels:
-
Shu (Obey) — The Beginner Stage: The learner follows all the rules, principles, and steps without overthinking. There is no questioning of right or wrong; you simply adhere strictly to exactly what the master has taught.
-
Ha (Detach/Break) — The Intermediate Stage: At this level, the learner explores the deeper meaning behind what they were taught. They investigate which theories or practices their knowledge stems from. They might learn from other instructors or outside sources, integrating this new knowledge to form their own approach.
-
Ri (Transcend/Create) — The Final Stage: The learner no longer relies on learning from others. Instead, they learn from their own accumulated experience. They adapt, refine, and ultimately create a completely new approach of their own.
I recently had the opportunity to learn about Shu-Ha-Ri. After studying it, I realized it can be widely applied in the field of Software Development. In fact, I believe many people are already operating within these stages without even realizing it.
-
In the Shu stage, we diligently study our research or follow people we highly trust, practicing their methods religiously. Whether it's writing code according to a specific design pattern, following an existing architecture, adhering strictly to Scrum or Kanban processes, or applying exactly what we learned in a training workshop—we do it without questioning if it is perfectly suitable, right, or wrong for our specific context.
-
In the Ha stage, we start learning from a wider variety of sources—other people, books, and different media. We reflect on this new information, adapting and improving our existing foundation to develop our own unique way of working.
-
In the Ri stage, we use our own experiences to establish new rules and principles as we see fit to solve specific problems. We then take this newly created knowledge and pass it on to others.