Wednesday, 19 January 2011

Why the Software Craftsmanship Manifesto is a load of crock!

I just read Martin Fowler's "Craftmanship and the Crevasse" & Dan North's "Programming is not a craft" and I've gotta say, I’m proud of having been aware of the SCM since its early days and having not signed it despite having some respect for those who wrote it. I’m a tradesman not a craftsman and I’m proud of writing software that works while delivering it on time and to budget. The manifesto and I agree on absolutely nothing. The priorities are the wrong way around. The complete opposite of my values.
SCM: Not only working software, but also well-crafted software
Me: Well-crafted software is nice. Working software is imperative.
A good looking bridge is no better at crossing rivers than an ugly one. And lets face it, the point of a bridge is getting from A to B reliably, not beautifully.
SCM: Not only responding to change, but also steadily adding value
Me: Steadily adding value is nice. Responding to change is imperative.
Inability to respond to change is like being a plumber who left his adjustable wrench at home whilst steadily adding value is like being the plumber who’s been under the damn bath polishing the copper pipes for the last 3 hours and still hasn’t replaced the washer seal.
Don't forget as well, that "Steadily adding value" means change to the code base. Changes need to be tested, testing takes time, time is money. Do you remember what your granddaddy said after "If it ain't broke..."? If you're constantly tinkering with working software and your change is creating work for testers and release people, are you really adding value or are you just creating work?
SCM: Not only individuals and interactions, but also a community of professionals
Me: A community of professionals is nice but you can’t have one without individuals and interactions.
The developer community has as much appeal to it’s business customers as a Vegas dentists convention has to the gamblers at the slot machines. Your community of professionals makes you feel  intelligent and big and clever amongst other big and clever people. It does not add value for your customers or help them sleep better at night.
SCM: Not only customer collaboration, but also productive partnerships.
Me: Productive partnerships are nice but businesses do not function without customers.
Saying partnerships are more valuable than collaboration is like saying marriage produces better babies than sex.
For the record, the Agile Manifesto and I, agree on absolutely everything. Also for the record, this post reflects my programming ethics which are biased by the fact that I am a contractor, freelancer and mercenary. There are a lot of software craftsmen out there making our industry a better place to work because of their very different ethics. I respect them, I just have different reasons for being a developer.


Paul W Pagel said...

Thanks for writing your opinions. My interpretation of the words "Not only" at the beginning of the value statements is a little different than yours. I think "Not only" indicates responding to change is a pre-requisite of steadily adding value. Things like well crafted code are why we can respond to change. If you have working software that is not well designed, tested, or decoupled, responding to change will be a myth. As the system grows, the ability to respond will reduce.

I think the intent is to continue those statements from the agile manifesto, not to disagree with them as you state. The relationship is that of building on a foundational rather than recreating something that is incorrect.

Grenade said...

Paul, you are correct and the tone of my post does not give deference to the fact that I do appreciate, recognise & respect that many SCM signees are contributing to the overall improvement of practices in our industry which would suffer if they did not. People who do subscribe to the manifesto for the right reasons and in the spirit that it was written in, deserve credit and recognition. I don't place my own values in that particular camp because it's contrary to what I want to achieve in my working life.

Dennis said...

Nicely written. While the first few are clearer to counter, the others start to be a bit irrelevant. But I would say that the SCM is written in a negative way. I mean this serious "Not only" all the time. They could have said
"Working software and also well-crafted software"
instead of
"Not only working software, but also well-crafted software"

This would have given the later part an optionality and wouldn't have given the first part the taste of that working software itself is not sufficient. I completely agree it is. If it's well-crafted...well, it sort of contradicts the constant addition of value, because if the statement of "working software" is true and this part delivers the value, then the well-crafted just creates cost and has no value - so to some degree one might say the thing contradicts itself.