A Definition of Quality
My high school transcript is not a typical one of someone who makes their living dealing with computers for a living. I think I took only one computer course and failed it in glorious fashion after abusing my ability to sign myself out of it for the last half of the semester (I turned 18). My transcript is however heavily loaded with art credits. Art classes, like many other genres of class have a semi-standard format. Typically, they begin with a variation of “What is Art?”. Around grade 10 or 11 I saw an interview on The New Music with someone who said “Art is anything you can get away with”. To me, this was a Eureka moment where I had stumbled on something grand and from that point used that as the central principle for my art projects and to answer the semester beginning question. In fact, my OAC (grade 13) portfolio was entitled “Things I think are cool” and had no central theme topic wise other than I thought the subjects of the works interesting at the time.
Such a broad definition I think works because it opens up so many different discussions and allows for a wide variety of ideas.
- Is a photo-realistic painting art? Yes.
- How about a bunch of paint splotches on a large canvas by an abused alcoholic? Sure.
- A dress made of meat? You betcha.
This definition also works because it removes subjective opinion from it. An example of this is the classic “I don’t know what Art is, but I know it when I see it”. This fails because it puts Art in the eye of the beholder and can lead to “Is to/Is not” arguments. With a definition of “anything you can get away with” there is little argument over whether it is art or not and the argument becomes “Is it GOOD Art or not” which is an ideal place for subjective opinion to come into play.
With this in mind, let me introduce you to the definition of Quality that I use; via James Bach at Satisfice.
Quality is Value.
When I saw this the little light bulb in my head went off again.
- Does finding the crash bugs in a product increase it’s Value to the user? Yes. It will not crash and inconvenience them, therefore it’s Quality is increased.
- Does improving the usability of the product increase it’s Value to the user? Yes. It will be more pleasant to use, therefore the Quality is increased.
- Does improving the processes by which the product is made increase it’s Value to the user? Yes. Current and future versions will be easier to create and maintain which improves delivery to the user both in time and features.
- Does the code checked in since the last build decrease the Value of the product to the end user by making it less convenient to use? Yes? Then it is a bug and needs to be redesigned.
This definition also works because it is realm neutral. It applies not only to software, but to traditional manufacturing as well without any tweaking.
Let’s look at a “Should we ship our product” scenario where the question really should be phrased as “Is our product of sufficient quality to ship”. In an environment where “sufficient quality” is defined as “no Critical or Serious bugs” the answer becomes a simple output of the bug tracking system. In an environment that has a “Quality is Value” orientation, the answer is a product of a number of variables: Are all requirements met? Are they met correctly? Is there sufficient unit tests checked in? Has the code been “stable” for a period leading up to this decision? All these are important questions that need answers and go beyond just a simple metric output from some system, though that output is certainly a necessary input into the ship decision.