Improving Product Quality
Improving product quality is always a hugely controversial topic. Not the desire to improve quality, which everyone agrees should always be a continual process. The controversy comes in on how to improve quality. For instance does fixing lots of minor issues (bugs) improve the quality of the product? Does adding features customers are missing and demanding add to the quality of the product? Do you need to really go deep and address underlying problems of reliability and performance? All of these need some attention. But how do you decide where to spend your time? For instance is a 20% increase in performance equal to 30 minor bugs being fixed? Is there a formula to decide these things?
I think to truly affect quality, it must be from the customer’s perspective. Sorry QA (Quality Assurance Department), but this usually isn’t strongly related to bug counts in the bug tracking system. You really need to talk to customers to determine which parts of the product are adversely affecting them. Is it due to a procedure that has too many steps? Is due to something they perform over and over being slow? Is it lots of minor annoyances in fit and finish?
The real measure of quality is customer satisfaction. And to improve customer satisfaction, you really need to go to the customer and find out what is bugging them. Deciding to improve quality by deciding to do an extra month of general QA just doesn’t provide the desired results. Often the customer’s main quality perception problems have nothing to do with the product, but are due to say receiving a bad invoice or not being able to get through on a customer support line. Sometimes just the frequency of hotfixes and service packs can affect perceived quality. These areas need to be addressed, and often can have an effect equal to quite a large number of real bugs in the product.
Quality is a continuous process. It isn’t just the testing phase of a new product release. It has to permeate all aspects of the company and its culture. You need to be actively working to improve a products quality at all times. You have to continuously be listening to your customers, so you can respond to their needs and pain points. You need to make sure your finite resources are focused on solving the real customer issues and not just applied randomly. This is always a challenge, but it is one of the things that makes software development fun and rewarding.