Doesn’t everyone want their software programs to be bug-free? Isn’t that why you want to read this article? Let me greet you with good news but first, have a look at what two experienced IT experts, Mary and Tom Poppendieck, have to say about the zero-defect mentality.
“One of the fastest ways to kill motivation is what is called in the US Army a zero defects mentality. A zero defects mentality is an atmosphere that tolerates absolutely no mistakes; perfection is required down to the smallest detail. The army considers a zero defects mentality to be a serious leadership problem, because it kills the initiative necessary for success on a battlefield”
And the good news is that there is no such thing as a zero-defect software. Surprised? Were you expecting me to give a short-cut to zeroing on defects? It is to be noted that the aim should be to reduce the bugs as much as possible, not zeroing them. Because often, in pursuit of eliminating each and every bug, you end up creating more bugs when you make changes in the code. Dealing with bugs, therefore, requires a certain mentality. A zero-defect mentality can cause several unpleasant effects:
- Lack of courage to refactor complex, messy, buggy, but important pieces of code.
- The inability to make important decisions. Instead, it forces risk aversion and wrong decisions.
- Avoid responsibilities at all costs, leading to a coward and stupid behavior.
The concept of zero-defect is fascinating. But it’s far from reality. The last bug is always a mirage, but it doesn’t mean that testers shouldn’t strive to minimize bugs. Bugs can be harder to test, harder to define in detail, and harder to predict. That’s why, along with good defect tracking tools, testers require proper strategies. Several obvious strategies may help:
Test-Driven Development: The number of bugs is reduced by increasing the number of tests.
Continuous Integration: Instant feedback saves time and costs by helping identify problems early and fixes them in the production.
Automated Regression Functional Tests Suite: Functional tests find errors such as interface errors and integration errors by emulating user behavior. Needless to say, it’s important to have continuous integration in place to succeed with automated functional tests.
Root Cause Analysis: Going deeper into the root cause of the problem can not only fix the problem at hand but also prevent future bugs from this domain.
High Development Skills: Along with good defect tracking tools, high development skills are must-have for dealing with bugs. However, apart from some areas, they don’t always reduce bugs rate in the production.
The problem of defects is a never-ending one and dealing with them is a continuous effort. However, with the right set of defect tracking tools, skills, and mentality, this problem can be minimized but never eliminated. Zero-defect software is an illusion you should know of.