We love consulting. It provides us with the opportunity to experience a great deal of diversity. Not a single one of our clients does their development the same way and that kind of exposure is priceless to us. We learn so much, we get to see trends in development processes, tools, management styles, the works. We get to experience our client’s cultures, where they do things exceptionally well and where they are learning from their unsuccessful attempts. We get to implement tools we have researched, philosophies we have read about and we also get to fail, first-hand…and then learn from these mistakes. This type of experience is invaluable, especially when trying to learn how to do something better, how to build capability and how to develop maturity. This is the basis from where we are able to provide our Software Quality Assessments.
Software Quality is of utmost importance in a world where virtually all financial, communication, health and even social transactions have become digital. In fact, where a great deal of all these transactions are happening without human interaction as the digital world becomes ‘Intelligent’. Even with this kind of digital maturity, software development is still a process- a human-led process, and (as we all know) humans are inclined to make mistakes. So, with the increasing complexity of development processes (Machine Learning is not exactly a fly-by-night exercise) and this delicate human characteristic in mind, it is important to regularly assess the quality of your software development processes.
Agile methodologies have moved away from using typical software testing approaches and have moved towards the concept of “Quality Engineering”. Quality is the entire team’s responsibility and should be implemented throughout the project lifecycle in varying ways, not just in the testing of the actual code or product. Some of our clients are doing some exceptional work around ensuring that these checks and balances are put in place, others are trying their hardest to get there but aren’t quite there yet. Despite these varying levels of maturity, high levels of quality maturity are often difficult to achieve.
South African companies are starting to grasp the concept of agile and embedding quality into the entire process and they’re doing it quite well, however very few companies get agile at scale right. Where larger companies have adopted agile and have split their development teams into multiple feature teams (or squads, or multi-disciplinary teams), integration of these teams and their products seems to rarely be considered, even where there are release trains and release train engineers in place. Regression testing across the train does not seem to be happening, performance testing the entire integrated system is not necessarily happening, System Team level resources are not always accommodated for and quality processes are no longer adhered to once the feature team has delivered their work product.
So at a macro level we often forget to integrate the same level of quality that we do at a feature team level. In fact, at a micro level it has also been our experience that although quality may be integrated into the deployment pipeline this is often limited to unit testing. Functional testing is often not included in most automated deployment pipelines. This is not to say that functional testing is not automated, or not happening, in most cases it is but it exists in its own pipeline. So despite improved relationships with development and test, for some reason we often see that there is this segregation.
There are many nuances of quality adoption from one client to the next. Products are different and unique, development methodologies are always a different flavour, tools and processes are different and people are of course very different. So how then do we measure quality or provide guidelines for improvement? There is no quality or test maturity model or assessment that is built to accommodate for the unique attributes of each organisation. The models that do exist can provide the standards and guidelines for quality but, like a human child, understanding an organisation’s uniqueness (wart’s and all) is the only way to truly understand what is required to support them. When we assess quality, we approach this from an independent, unbiased perspective.
We understand that at the heart of an organisation there are people doing their level best to make a success of the company they work for. With this understanding in place, we take a conscientious approach to our assessments, we make every effort to understand the heart of an organisation- its people. So although we assess the landscape, tools, processes, documentation i.e. all of the artefacts of a development organisation, we understand that it is in the experiences and interactions of the people that work there, that we will find where the improvements in quality are really required.
We, at QoT Solutions, believe that if you want to improve the quality of your software, the best place to start is with your people. And if for some reason you are still having challenges, we are an email or a phone call away.