April 11, 2009

...Learn TDD with Codemanship

Software Craftsmanship - Let's Lead By Example, Not Rule By Decree

Channing Walton asks on the software craftsmanship Google group "Who decides that someone is a craftsman?"

Dave Hoover replies:

"The onus is on the individual to show that s/he is a craftsman. But really, the most important step is the individual *choosing* to become a craftsman. Once that decision is made, it is up to that person to abide by the values and ethics of software craftsmanship. If that person states publicly that s/he is a craftsmen, and the software craftsmanship community observes discrepancies between the craftsman's behavior and/or work products that contradict our values and ethics, then it is up to us to work with that person. We would work with the person to either adjust his/her approach so it fits our definition of craftsman or s/he needs to stop claiming to be a craftsman."

There are a couple of things bothering me about this; firstly, who's this "we"? There's a strong implication here that there's a community of software professionals who have reached a consensus on the key values and ethics that make one a "craftsman". While there's certainly a loosely-knit community of people interested in software craftsmanship, there most certainly isn't a consensus on shared values and ethics, and I think - judging by the round-and-round-we-go-where-we-stop-nobody-knows arguments that have been fizzling away out there in Interweb land - a consensus is unlikely at any stage.

I mean, did the "Agile community" ever get around to deciding what makes teams Agile? I mean, really?

Secondly, there's a real danger with movements, especially in their infant stages. Those of us who take the inititaive and organise conferences and summits and discussion groups and manifestos and wikis might be mistaken for "leaders" within the community of people who take an interest in the movement. It's dangerous territory. "Craftsmanship" is just a word; one which is already in use and already has a well-defined meaning, as well as several historical connotations. Each of us may come to this process with our own internal set of values and ethics, and each of us may find that we're able to work together with people who's values and ethics are at least compatible. This is called co-operation. It does not require leaders.

Co-operation does benefit from positive examples and role models to help inspire and show people how we can work together. And craftsmanship is definitely that sort of thing. I can watch Andy Palmer and Antony Marcano pair online and be inspired and educated by their example. They are not asserting shared values or ethics, necessarily. They're just showing us how they do it. And I can decide whether I feel there's merit in what they're doing. And I can turn to my friends and ask them what they think, and learn from their perspectives on Andy and Antony's work. And then we can all go to The Coal Hole and sink a few beers and talk about it some more.

I'm very positive and excited about the example Andy and Antony are setting. They're putting their money where their mouths are and daring - because it takes a small amount of nerve to expose yourself like this - to show us what really goes on when they program together. It's not empty rhetoric. We can see what they're doing with our own eyes and judge meaningfully whether we think it's compatible with our values and ethics as programmers. I should do more of this, I really should. We all should.

With hosting of large files and HD video now being commonplace and free on sites like YouTube and Vimeo, we can move to the next stage in the evolution of our dialogue. Finally, we can say "do as I do" and move past the era of "do as I say" that has marked the dicussion up to now. If we want to be leaders, let's lead by public example and let our code do the talking.

Posted 9 years, 2 months ago on April 11, 2009