Uncle Bob has recently published an new book, “Clean Code”. In it, as I understand it, and in his energetic keynote at the Agile 2008 Conference Dinner keynote in Toronto, he talked a lot on the subject of Craftsmanship. He proposed a fifth element to the Agile Manifesto, “Craftsmanship over Crap”, or as he revised it in his blog, “Craftsmanship over Execution”.
I fully agree that our work requires craftsmanship and ethics and a lot of other things to be carried out with quality. However, I do not agree that there is a need for this to be a fifth element. I think that by examining what we mean by “Working Software” it is not needed.
“Working Software” does not mean “it’s done, since it is running”. To me it means that it actually works, in the same way that it fullfills *all* of its purposes, “fitness to purpose” if you will. This would mean that not only does it function, it also gives a positive user experience, is fit for future change, has quality enough to not surprise and so on. I strongly believe that the term quality do include all dimensions of such fitness.
Usually “Quality” is used in a more restricted meaning, which takes away from its broad spectrum of value. Again, by viewing “Working Software” to include this dimension we don’t need any specific craftmanship element. If anything, I think that David Anderssons suggestion of a fifth element has more merits. He proposed a fifth element focusing on Continous Improvement, which I think is at the heart of Agile, and unfortunately missing in the Manifesto.