April 23, 2009

...Learn TDD with Codemanship

Software Craftsmanship: We Care. We Learn. We Practice. We Share.

In the recent discussions about principles and ethics for software craftsmanship, I suggested something very high-level and "slogan-y" as an antidote to detailed and prescriptive texts:

We care. We learn. We practice*. We share.

Is this a "Barnum statement"; something that most developers would probably agree with, craftsman or not?

Yes. Well, almost. And deliberately so.

I have reached a stage where I believe words to be wholly insufficient in defining or explaining what I mean by "software craftsmanship". You may have noticed :-)

And whatever I mean by it is not necessarily the same as what other craftsman mean by it.

Software craftsmanship is like "girl power" or "the third way"; when you get down to it, it means what people want it to mean. Try to describe your personal credo in enough detail and you quickly alienate a lot of good craftsmen who walk their own path. You will also probably find it frustratingly impossible to adequately articulate what craftsmanship means to you, meaning you have committed to words a poor 2D oversimplification of a very rich and multidimensional internal experience.

I can no more adequately explain what is is to be a software craftsman than a turtle can explain what it is to be a turtle. To know that, you must be a turtle!

I see it this way; the only way to know what it means to be a software craftsman is to be one. Try for a while. See how it feels. It's your own internal experience and you can only gain that kind of insight first-hand.

If other people want to know what it means to be a software craftsman, show them what you do and encourage them to try it for themselves.

But the reality is that there is no defined experience that is shared with any fidelity. There is no "what it is like to be a turtle", only "what it is like to be THIS turtle". Just as it is with turtles, one craftsman's internal experience of what it is like to be a software craftsman will probably differ somewhat from someone else's internal experience.

Words fall far short of capturing the richness of that internal experience and I have failed to find the words to even give a glimmer of that insight.

So I vote for a short and memorable slogan. Something to hang our hats on. Something like: "I'm a turtle. I swim. I walk. I have a shell."

And then I can get on with the more important business of being a software craftsman in the way I know how to do that.

* And there's Waldo!

Posted 3 weeks, 6 days ago on April 23, 2009