Programming is not a craft… but you can be a craftsman

Craftmanship was the software development phrase d’jour in 2010 (or maybe REST, it was a close race).  To start 2011 Dan North very abruptly stated that Programming is not a craft.  I happened to read this a few days before Codemash which was keynoted by Chad Fowler where he very conveniently discussed the Passionate Programmer

My take from the keynote is that we shouldn’t be so quick to fear, resent, and minimize formal mechanisms of inspection and improvement (aka Six Sigma), but instead embrace them as ways to expose and enable our passion productively.  I don’t know that many expected this from a mustachioed (ok it’s gone, but come one, did you see that thing), Ruby loving, saxophonist; it certainly was sobering.

Today David Starr responded in much the same way I did when I began reading Dan’s comments: how dare you.  But I’m not sure Dan’s headline grabbing commentary is quite as radical as some are bound to interpret. 

Dan, as I’ve understood him, is looking at the term craft and craftsmanship as it is used in trades such as plumbing, electricians, etc.  In these trades, there is a well defined ladder of training, experience and excellence with an approving body.  We don’t have this (or want it I dare say) and cannot therefore call what we do a sibling according to Dan.

Our sub-industry of coding, even with our self-declared passion, neglects those activities which would transform us from egocentric, but well meaning geeks to a “proper profession” as Dan puts it.  How many in Chad’s keynote didn’t scoff and chuckle at the 6-Sigma reference and then stare at the table in silence when we came to realize it’s a lot like our Inspect and Adapt frameworks.  Coincidentally enough, many of our favorite Agile practices such as XP, Scrum, and Kanban come about from a thorough examination of mechanisms like Six Sigma.

The qualities that embody the Software Craftsmanship (as a proper noun with a unique meaning) are fantastic, I want to reflect them.  At this moment, for better or worse, there seems to be no effort to give the movement an objective beyond personal empowerment.  Do we need one?  Probably.  Can it come from the Software Programmers Union in the form of a Master Coder License?  I certainly hope not.

In the mean time, you can be a software craftsman.  Love your code.  As David puts it “one mark of a true professional might be a willingness to balance client need with implementation elegance…”.  Just keep searching for the elegance.