We talk about it a lot, but how exactly do we define “High Quality”?
What’s the difference between an Apple phone and a Nokia phone? Is it how they’re built and what functions they provide? Is it how they’re sold and marketed? Or is it how they feel to use?
Many people associate the quality of a device with having “zero-bugs” and working as it should, but Nokia phones are some of the most reliable devices around. So what’s the secret that has resulted in a $700 billion difference in the value of these companies?
Yes, Apple provide more functionality than the old Nokia phones, and they have a spectacularly infamous marketing department, but really what makes these devices different is the experience of using them. This intuitive feeling is what makes many people believe that Apple products are superior in quality to Nokia.
This feeling is what is brilliantly referred to as ‘Perceived Integrity’ by Mary Poppendeick’s Lean Software Development: An Agile Toolkit book. Meanwhile, the way the software is built is called “Conceptual Integrity”.
We believe these two concepts are what makes up and define the true meaning of quality in software:
This includes the elements of the software or product that the end user sees and interacts with. It includes the display and user interface that they engage with, and how it feels to use it.
We like to think of Perceived Integrity as including 6 elements in a Hierarchy of User Experience Needs, slightly adjusted from the traditional concept:
(Fig. 1. Bluefruit’s adapted Hierarchy of User Experience Needs)
First and foremost, the software needs to function as it’s supposed to. Each feature should work as specified, and controls should perform as expected.
The software should not crash regularly or have errors that make it unreliable.
The software should be efficient, and provide the simplest solutions to problems so that the user expends minimal effort for each task.
Similarly to economy, the software should be focused on the customer. Each feature should be intuitive and easily understandable to the target client.
The software should be providing real value to the customer on every level. If a feature or option isn’t providing any value whatsoever, there is no need for it to be there.
Finally, the software should be enjoyable to use, and give the user a sense of satisfaction and pleasure when using it.
Having high Perceived Integrity means that all of these elements are brought together, making the experience “just feel right”.
As well as an Apple iPhone, a great example of a product with high Perceived Integrity is a FitBit watch.
FitBit Inc, the company who produce smart watches for the fitness market, were recently valued at just over $8 billion. There are plenty of other fitness watches in this sector, such as Jawbone, Moov and Misfit, that are less expensive and seem to offer similar, if not more, functionality than FitBit watches. So how has FitBit become the market-leader?
Ultimately, the company has successfully gone through the User Experience hierarchy of needs and reached the peak – providing a pleasurable experience for its users. It’s intuitive, smooth and does what the user wants without them having to really think about it.
This includes the elements that are going on beneath all of the above, and include things that the end user will never see or engage with.
The software must be scalable, meaning that it must be bug-free and ‘structurally sound’ enough that new features can be added without causing issues with current ones.
The source code should be well documented, clear and well-written, so that any developer can understand and work on it to add new features. This mitigates the risk of decreased productivity if the key developer leaves or becomes ill.
Similarly to Habitability, the software should be clear and well-written so that it is easily maintained by others. Tests should be written throughout, preferably using TDD practices.
(Fig. 2. Bluefruit’s Quality Concept, adapted from Lean Software Development: An Agile Toolkit)
Conceptual Integrity lies within the roots of the plant, where end users can’t see it, while all the elements of Perceived Integrity grow above the ground where the end users can see and harvest the valuable fruits.
So, even if your software has high Conceptual Integrity (if it is bug free and can be scalable, habitable and maintainable), this is just one small part of the whole picture; a part that isn’t even comprehended by the end user. Simply measuring how many bugs your software has and aiming to reduce it isn’t really an accurate measure of quality at all.
In our opinion, software shouldn’t be considered ‘high quality’ until it has high Perceived Integrity as well as Conceptual Integrity, and meets all the User Experience needs mentioned above.
If you’re interested in reading more on the topic of Perceived and Conceptual Integrity, we’d highly recommend reading Mary’s book (Chapter 6, “Build Integrity In”).