“Inspection does not improve the quality, nor guarantee quality. The inspection is too late. The quality, good or bad, is already in the product. Quality cannot be inspected into a product or service; it must be built into it.” – W. Edwards Deming.
A big number of bugs that are discovered in testing processes are easy to prevent. The fact that such bugs are discovered at the testing stage, which is usually at the end of the process, shows that the developers did not perform primary quality check of their work. This wastes the time of both testers and developers, reduces motivation and efficiency, and slows development. The costs go up significantly as a bug moves through traditional SDLC. For example, IBM estimates that if a bug costs $100 to fix in the Gathering Requirements phase, it would be $1,500 in the QA testing phase and $10,000 once in Production.
While we can’t expect to test everything and go our entire lives deploying a product that’s 100% error-free, we can make strides to safeguard software as best we can. Built-In Quality is a core principle of the Lean-Agile mindset. It helps avoid the cost of delays associated with the recall, rework, and defect fixing. The Built-In Quality philosophy applies Systems Thinking to optimize the system, ensuring a fast flow across the entire value stream, and makes quality everyone’s job. Built-In Quality practices ensure that each solution element, at every increment, meets appropriate quality standards throughout development.
One way to drive forward Built-In Quality is to adopt the Zero Bugs approach.
Without Zero Bugs approach, you typically have the overhead and increasing cost of fix, as well as a culture in which people are used to bugs being a standard part of their environment which only makes the backlog of bugs grow (the broken window theory).
Zero Bugs Approach means applying a policy where the team keeps a very low (optimally zero) threshold of open bugs. Once the threshold is reached, the team “Stops the line” and fixes the bug(s). Developers and Testers are pairing and therefore part of the bugs isn’t even reported in the bugs management tool and is fixed immediately. There is no Severity indication as a bug is a bug. Once you implement the Zero Bugs approach, you will no longer have to manage and prioritize a never ending backlog of bugs.
Progression bugs, which are related to new functionality, are fixed immediately as part of the Story Definition of Done. Regression bugs are negotiated with the Product Owner who decides whether to fix the issue or to obsolete it. If the fix doesn’t risk the iteration, the bug will be fixed immediately. If it might risk the iteration, then the PO prioritizes the bug vs. the team’s backlog, and the bug will be fixed at the latest as top priority of the next iteration.
The Zero Bugs approach is just one of many ways to install a Built-In Quality culture and to shift left the quality awareness.
AgileSparks offers a 1-day Built In Quality course for tech leads that covers how leading software companies are changing their approach to quality, in order to achieve speed and continuous delivery. This course pushes the boundaries of the quality mindset and challenges the thinking about quality ownership within the team.
More and more organizations want to become more agile these days. When the theory hits the shores of reality, few organizations can get to an idealistic agile feature team that does all testing within sprints, has no need for release-level testing processes, and where everything is fully automated continuous deployment style. Usually the testing organization is in the eye of the storm and perceived as the main bottleneck. In the lecture we will focus on how we manage the testing processes across release lifecycle in complex environments when it is not realistic to finish all required work within a sprint, how to visualize and reduce testing batch sizes within sprints/releases, practical suggestions on how to deal with the testing bottleneck, how to deal with the mindset issues and last, how to run stabilization/hardening periods using Flow-based thinking.
A presentation By Ronen Bar-Nahor and Yuval Yeret @AgileIL12