Software Craftsmanship

A friend just sent me a link to the Software Craftsmanship Manifesto, a manifesto of values to uphold when crafting software. As I’ve often lamented the common mistakes people make in the software industry, you’d think I’d love that manifesto.

As a matter of fact, I saw it a few years ago and decided, after some deliberation, not to sign it.

Don’t get me wrong, I can support everything that’s said in the manifesto. What I’m not so sure on is whether I support it’s existence.

A manifesto is a public declaration of principles and intentions.

That’s what Wikipedia has to say on manifestos. What I would like to add is that a manifesto derives value from declaring principles or intentions that are unusual; imagine a manifesto that declares “I shall breathe!”. My problem with the software craftsmanship manifesto is that it doesn’t fulfil that additional point.

It’s true that not everyone writing software adheres to the principles set forth in the manifesto. I would go so far as to say that the minority of people involved in writing software adhere to these principles, which is why I rant so much on this blog about common problems in the industry/in software. Insofar it’s easy to jump to the conclusion that a manifesto, apparently, is needed.

The crucial point to me is that while in software, the principles set forth in the manifesto might be unusual, the same can’t be said across all professions. They are the base minimum by which people are measured in order to be called professionals. Or, to be more precise, professionals in other industries who do not adhere to these principles don’t tend to do particularly well. Only in software is shoddiness glorified as a virtue.

The problem isn’t that software professionals need a manifesto. Any professional taking pride in their work will work according to the principles outlined anyway. The problem is that software customers let software professionals get away with shoddy standards. You wouldn’t pay a plumber for leaving you with leaky pipes. A manifesto won’t really change any of that.