Total Quality Management in software development and QA
Total quality management (TQM) is a management approach that centers on continuous improvement across all operations within an organization. The goal of TQM is to increase the quality of products and service delivery by improving the processes used to create and deliver them.
Although TQM development began in factories and manufacturing facilities, it can be applied to any industry. This article focuses on TQM within the realm of software engineering and quality assurance (QA).
A brief history of total quality management
The first concepts of TQM emerged with quality control methods developed in the early 20th century. These methods centered on ensuring manufacturing processes produced items to a predefined standard. Statisticians like Walter A. Shewhart played a key role during this period, creating control charts and the plan-do-check-act (PDCA) cycle concept.
However, TQM's development as a unique approach gained momentum during and after World War II. Quality control techniques were extensively applied in U.S. military and industries to meet the war effort demands. Post-war, these practices were further disseminated and refined, notably in Japan. The country's industrial rebuild was significantly influenced by American quality management experts such as W. Edwards Deming and Joseph M. Juran. Their work in Japan set the foundation for TQM's development. Deming is particularly credited with introducing quality management as an all-encompassing system involving everyone in an organization, not just the production process.
The success of Japanese industry in using TQM during their post-war economic recovery caught the Western world's attention. The Japanese approach to quality emphasized continuous improvement (Kaizen), employee involvement in quality control, and strategic integration of quality into the management process. This approach led to the development of the TQM philosophy that recognized quality as a strategic tool for competitive advantage.
By the 1980s, TQM had become more formally recognized and adopted in Western countries, driven by Japanese products' global competitiveness (thanks to TQM, Toyota became the #1 car seller across the globe and still is). Western industries realized they needed to improve their quality standards, and TQM was the solution.
Principles of total quality management
TQM's main principles are defined in order to increase the chances of organizations achieving better quality.
- Customer focus
- Total employee involvement and effective communication
- Strategic and systemic approach
- Continuous improvement
While some publications separate employee involvement and communication, I see little sense in this separation. If all employees are involved, their efficient communication is a must as well.
Additionally, one of the core concepts within TQM is waste reduction. In TQM, waste encompasses any aspect of the production or service process that does not add value from the customer's perspective. Waste can take many forms, from defects in the produced products which lead to returns, rework, and customer dissatisfaction; to waiting time as a result of poor workflow or inefficient processes. TQM focuses on reducing all kinds of waste.
Customer focus
ISO standards define "quality" as a match between what the clients wanted and what is produced:
ISO 9000 (for any products): "quality is a degree to which a set of inherent characteristics fulfills requirements".
ISO 25000 (for software products): "software quality — capability of software product to satisfy stated and implied needs when used under specified conditions"
If clients receive products that do not meet their needs, they become dissatisfied. This dissatisfaction can negatively impact the company reputation. Additionally, the company must then remake the product, meaning that time was initially wasted on creating something of little value to the customer.
That is why one of TQM's main principles is customer focus: the organization's goal is to meet or exceed customer expectations. Without understanding and focusing on the customer, by definition, quality cannot be achieved.
Total employee involvement and communication
If everyone — even the frontline engineer — isn't motivated to at least report any problem they see, there's a higher chance that the problem will go unnoticed, and the company will produce more waste. And if this frontline engineer sees that top management doesn't care about fixing the problem, chances are they will never report anything again.
That is why TQM requires the engagement and commitment of all employees, from top management to frontline workers. It promotes the idea that everyone in the organization has a role to play in achieving quality objectives and encourages teamwork and collaboration. Efficient communication between all employees at all levels is essential for teamwork. Information related to quality and improvement efforts must be freely and clearly shared throughout the organization.
Strategic and systemic approach
Consider this scenario: the manufacturing department produces high-quality products and the quality control department thoroughly tests these products, finding minimal defects. Each department performs well within its scope, but the QC department is understaffed, causing some products to wait for weeks before being checked. The idle products represent waste because they don't provide value to the client by sitting and waiting to be checked. This is an example of a systemic issue where processes are not well-balanced, preventing the whole system from operating efficiently.
Systems theory views the organization as a complex system of interrelated parts, focusing on the organizational structure and processes. It emphasizes the importance of understanding both the individual components of the system and their interactions within the whole.
TQM applies this perspective by treating an organization as an integrated whole, where each function, process, team, and person is interconnected and contributes to the organization's overall objectives, especially in terms of quality.
Continuous improvement
Scientific research continually advances materials. For instance, developments in carbon fiber or magnesium alloys can enable car manufacturers to produce safer and faster vehicles. However, this requires adapting their production process. If car manufacturers don't keep up with changes — from customer demands to technological advancements — they risk losing market share and producing unwanted, wasteful products (cars no one wants to buy).
Continuous improvement, or Kaizen, is a cornerstone of TQM. This principle is about the ongoing effort to improve products, services, or processes through incremental improvements. As the world and customer desires change, there's simply no way to stop improving quality.
The purpose of TQM in software development and quality assurance
Product quality is one of the biggest competitive advantages available to companies. Research shows that 70% of consumers will switch brands for better product quality. Of course, switching products doesn’t eliminate the cost of poor quality in the first place — a 2018 report revealed that the cost of poor software quality has reached approximately $2.8 trillion in the US alone.
The research around the economic justification for good software quality is robust. Unsurprisingly, good quality products — and software — have higher chances of outperforming competitors. The main difference between manufacturing and software development is that clients don’t touch software, they perceive and operate it.
In terms of software development and quality assurance, flaws can take a variety of forms that mimic the flaws in physical product production but often go unnoticed for much longer. For example, if products with physical defects keep coming off the assembly line, it’s obvious that an issue needs to be addressed. However, if software defects are reported via Jira tickets, they could continue to pile up for a long time. Similarly, if unassembled pieces pile up in a factory, it’s obvious that there is excess work in progress. But if disconnected tasks in Jira await completion, teams could take a lot longer to connect the dots and realize their work is disjointed.
Unlike physical manufacturing where machines have regular maintenance schedules that keep the system in order, technical debt in software development tends to accumulate and go unnoticed until the project becomes unmanageable.
This puts even more pressure on software companies to embrace the principles of TQM, while also slightly adjusting the focus of the principles, to work towards long-term success.
Customer focus
The better the company is at gathering information from the clients, the less waste it produces. If a feature is built and then the clients don’t use it, all the effort on building this feature was wasted.
Software quality demands extremely efficient information flow not only within the company, but also between the client and the company. As software development is a process of information transformation, the preciseness, completeness, and timeliness of the information obtained from clients is essential.
In software development, significant effort should be spent on customer relations: from using CRMs to enhanced customer support. Voice of the Customer (VoC) practices are now a norm with TQM, where the company actively gathers and analyzes customer feedback, preferences, and expectations through surveys, interviews, focus groups, and social media listening.
The first practice to start the TQM journey in software development is to initiate dogfooding — the practice of becoming the client yourself and using your own product. This practice makes engineers understand the client better, thus improving the information flow and reducing waste.
Total employee involvement and communication
Software development is a knowledge-intensive process that necessitates deep collaboration, knowledge sharing, and continuous learning. These processes heavily involve cognitive and social interactions. If employees lack motivation or are risk-averse due to past negative experiences, their creativity and collaboration may decrease. This reduction in cognitive performance is also a form of waste, though it is challenging to measure or observe.
This is why the “Total employee involvement and communication” principle in TQM becomes even more human-centric in software development, reflecting the critical role that people play in determining the success and quality of software products. By focusing on collaboration, psychological safety, empowerment with autonomy to make decisions, provoking interest, and even investing in employee happiness, organizations can create a better culture. Better culture will empower employees to truly understand the customer needs and strive to continuously improve processes that support higher quality products.
Encouraging and facilitating continuous professional development, knowledge sharing, and cross-functional training also becomes a key component of TQM in software development.
The first step in the TQM journey would be to initiate quality circles with total buy-in from top management, so when employees raise issues, they are addressed.
Strategic and systemic approach
Software development is typically a team effort, with these teams functioning as social systems.
Without understanding social psychology — the study of how individuals interact within systems such as teams and companies — managers can inadvertently hinder team effectiveness and product quality. For instance, they might introduce individual performance reviews that disrupt the team dynamics. For more insights into social psychology and team interactions, consider reading these posts: Are you working in a team or a group, How a team changes to a group, and Detrimental impact of organizational decisions on team dynamics. These disruptive practices can reduce productivity and lead to more waste.
Also, teams don't typically function in isolation. Most companies have multiple teams that together form a larger social system. Misalignment between teams — such as when a sales team makes promises the engineering team can't deliver on — can reduce product quality.
Another scenario could be a product with excellent functionality but poor user experience because of weak communication between designers and engineers. The reasons for this can vary: perhaps the CTO has established processes that limit direct communication, or the engineers may be demotivated and only produce what's specifically in the specs without considering the end user's needs. A lack of qualified UX designers in the company could also be a factor. Regardless of the reasons, a malfunctioning system leads to wasted efforts and resources.
Total Quality Management (TQM) encourages a systemic approach to ensure the entire company works cohesively to produce and deliver what the clients need. It also emphasizes that product quality is a result of company culture, organizational design, and processes.
The first step in implementing TQM is assessing your processes for inefficiencies, delays, and other forms of waste. The Kanban STATIK exercise can be a helpful starting point. However, always remember to consider the social psychology perspective before making any changes. This holistic view of the system is the principle TQM is advocating for here.
Continuous improvement
TQM emphasizes continuous improvement (Kaizen), aiming to make incremental improvements over time to processes, products, and services.
TQM uses PDCA, or plan-do-check-act, which is an iterative design and management method used in business for the control and continual improvement of processes and products. It is also known as the Shewhart cycle, or the control circle/cycle.
As software can be modified, updated, and deployed much quicker than physical goods, TQM suggests shortening the PDCA cycle as much as possible. A shorter PDCA cycle allows for more rapid iterations, and changes can be implemented and evaluated in a shorter time frame.
Good examples of approaches aimed at shortening the PDCA cycle are:
- Continuous integration/continuous delivery (CI/CD): CI is a practice of automatically and frequently integrating code changes into a shared source code repository, while CD refers to the integration, testing, and delivery of code changes. Automating continuous integration of new functionality allows users to see new features without delays, enabling the company to gather user feedback faster and improve upon it.
- Feature flags: with CI/CD, the functionality is delivered to the clients continuously. Implementing feature flags allows for easy turning on and off of features for certain users or everyone. If the users' feedback isn't good, the feature can be turned off immediately for everyone, or feedback can be gathered from some loyal users. Feature flags also usually allow for A/B testing, where different user cohorts can have separate functionality enabled, and feedback is gathered from them separately, to choose which functionality is of higher quality for the users.
The continuous improvement principle applies not only to product functionality but also to software development processes. TQM is not compatible with rigid process frameworks.
Related viewing: Watch my talk on the topic of incremental process changes
Try total quality management practices in your organization
If you're interested in trying out just those bits and pieces of TQM practices that lie within testing and development, try these:
- Move from QC to QA: QC, the usual process of quality control we're all familiar with, doesn't improve quality, it just rejects what's defective.
- Employ Shift-left testing and other proactive testing strategies like early requirements testing: the earlier testing starts, the faster the functionality gets to the client, and the sooner the user feedback is gathered.
- Encourage your fellow developers to replace code reviews with pair programming or mob programming: both pair and mob programming produce higher quality results and do not delay the deployment as significantly as code reviews do.
- Suggest quality circle initiative to the management and your colleagues.