The Shu Ha Ri Kokoro Learning Progression
Posted by Steve Green on 14 June 2016.
Last night I went to an excellent presentation by Alistair Cockburn called Returning to the Heart of Agile that I have written about in a separate blog. Alistair was one of the authors of the Agile Manifesto, so unsurprisingly it was a very entertaining and informative evening.
However, one of the key take-aways for me was not specific to Agile at all. It was the Shu-Ha-Ri-Kokoro learning progression, which applies to just about all disciplines.
I'm by no means the first to write about the Shu Ha Ri learning progression but it's usually described in terms of software programming practices as shown in the slide below, which is taken from Alistair's presentation (I don't know where the photo came from and will gladly add a credit or take it down if it's yours). Instead, I'm interested in how it applies to software testers.
The Shu level
At the Shu level, students merely copy what their master says to do, without any real understanding. All testers start at this level and I'm tempted to say that few have progressed beyond it. Extensive use is made of document templates, test scripts, checklists and processes - indeed the answer to all problems is to have more test scripts, checklists and processes!
Shu-level students tend to seek "magic bullet" tools (automation, security test tools, accessibility test tools etc) that will instantly catapult them to the Ri level without any of the hard work, learning and practice. They do everything by rote and are certain they are doing it the best way (the "one true way").
They tend to regard everything they test as a black box and are prone to asking questions such as "how do you test an e-commerce system" or "how do you test an API" because they have not yet learned or developed a generic framework for testing.
And they count everything - test cases, test scripts, bugs, man-days, lines of code etc. - and produce all kinds of metrics to demonstrate how well they are doing.
They are at the first of the four levels of competence - Unconsciously Incompetent.
The Ha level
At the Ha level, testers have learned a wide range of techniques and are practicing their use. They have learned that tools exist to leverage their knowledge and experience - they decide what test they want to do, then see if there is a tool that can help them do it.
They have the knowledge to do most things they need to, but they still need to think hard about the best way to do things and which approach(es) to use. They may not be confident they are doing the right thing because they know there are other options.
Ha-level testers are often sceptical about the value of writing test scripts and collecting metrics but don't have the confidence to stand up to managers who demand them. Everyone else is writing scripts and collecting metrics so it's got to be the right thing to do? Isn't it?
They are at the second of the four levels of competence - Consciously Incompetent.
The Ri level
Ri-level testers are serious heavyweights - the top few percent of the profession. They have started to develop their own tools, techniques and methodologies and have learned or developed a generic framework for testing - they are comfortable taking on just about anything, whether it's familiar or completely new to them.
They may break all the rules and conventions they learned at the Shu and Ha levels. They are confident, instinctively knowing what to do, but they don't know how they know and they struggle to explain it to other people. Ri-level testers are often terrible at teaching people who are at the Shu level. Do you know anyone like that?
They no longer use test scripts, checklists and prescriptive processes, and they tell other people they just have to trust that they're doing the right things. If they're using test automation, they're doing much more interesting and valuable things than merely writing checks for all the documented requirements.
Most Ri-level testers realise that almost all the metrics used in software testing are statistically invalid - the numbers might hint at something interesting but they have no value in themselves. Curiously, a small number of highly-experienced testers go completely the other way, devoting huge amounts of effort to the collection and analysis of metrics.
Ri-level testers progress from the third to the fourth of the four levels of competence - Consciously Competent and Unconsciously Competent.
So far it's all as you might expect, but the next stage really surprised me. It also helped me understand something I had seen but not thought about much.
From complexity back to simplicity
In these first three steps we are working at increasing levels of complexity. Indeed, the Ri level can look like magic at times. But there is a fourth level, which Cockburn calls Kokoro. This is reserved for the true masters of the craft - people like James Bach, Michael Bolton, Jerry Weinberg etc.
They develop their thinking not by moving on to even higher levels of complexity, but by returning to simplicity. They deconstruct all the complex stuff they were doing at the Ri level into simple concepts that can be taught to Shu-level students. That's why they tend to be great teachers at all levels, whereas Ri-level people typically teach complex stuff that only other Ri-level people can understand.
It's also why I completely misunderstood Michael Bolton's RST course in 2009 when I guess I was at the Ha level (and thought I was much higher than that!). I expected to learn amazingly complex testing techniques and was disappointed that there was none of that. Instead there were lots of simple concepts, abstract ideas and strange acronyms like CRUSSPIC STMPL. It took years to understand the value in that simplicity.
This level doesn't really fit any of the four levels of competence, so some people have suggested a fifth level - Reflective Competence.