Programming is Catfish Noodling

Dan North, apparently irritated that no one showed him the secret programmer handshake, has constructed a (very neatly crafted) wall of words. He hits all the Serious Programming Thinkiness bullet points – talk about artists, talk about martial arts, talk about bridges.

I guess Software Craftsmanship is a thing again? I thought we’d all talked that to death years ago, but apparently there’s a manifesto now. Personally, I got bored with calling myself a craftsman a while back. I’m presently working towards my ordination as Software Knight Templar, 5th degree.

Evidently Dan is concerned that us programmers are putting on airs instead of serving clients. Frankly We are insulted by his suggestion, and We demand that he give Us satisfaction on Tuesday following Our meeting with the Ambassador from Spain.

But seriously, Mr. North has noticed that if you give something a name in Capital Letters and a manifesto, pretty soon everyone and their cousin will be claiming to embody it. And wouldn’t it be nice if there was actually a way to tell that a developer is good at anything other than signing manifestos. (Aside: the previously-linked article is from 2007. How soon we forget.)

Look, until software is a matter of stacking the blocks together according to the master architect‘s plan — an ideal that has stubbornly evaded realization — software is going to be either craftsmanship or voodoo. There are just too many tough, important choices in an average programmer’s daily work to call it “skilled labor”. But it’s true that craftsmanship can be put on a pedestal. North is right in this much: if craftsmanship was a part of a theater production, it would be the stage crew, not the prima donna.

I’m sorry, but you’re going to have to put up with yet another software/woodworking analogy. The way I see it, this discussion concerns three basic archetypes:

  1. A hack. He measures once, cuts wrong, nails it together anyway, and the finished product collapses the first time someone puts any weight on it – but by that time the carpenter is in Tahiti.
  2. An aspiring craftsman with delusions of grandeur. He makes a big show of measuring twice and then spends ten minutes making fun of the hack. He gets it right the first time but he gets fired because he’s six months overdue.
  3. An actual craftsman. He may measure once or twice, but either way he does it quickly and without fanfare or losing his pace.

The point, of course, is that good is not good enough until you’ve internalized it to the point that it is also fast. And fast implies that you aren’t wasting time going “look at me, I’m a craftsman!”.

But how does a non-programmer client discern who does good work, if the song-and-dance means nothing and in the absence of meaningful certifications? Simple, the same way clients have discovered quality craftsmen for thousands of years: plain old word of mouth.