2015-11-01

I came by this blog post, Software Ninja Class Hierarchy, via a tweet by Corey House (@housecor). I started reading this on Friday, re-reading it on Saturday, and again today. I guess you could say it captured my attention. I found myself agreeing with the author (Terence McGhee). This is the first I've known of the man and I like what I've read so far.

The Terence McGhee Software Ninja Class Hierarchy

In short, it proposes the "Terence McGhee Software Ninja Class Hierarchy" for classifying software developers based on their professionalism in the field. In short, the 9 classes range from "Chump Coders" like me when I came out of college, to "Gurus" like Martin Fowler and Uncle Bob Martin. Each class has a "why an employer might be interested" section and a "Battle cry" (think motto). Also, in the higher levels, Terence lists some dangers in hiring the higher levels. The sections on benefit to the employer could be valuable while we re-form team(s) by merging and hiring.

"Chump Coder?"

As you might imagine from a class named "Chump Coder," it isn't meant to be flattering. It seems to be an honest evaluation of skills and value each class brings to the team (to quote Terence, "It should be noted that many a profitable product has been brought to market using only Chump Coders."). I would advise anyone who wants to read it to leave their "Software Engineer – Level 3" titles at the door because this class system isn't about experience. Instead, it is about the maintainability of the software produced. Take me for example, for most of my career I was a variant of lowest class - "Chump coder." At the time, I think I would have been offended. Now, after reading Clean Code, I recognize it and humbly agree.

Why Read?

I think there could be considerable value in reading this, which is why I'm bringing it to your attention. It might serve as a road map to help you know where your team members stand and how to help them achieve their potential. I think it is worth mentioning that there are other important attributes, like customer service ability, communication ability, etc., and Terence did discuss this a little.

I have included my own personal timeline for reference, but it would be rather meaningless without reading the article, so I suggest reading the article first.

Read the article

My Timeline

I would describe my ninja-class through the years like this (with approximate dates -- it's difficult to remember that far back).

  • 1993-2002 - Chump Coder – VB, languages learned during college coursework
  • 2002-2004 - Expanded Chump Coder – VB, C#
  • 2005-2010 - Expanded Chump Coder, Specialist C#
  • 2010-2014 - Initiate (thanks to Uncle Bob)
  • 2014-2015 - Code smith – level 1 (on a good day, when it's new development instead of maintenance)