Long considered to be the father of statistics-based quality control, W. Edwards Deming’s words of wisdom often form the platform for how we look at quality and, critically, why it matters.
According to Deming, improvement is not a compulsory action but in order to survive companies must always strive to learn, And, while quality can be measured objectively, defining the domain-specific elements of quality for your organization is also particularly important.
When we take that into account, there are several approaches you can take to improve software quality, but they all generally involve baking quality into the development and organizational processes.
Practicing test-driven or behavior-driven development
In the QA part of the digital lifecycle, there are two practices to consider in the development pipeline.
TDD (Test Driven Development) refers to a style of programming in which three activities are tightly interwoven;
BDD (Behavior Driven Development) is a way for software teams to work that closes the gap between business and technical people by encouraging collaboration across roles. This will allow teams to;
- Build shared understanding of the problem to be solved
- Work in rapid, small iterations to increase feedback and the flow of value
- Produce system documentation that is automatically checked against the system’s behavior
Continuous Improvement as a strategy
Taking the above into account, let’s look at some of the ways that continuous improvement can have an impact on quality:
Integrating modern continuous integration practices
Although continuous improvement is a well-accepted part of quality control in a physical product, digitalization has its own set of processes and practices.
Continuous Integration (CI), for example, is a software development practice where members of a team integrate their work frequently. For the most part, each person integrates at least daily, which leads to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.
Many teams find that this approach leads to significantly reduced integration problems and essentially allows a team to develop cohesive software more rapidly.
We can narrow down the advantages of CI in Quality Assurance as follows:
- Organized Test Packages
- Automated Testing
- Automated Regression Testing
- Integration Testing
- Smoke Tests
- Automated Deliverables
- Automated Deployment
- Automated Reporting
- Health Monitoring
All these advantages will help establish both a defined way of working and, in theory, lead to increased customer satisfaction.
Prioritizing Continuous Improvement
Organizations, projects and teams with weak capabilities usually begin with a lack of definition.
That means that there is a need to ensure that the team (and, by association, the organization) must not only take time to routinely inspect and adapt their values or practices but also make continuous improvement a priority.
By defining where a process begins and ends, the inputs and outputs required, the rules that govern said process, where to find which piece of information about the process and the highlighting of roles that include quality and the required skills or tools, the prudent organization can overcome a lack of definition.
Dealing with debt
One way to improve quality processes is to consistently track technical debt and allocate resources to paying that debt down.
This gives you the quantitative information required to work out priorities in terms of frequency. Once these priorities are identified, then you need to obtain either qualitative or quantitative information on the impact of these bugs, defects and user issues. Then, and by applying appropriate weight to the frequency and impact of different categories of issues, you will have a curated list to look at and make decisions.
“Stopping the line”
In Lean, this concept is called jidoka and is intended to address significant quality control issues.
Jidoka follows the theory that to have the best quality for your product and the best opportunity for continuous improvement, you must cease all production when an issue occurs and fix that situation before resuming work.
Potentially Shippable Product
Making certain that software is always in a state that lends itself to being shipped when required is another key element.
An Increment (sometimes referred to as a ‘Potentially Shippable Product‘) is the value delivered for the customer via the Product Backlog Items completed during a Sprint. Each Increment should interface seamlessly with all prior Increments and stand alone as a distinct addition of value to the Product.
Leveraging Feature Toggles
Feature Toggles (often referred to as Feature Flags) are a powerful continuous improvement technique, allowing teams to modify system behavior without changing code.
Toggles fall into various usage categories, and it is important to take that categorization into account when implementing and managing these tools.
For instance, toggles introduce complexity. We can keep that complexity in check by using smart toggle implementation practices and appropriate tools to manage our toggle configuration. The caveat is that we should also aim to constrain the number of toggles in our system.
Emphasizing solid Project Management Skills
Effective Communication with the team, stakeholders and customers enables us to solve differences, build trust and garner respect in the organization.
Setting up very tight feedback loops helps us get the most valuable feedback more often, which helps us avoid wasting time and effort on things we don’t need to be doing. A relentless focus on continuously improving both your process and the product will result in more engaged employees, more competitive product and services, better customer service and a proactive learning culture.
The Bottom Line
Continuous improvement offers a trackable method for your business to get better at any point in time.
In fact, adapting and learning new Quality Engineering platforms, Agile delivery practices and DevOps is the way forward to continuous process improvement, modern software development practices and digital transformation for any organization. In many ways, continuous improvement should be a consideration from day one, and these strategies will certainly help.
Ultimately, achieving your business goal will be a matter of trial and error. To quote Deming, “if you can’t describe what you are doing as a process, you don’t know what you’re doing” … and maintaining a level of continuous improvement is a good way to make sure you are on the right track.