Friday, October 23, 2009

Shu Ha Ri

Hi. Welcome to my blog. However you arrived here, you might be wondering about the title. Here's a quick explanation.

About six months ago (as I write this) Christian Neukirchen posted on his excellent tumblelog Trivium a link to a page titled Shu Ha Ri. Shu Ha Ri is a Japanese concept that claims that the path from novice to master goes through three stages, with Shu being the novice stage and Ri being the expert stage. But note that entering the Ri stage is just the beginning of mastery. Those of us in the west who are only superficially familiar with eastern martial arts might be surprised to know that obtaining a black belt in a martial art is merely recognition of entering the Ri stage. A person who has just obtained their black belt is 1 Dan, but as they continue on the path of mastery they will advance to 2 Dan, and so on, and perhaps someday reach the rarified level of 9 dan, or perhaps be given the extreme honor of being called 10 Dan.

The Japanese use this rating system for various martial arts and also for the board game Go. I've never studied any martial art but I spent a couple years being nearly obsessed with Go. Most people can learn the rules of Go in about 10 minutes and will play at a level of about 30 Kyu. As beginners progress, they count down to 1 Kyu and then transition to 1 Dan. Go is a fascinating game and the ranking system is very useful, because it can be used to handicap games. Players that are ranked 9 levels or less apart can play a game where the weaker player is given extra stones (placed in established locations) at the start of the game. The system works remarkably well, such that both players can have an interesting and challenging game.

The Shu Ha Ri article was the catalyst that has prompted me to start this blog and indirectly led me to the title 4 Dan Programmer. Please don't take the title literally. There is no system for ranking software engineers. If there were I expect it would be difficult to apply it meaningfully and consistently to the diverse landscape of software engineering. But even if we could devise such a rating system, I really have no idea if I would be 4 Dan. Rather, I just want to convey that I consider myself well into the Ri stage of software engineering, yet still have far to go to achieve the level of mastery that I know other engineers have achieved. I know this from real experience, having been fortunate enough to have worked at Google for two and a half years, where in my view the majority of engineers were "Dan-level" programmers. Google's unique performance review process relies extensively on peer review and engineers are ranked on a well documented scale. There were hundreds of engineers ranked at my level and over a hundred engineers deservedly ranked at higher levels. I might add that I worked with several younger engineers ranked lower than me who proved on numerous occasions that old age and treachery is not always superior to youth and skill. I enjoyed learning from them.

Which brings me to a key point I want to make. I do hope that I may be of some benefit to a few other engineers looking to improve their mastery of software engineering, but I won't consider this blog a success if I learn nothing from the process. Whatever your skill level, if you are moved to question or critique what I have to say, I hope you will so that we both benefit from the exchange.

No comments:

Post a Comment