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 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