Shu Ha Ri is a Japanese term that describes the three stages of apprenticeship of a martial art.Shu means to maintain, protect, obey. In this first stage, the student rigidly follows the teachings of the master. The aim is to reproduce precisely the technique without worrying about the underlying theory. It is important not to mix styles or variants of the art at this point. This is the stage in which you establish the foundations for the rest of the apprenticeship.
Those of us who have practised a martial art will remember this first phase where the objective is, on the basis of repetition, correction and perseverance, to be able to perform the movements and techniques correctly.
Ha means separate, liberate, break. Once the technique has been memorized, the student may begin to question “why?”. In this phase, the student begins to understand the theoretical principles of the technique and starts to learn variants of the art from other masters. All this is integrated into the student’s knowledge and practice of the martial art.
Ri means to go further on, to transcend. In this stage, the student no longer is one since he doesn’t learn except for his own technique. The art becomes personal and he explores new focuses and variations on the techniques adapted to the circumstances.
Alistair Cockburn (signatory of the Agile Manifesto and creator of the Crystal Clear methodology), in his book Agile Software Development, introduces the concept of Shu Ha Ri to explain the learning of software development techniques and methodologies. For Cockburn, the agile methodologies with a name (Extreme Programming, Scrum, Crystal Clear) give a starting point, at level Shu as well as level Ha, so that each development team can reach their own Ri. Understanding that the best methodology is not to follow a methodology and that a successful development process is one that is not established.
At Tractis we understand this well. This is why we refactor continually – not just the code but also the methodology, the process, the manner in which we organise ourselves.
In many aspects, we’re probably at level Shu. We’ve chosen to be agile and chosen Rails as means of reaching our ambitious objectives. Therefore we are trying to learn, apply and memorize the agile techniques (TDD, Refactoring, Continuous Integration etc.) and the “Rails way”, following our ‘masters’.
This is going to require dedication and sweat, without doubt, but we need to do things very well at this stage because the challenges that confront us are going to take us in new directions. We’re constructing software in the post-agile, post-web2.0 era and we’ll only succeed if we have solid foundations.
And this is what we’re trying to do.