Some questions are too obvious to ask and think about, for example, if someone asks “Do you prefer to have quality in your way of life?” the answer is obviously “Yes!” – But it is not simple as it seems, there is a fire behind that smoke. Here is how quality should matter.

The Definition Side:

So how one does defines quality? Let’s start with the basics first:

  • ISO 9001: “Degree to which a set of inherent characteristics fulfills requirements.” The standard defines requirement as need or expectation.
  • Six Sigma: “Number of defects per million ” …Where, Japanese are now considering this on 10 million opportunities J)
  • Fitness for use, where Fitness is defined by the customer

We have a product, its characteristics, the number of defects it has, and then its usability. For customers and makers of that product this becomes a beacon to follow. But here is my question;

  • What is fit for you is it fit for me as well?
  • What you call a characteristic, I call an error?
  • Would you say that this is fit for you, after 10 years?
  • Does having no defect means the product is still in accordance to quality?

These are indeed very interesting questions, and this gives us to look at the context driven side of the quality. Let’s see how we can further define it.

“If you don’t care about quality, you can meet any other requirement” – Jerry Weinberg

This definition actually puts quality as the foundation of everything that happens while we build software. Requirement specifications are the baseline from where the product or one or more of its component start to take its shape.

Jerry Weinberg puts quality in this definition:

“Quality is value to some person”

Now imagine a mobile device in your head all distributed into several components placed neatly on a white sheet of cloth. The screen set, battery, SIM, Memory Card, Hands free, internal circuit, cover, protector, and charger. Ask yourself, what is the use of these pieces for you? Well, if you are a mobile technician you would be delighted to see these, as you can understand what each component does, but if you are a common housewife or a teenage kid, it does not matter to you, in fact, it is boring!

So for a mobile device completely integrated and functioning, the value it gives is something else for someone and when it’s apart, the audience changes.

Same thing happens when we are developing software. As a developer the thinking is all about those DLLs, function calls, logics, loops, conditions, configurations, queries, data handlers, and tools. That is the value to the “developer” and “architect” for that software.

For the user, the game changes, the charisma, the functions, purpose, reliability, security, functionality, and compatibility kicks in.

James Bach add a simple annotation to the definition…

“Quality is value to some person (Who matters)”

What I like, you may not like, what I don’t want, you may want. This simple analogy changed the concept of having standardized quality criteria for anything that is being manufactured or provided to the customers.

This also creates the sense of having the importance of customer delight while using the product. Consider the mobile phone applications being designed only for business people as they use it for their businesses and communication, and now question, would a housewife would feel the same urge to use that application? No she will not!

To make it simple we need to categorize our users into several segments on the basis of their age, sex, religion, demographics, culture, business, work environment, and even education. To determine the right audience for our products we need to use the proper tools and platforms to determine what our users will be like. Google, Facebook, LinkedIn and other such social media has made it easier for us now.

The story does not end here though…

Markus Gartner, while explaining about implications of the above definition in his blog, puts up an interesting addition, the time.

“Quality is value to some person (who matters) at some time!”

Now we know that our customer relies on what we provide to them, we are aware on the contextual importance of their existence, but now, we need to consider them under a time frame, its own contexts, and scenarios, resulting in the interacting behavior to our customer.

For example, an ATM Machine, working fine and works well, performs it built in functions as per the needs of the customer. Even care for the deaf, dumb and blinds. Now put this scenario into the time factor scenario.

You have a medical emergency in the middle of the night, and you rushed to the hospital, on the way you realize that you don’t have any money. So you go to the nearest ATM, and there, you see that it is out of the cash.

In the second scenario, you will reach the ATM; it works fine, puts in your PIN, and the error shown “Link Down”. These anomalies put a system into an unwanted quality perspective. You have never complained about ATMs before, it worked fine, sometimes not, but at a particular time frame, when it does not work – the quality comes crumbling down.

What We Learned?

Well, we cannot standardize or script quality for our users. Because in this murky world nothing is guaranteed about what user can expect from our product as per her needs and context and in a particular time frame.

This actually puts the software development team in a very challenging position. The responsibility umbrella is on all of us and we cannot finger point any of the team or individual for regarding the whole sole responsibility for quality.

As they say; It is a journey