After reading the book Agile Software Development, The Cooperative Game, I was introduced to the idea of Shu, Ha, Ri and I can’t help but love it. It’s a way of describing the three stages of learning. And I see their evidence everywhere.

To summarize, there are three stages of learning. Shu, where the learner follows strict rules. Usually learning about one technique, even if many more could work, they perfect the skill of executing that one technique. They measure their success based on whether the procedure works and how well they can carry out the procedure.
After a while, however, the learner discovers boundaries within their technique and wants to learn more techniques. This stage is known as Ha. This is where the learner has detached from their first technique and explores the many other techniques that could also work.

In the last stage Ri, the learner has become a master. The lines between different techniques become blurred. Whether they are practicing one technique or another becomes irrelevant. The practitioner knows the desired outcome and simply makes their way to the desired outcome.

In programming, this can be an extremely important concept to understand, especially when first learning to program. So many times when I was in my programming infancy, I wanted someone to just tell me how to solve the problem, but it was never that simple. There were so many different answers, and whose was better? How was “good” code measured? After learning about these three stages,

I realize that I was a “Shu”, trying to translate advice from a “Ri”.

No, just tell me the answer. It’s not that simple.

Something that we often poke fun at Greater Sum is our master Craftsman, Mike. His answer to every question is, “It depends”. He’s a real Yoda. But his answer makes you think and question. It forces you into the “Ha” mindset. Which forces you to learn, to think about different approaches. There’s not just one right answer. One quote I’ve been inspired by in my work recently is one by Pablo Picasso. He says, “Learn the rules like a pro, so you can break them like an artist”. I’ve read several books by programmers who like to compare their work to art. I’d like to think that, though our work requires a lot of attention to detail and technical thinking, we ultimately are artists. Learning the rules, so that we can break them and come up with creative, artistic, solutions to problems. Maybe it’s just wishful thinking, but it helps me to find more pride in my code than just “getting it to work”.


You can learn more about Shu, Ha, Ri at

Share This