What's a master craftsman? Who cares…
My sister and brother-in-law make (really) nice furniture, they're probably master craftsmen. I don't think studying them is going to teach us much about how to be write better software, unless sanding it a lot might help.
It might teach us about how to recognise mastery when we see it:
- the finished articles that leave the workshop are as good as they can make them. They set themselves higher standards than their clients do.
- they've made and continues to make journeymen of apprentices.
- their peers admit their mastery.
How do you achieve this in software? I think there are two characteristics shared by the people I respect in software.
First and foremost, they care about the quality of their work: the first bullet point applies.
Second, these people are "reflective practitioners". That is, they still practice programming, but afterwards, they reflect on what happened. You need this reflection time to draw general rules from the specific experience. This knowledge makes it easier to do it right next time, but it also gives you knowledge in a form that you can teach to others.
My goal for the conference is to get a few of these people to tell me a few of their rules, so I can take a short cut to getting slightly better at software.
I do wonder about the value of the craftsman analogy. In general, analogies between software development and other activities are tosh: the only thing that software development is really like is software development. I have more to say about this on my blog (http://www.dc-syntropy.blogspot.com).