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.

This entry was posted in Rants and tagged . Bookmark the permalink.
  • http://twitter.com/elight Evan Light

    I couldn't be bothered to read all of Dan's post; it rambled it's way about occasionally trying to make a point.

    In short, he is looking at a false dichotomy: you can still see yourself as a craftsman *AND* deliver value or either the former or the latter. He's angsting about those are the former but don't do the latter.

    Silly.

    There are always people who talk the talk but can't walk the walk.

    He even goes so far as to alude to the need for some sort of system for quantifying those people/teams. Sound like RMM? Ewwww….

    Craftsmanship is a nice idea but it's just yet another school of thought. And I'm not much of one for school. ;-)

    • http://wideteams.com Avdi Grimm

      I feel like he's missing a distinction – all the people I know who talk a lot about craftsmanship are talking to other developers about it. They don't have any illusions about clients who want to stare at ornate plumbing.