After 13 years in the field of Quality Assurance, one gains many insights from working with different projects, technologies, teams, and businesses. As an iOS QA Team Lead at Cognizant Softvision, I would like to share these insights and how these experiences have shaped my visions and beliefs around the quality of a software product.
Quality can mean many things
We should start with understanding what users comprehend as quality in the software they use. I think this is one of the most important key points that a business should take into account, as the users pay for their products and services.
Good to impressive UX
This applies mostly to commercial applications and software solutions. Of course, people will instinctively think that the application is of high quality if it looks fancy. In a similar manner, this does not mean that other software applications for targeted use by companies don’t need to “look good.” For example, when I first saw Bugzilla back in 2007 it was just a bunch of fields put together on a page with no intuitive UI/UX whatsoever. Of course, you get used to it and for engineering, it doesn’t need to be “a work of art,” but this never hurts and may increase productivity as people get more familiar with it faster.
In this time and age, we have updated iterations of such tools and to be honest, they look more “elegant” and intuitive. Jira in its current form it’s adopted in a large spectrum of companies and projects and it shows how easy it is to be adopted by various engineers, managers, and executives. Over a decade ago, you would need to export certain reports from such tools, sort the data in a more easy, in order to understand the format, and then send it to your managers. This was done solely because less technically-oriented people found it challenging to decipher such reports. We have come a long way in engineering since then.
Let’s get back to commercial applications. When you order food you will need to find a restaurant and order quickly without any “thinking so much of it,” as you are probably hungry, right? This is where a good UI jumps in, behind a very solid and simple UX. Remember, this needs to be adopted by all people regardless of whether they have a Ph.D. in Quantum Mechanics or not.
Does the software have issues and defects that cause frustration?
Unfortunately, this happens for both startup applications and software that has been in the market for decades. Remember when you got that popular “get a ride” app update and when you needed to get that ride to reach an appointment, the app crashed? This happens, but any serious business will make sure this happens very rarely, if not at all. Right now this is a byproduct of the faster and faster time-to-market need for features and updates at least on commercial applications.
Let’s go back to the dial-up era. Remember how frustrating it was when it took five minutes to simply open up a web page? Well, in the same manner, today we feel frustrated when shopping in an e-commerce app and we are stuck in the loading screen for two to three minutes at checkout. Good performance code is also a key quality indicator for both customers and developers.
As users, we are used to the trade-off between quality and cost
When buying a new home, a new car or a new phone, we tend to look for certain features or qualities and trade off others. For example, when looking for a new home you think about what neighborhood it’s in, the number of rooms, how much space you get, how much more you need to invest in renovating so that it fits your budget, and so on. So for any given home you look at, you will probably need to cut down on one or even more of the above amenities/features in order to fit your budget.
Your phone broke? No problem, time to get a new one! There’s this new Retina screen on “Manufacturer X,” but “Manufacture Y” has their phone’s screen display in 4k. One has more storage capacity than the other and a better camera. Both have top operating systems and very nice UIs. Of course, there’s a $200 difference in price between X and Y. Which one will you pick? Again, the decision comes down to the budget.
This fundamental principle of trading quality for cost also applies to business. Companies do not have infinite funds or time, which may or not be the same thing after all, and the people calling the shots need to balance this trade-off. How many features do we get in before release? Do we have enough time to test them all? How much revenue will this feature bring in? These are all pertinent questions that need to be answered each time before any release to the public.
What factors have contributed to the increased awareness of quality in modern business?
Competition is a huge factor that has contributed to the increased awareness of quality in modern business. The recognition of different continents’ big players competition had a huge impact on quality awareness concerning goods and services. The west coast consumers bought goods and services regardless of their quality, but during the 1970s, they started to notice the difference in quality between west and east side goods. Because of this, there started to be a higher demand for high quality, long-lasting, and reliable products. If that meant buying more eastern products, then so be it. This, in turn, hurt the west economy. Consumers, now more than ever, compare, evaluate, and choose products critically for total value-quality, price, and serviceability. Improvements in technology, reassessment of inadequate managerial philosophies, and the economic impact of international competitiveness have also been important factors.
Internal Quality could be defined as the “Test Plan” for a software product or service. So having a good testing strategy will ensure that the product is shipped with the best quality. This means empowering early testing, involvement of QA in planning, and of course solid principles of testing when the product is developed. Years ago, we used to have a rigorous methodology of measuring when there was enough testing before release– having regression done and a small number of open bugs which are not critical ones. Today we basically follow the same rules, but in an Agile environment this becomes more dynamic and we want to ensure that quality is still a priority. This is done using solid principles, by QA and Development. For example, developers should make sure that the system is implemented in such a way that any new feature added will not impact existing features in some fundamental way – this will mean that testing can be trimmed down to more basic flows, and automation will be maintained smoothly and run on new and old parts of the system consistently.
One outstanding example of this was the 2018 game “Red Dead Redemption 2.” I was in London sometime before its release and there were posters about it everywhere. Shortly after the release, Rockstar reported a great success in sales. I looked up the development and marketing costs and I was surprised to see that the marketing fund was triple compared to the development figure. The key thing to take into account here is how marketing played a huge role in selling the software product, so marketing can be easily considered a quality attribute for selling software and services.
Of course, as mentioned earlier, some of these attributes are strictly dependent on the development of the product, like how polished it is at the release date, support over time, and the general feedback for UX. There are many examples on the opposite side of what Red Dead Redemption 2 did, which had a lot of press coverage and marketing funding but once released live, people found so many bugs that they requested refunds for their purchase. This not only impacts the current sales of the company for the product at hand but will make a rippling effect on future releases from that company. So we can surmise that both marketing and development should have an equal amount of importance when it comes to pushing for high quality.
Customers care about new features being delivered quickly
In this modern age, due to all the items listed above, users will want the latest and greatest all the time. That’s why we, as engineers, managers, and executives of software companies, need to adapt. One of the key aspects to consider in this ever-changing field is to focus more effectively on where the budget will make a huge impact and that is Internal Quality. Both testing and coding architectures will play a major role in this. Adopting automation for regression testing will also speed up shipping or allow for more features or more complex features, iteration after iteration.