28 July 2009

Festering Manifestos - What is Software Quality?

Referring to The Manifesto for Software Craftsmanship, product development executive Charl Dreyer asks
Is another manifesto necessary?
The Manifesto for Software Craftsmanship offers up quality addenda to the Manifesto for Agile Software Development. Charl Dreyer wonders if this is necessary (see Dreyer’s Raising The Bar).

Robert Vitello, CIO at New York State Labor Department, says
Although well meant, the Manifesto for Software Craftsmanship seems too unspecific to have real value on the ground. When such pronouncements are too lofty or too general, they are subject to the kind of variable interpretation that cause the authors to rail against the original Manifesto.
I agree with Robert’s critique. There is not much mental traction served up by platitudes like steadily added value or productive partnerships.

Nonetheless I signed The Manifesto for Software Craftsmanship because I support the intent.

If quality is sufficiently defined, who would be anti-quality?
It is perhaps important to remember that
the quality of something does not necessarily determine its value
Something might be good because it is useful, because it is beautiful, or because it exists. I like the aesthetic appeal of sparse but powerful code -- one or two lines of code that does a lot - but I can't assert that it always provides economic value. Sometimes we favor elegance over expedience; not always providing demonstrable economic value. We are employed in the software business to increase economic value.

The craftsmanship addenda to the agile manifesto are born from noble purpose. Open-ended, nearly inscrutable bromides like “well-crafted software” are potentially helpful insomuch as they can promote collective examination and collective improvement. Yes, examination and improvement are good! Lofty, intellectually fuzzy declarations are potentially helpful insomuch as they promote thought about-, and discussion of-, elusive terms like “value” and “quality”.

I like the concept of a team-level “craftsmanship contract” during chartering. I took a swing at this topic a while back in my post Team Manifesto - Craftsmanship, Behavior & Minutiae. Creating a craftsmanship contract starts with the open-ended question
What does software quality mean to you?
The goal is to end up with testable assertions. That is, to end up with prominently displayed bullet points that are meaningful to the team and testable in retrospectives.
What constitutes software quality?
Is software quality a personal matter or is it a collective concern of the team? I would like to hear your thoughts.