March 14, 2009

...Learn TDD with Codemanship

Applied Software Craftsmanship - Shall We Walk The Walk This Time? UPDATED (AGAIN)

Casey Charlton's outburst on the Software Craftsmanship Google group suggests that people are interpreting the new manifesto in wildly different ways.

It's highly probable, based on the feedback from other group members, that Casey's beliefs are at odds with the majority who signed. To me it seems fundamental - a craftsman has a line he won't cross. To Casey, that's an extreme position and he makes it clear that he sees it as dogmatic. To me, Casey's position smacks of relativism. No level of compromise is necessarily wrong. There's no line we shouldn't cross if the customer really insists. Just as long as we explain our objections before we do as we're told. The customer is King. Truly.

Interestingly, in other professions being 100% customer-led is seen as a bad thing. A doctor who will prescribe any drug or treatment his pampered patient demands is not viewed in higher regard that one who sticks to his principles and says "no". Interestingly, by Casey's yardstick he would be the better professional because the extent to which you bend to your customer's will is the measure of the man in this respect. Which I disagree with wholeheartedly. The doctor should care about his patient, and should do everything in his power to make the patient fit and well again. Just like we should care about our customers, and should do everything in our power to address the customers' needs. Not their demands. Their actual needs.

Maybe I've got this all arse-backwards, but isn't this a defining characteristic of what we're calling a "software craftsman"? If you disagree with it, surely then you're in the wrong house entirely?

It's like someone signing the Agile Manifesto and then suggesting that if your client insists, you should plan your projects in detail 12 months ahead. But there are Agile Manifesto signatories who do do that sort of thing.

And I imagine there will be plenty more like Casey who have their own interpretation of "software craftsmanship" that's diametrically opposed to mine.

And who am I say to that I've got it right? I certainly believe that a good software developer has standards he won't compromise no matter how much the client begs. But maybe that's not "software craftsmanship" after all. Maybe Casey's right and the rest of us have got it wrong.

Whatever, it does make me think that maybe we've moved from ruminating on the problem to designing a solution too quickly. I think we need to take a step back and ask some more fundamental questions about what we're hoping to achieve in this.

That so many have signed suggests a real groundswell of something. Of that I have no doubt. We're as mad as hell, and we're not going to take it any more. Whatever "it" is...

But haven't we been here before? Weren't the guys at Snowbird as mad as hell about something they weren't going to take any more?

And how many people who signed the Agile Manifesto went on to live and work by its values and principles? A lot of us went on to be about as Agile as George W. Bush is Christian.

One way in which the software craftsmanship movement could distinguish ourselves this time would be to really mean what we say, and do as we mean. I want to see our principles laid out like a software specification. It has to be testable. I have to know when I'm not abiding by it. For that I need examples, case studies, precedents.

I need a guide book on Applied (or Interpreted) Software Craftsmanship. Billy says he won't release code when he knows there's bugs in it. Billy's customer finds a bug. Billy's boss orders him to ship it anyway and fix the bug in a later update. What does Billy do? Billy explains the consequences to his boss and asks him to reconsider. Billy's boss says "no, ship it, or else". What should Billy do? How do other craftsmen support Billy in doing the right thing? Should Billy be a "card-carrying" software craftsman? Should he have told his boss and his customer right from the start: "these are my bottom lines, and I will not cross them"?

Most importantly for me, this time we should have the courage of our convictions. Which could mean making some very bold, and possibly quite risky, decisions.

I personally have done so in the past on several occasions. Those who've had the dubious honour of working with me will know that I will say exactly what I believe - no matter how likely it is to piss my customer off - and when push comes to shove, I really am prepared to walk away (or risk getting pushed away) if I feel I have no other option.

Some people find that abhorrent. Some find it admirable. Many - like Casey - think it's warped and unprofessional, and many more think that I should just smile and keep taking the money. But then, aren't we saying that they're welcome to it? I'd like to think that I'm not in that market any more.

Posted 12 years, 2 months ago on March 14, 2009