Originally written in French. Translated by AI — the meaning has been preserved, not the prose.
Porsche published an interesting case study on the zero bug policy, applied to My Porsche. The idea can seem unrealistic at first. Everyone knows bug-free software doesn't exist. Even the best products have defects, regressions, unexpected behaviors, edge cases.
But that isn't the point.
A zero-bug policy doesn't promise perfect code. It aims at something else: to stop accepting known bugs as a permanent stockpile to be prioritized, requalified, and pushed back.
The real problem with bugs isn't just that they exist. The real problem is the organization that grows used to keeping them.
We open a ticket. We assign it a priority. We categorize it. We review it two weeks later. We change its priority. We discuss it in a committee. We push it back because a roadmap feature is more urgent. Then a customer complains, the bug resurfaces, and the team scrambles to handle in a rush what it should have decided clearly long ago.
At that point, the bug is no longer just a software defect. It's a decision defect.
Bugs don't count until there's a crisis
In many organizations, bugs live in a strange limbo.
They exist. Everyone sees them. They drain energy. They annoy customers. They clog up support. But they don't really count in planning.
The roadmap moves forward. The planned features arrive. Deadlines are visible. Trade-offs are made on the new topics. And the bugs sit off to the side, like an implicit burden we'll deal with when we have the time.
Except we never have the time.
So bugs become a priority only when they're too visible: a big customer complains, a demo breaks, support gets overwhelmed, a regression hits a critical flow, an executive stumbles onto one.
This logic artificially pits roadmap against quality. As if features were the real work, and bugs a noise to manage around it. But a bug consumes capacity. It also consumes customer trust, internal credibility, support time, and product attention.
Not counting it doesn't make it free.
What "zero bug" really means
A zero-bug policy doesn't mean there will never be a bug.
It means: zero known bugs left undecided.
The nuance is essential. The goal isn't to eliminate the unknown. The goal is not to organize the permanent acceptance of known defects.
When a signal comes in, the team has to decide quickly: is this a defect or not?
If it's a defect, we fix it.
If it isn't a defect, we don't treat it as a bug. It might be an improvement. It might be a feature request. It might be a misunderstanding. It might be an interesting topic, but not a priority.
In every case, there's a decision.
What the zero-bug policy refuses is the third state: "We know it's a bug, but we're keeping it in a list for later."
That "later" is often the real problem.
The trap of the bug backlog
A bug backlog creates an impression of control.
Everything is listed. Each bug has a priority. Some are blocker, others major, minor, trivial. You can filter. You can sort. You can hold a committee. You can produce reports. You can say the topic is under control.
But prioritizing a bug once a month isn't handling it.
Often, it's just accepting that it stays there.
The stockpile of bugs creates its own work. You have to check whether the bug still exists. You have to know whether it's still a priority. You have to know whether the affected customer is still a customer. You have to know whether it's still reproducible. You have to know whether it should jump ahead of another anomaly. You have to re-read, requalify, replan.
The organization then spends its energy administering defects rather than restoring quality.
And the most absurd part is that many of these bugs will never be fixed.
We know it. The team knows it. Support knows it. The Product Manager knows it. But the ticket stays open, because closing it means owning a decision no one wants to carry.
A zero-bug policy forces that decision.
Two decisions: defect or non-defect
The strength of the Porsche approach lies in its simplicity.
Instead of multiplying categories, the team reduces the decision:
defect: it's a defect, so we fix it;no defect: it isn't a defect, so we don't treat it as a bug.
This simplification doesn't mean everything becomes brutal or automatic. You still have to understand the impact, the context, the customer, the frequency, the severity. But the discussion has to lead to a decision, not to a new category.
An improvement can be useful without being a defect.
A customer request can be relevant without being a bug.
A behavior can be frustrating without being a priority.
What matters is not to hide the trade-off behind a taxonomy.
If it's a real defect, we handle it. If it isn't, we own that. But we don't keep a known bug forever in a queue that mostly serves to avoid choosing.
Bug or feature: the customer doesn't care
From the customer's point of view, the distinction between bug and feature is of little interest.
The customer doesn't wonder whether they're suffering from a bug, a missing feature, a poorly built feature, or a feature that doesn't match their need. They feel pain.
Software can have no technical bug at all and still fail to meet the customer's need. The pain remains real.
Conversely, some bugs are objectively defects, but their impact is low. If the user has to click a button twice, it's not ideal. But if, alongside it, a missing feature prevents them from filing a mandatory tax or legal declaration, the missing feature is more critical than the minor bug.
That's why the ticket's category shouldn't replace the analysis of the pain.
The real question isn't: "Is this a bug or a feature?"
The real question is:
- what pain does this create?
- for whom?
- how often?
- with what impact?
- is it blocking?
- is it regulatory?
- does it generate support?
- does it destroy trust?
The taxonomy can help measure. It shouldn't decide in the team's place.
Taking a radical stance: no more separate bug cards
We can go further.
In many organizations, I would remove separate bug cards in Jira or equivalent tools. I would keep only work cards.
Why?
Because the bug / feature split often ends up creating two priority systems. Features are driven by the roadmap. Bugs are driven by urgency, support, customer pressure, or prioritization committees. And between the two, nobody really looks at the whole through the lens of pain and value.
A work card should carry a problem to solve.
Sometimes that problem comes from a software defect. Sometimes it comes from a missing capability. Sometimes it comes from poor design. Sometimes it comes from technical debt. But the trade-off should stay the same: what pain, what value, what impact, what decision?
The morning daily can then serve to decide what really matters right now. Not to debate for twenty minutes over whether the item is a bug, a feature, an improvement, or a rework.
Of course, some organizations need quality reporting. You can keep tags, metrics, minimal categories. But these are secondary pieces of information. They shouldn't structure the whole decision.
Either we handle it now, or we say no
The worst status for a bug isn't "not fixed."
The worst status is "to be prioritized later."
"Later" seems reasonable. In reality, it's often a polite way of not deciding.
Some bugs must be handled right away.
Others must be explicitly refused. You can write a minimal card if you want to keep a trace: "We won't do this." But you shouldn't feed an endless bug backlog just to give yourself the impression that the topic still exists.
The discipline is simple:
- if it's a real and important defect, we fix it;
- if it isn't a defect, we take it out of bug management;
- if it's too minor to be worth handling, we own that;
- if it comes back often, we reassess it with signals.
The goal isn't to become dogmatic. The goal is to force the organization to produce a decision.
Velocity has to absorb quality
Fixing a defect immediately can affect velocity.
It can keep you from finishing a feature. It can disrupt a sprint goal. It can push back a roadmap topic. It's unpleasant, but it's normal.
Quality consumes capacity.
When a team ignores bugs to preserve its velocity, it protects a metric at the product's expense. It gives the impression of moving fast, but it accumulates friction, support load, debt, and distrust.
A zero-bug policy makes this cost visible.
If defects slow the team down, it isn't the zero-bug policy that creates the problem. It simply reveals that the system produces too many defects or detects them too late.
The right answer isn't to hide the bugs in a backlog. The right answer is to improve the production system: tests, QA, TDD, automation, clearer specs, developer accountability.
That will be the subject of the next article.
How to start with an existing stockpile
The difficulty arises when the team already has a stockpile of bugs.
You can take a radical option: close all existing bugs and start from zero. It's clean, but politically difficult. It requires strong internal trust and the ability to own the refusals.
You can also take a gradual option.
The Porsche article proposes a logic of reduction by steps: prioritize one last time, handle a small number of defects per sprint, and define a new temporary zero. What matters is that this phase remains a transition, not a new normal form of backlog.
A very effective method is to go through support.
Each week, support lists the top 3 customer reports tied to bugs.
That top 3 becomes the top 3 bugs to handle.
The following week, if one, two, or three bugs have been handled, support proposes the next ones.
We move forward through Pareto. We handle first what comes back most often, what hurts the most, what generates the most support load. We don't start by reprioritizing a hundred tickets. We handle the irritants that genuinely clog up the organization.
This method has a double advantage.
First, it reduces visible customer pain.
Second, it unclogs support.
Support sees that its reports serve a purpose. The product team handles the problems that truly recur. Developers don't scatter across an abstract list. Management sees irritants disappear.
To get out of a stockpile of bugs, you shouldn't start by reprioritizing everything. You should handle what comes back most often and hurts the most.
Useful metrics, without administrative obsession
This isn't about eliminating all measurement.
Some metrics are useful:
- rework;
- cycle time;
- regressions;
- defects found before production;
- defects found in production;
- the support load tied to certain bugs.
These measures can shed light on quality. They let you see whether the team redoes its work too often, whether certain flows break regularly, whether a zone of the product generates too much support, whether defects are detected too late.
But the metric has to stay a tool.
If the team spends more time qualifying defects than improving the system, it recreates the problem it wanted to solve. You then replace the bug backlog with a backlog of categories.
The purpose isn't to measure everything. The purpose is to reduce pain and improve flow.
Conclusion
A zero-bug policy doesn't make software magical.
It only makes it impossible to hide known defects behind a backlog.
It forces you to decide. It makes quality visible. It keeps bugs from becoming an administrative stockpile. It forces the organization to choose: fix, refuse, or requalify as something else.
It's radical, but that's precisely what makes the approach useful.
As long as a bug can sleep in a backlog for six months, nobody is truly responsible for the decision. A zero-bug policy puts that responsibility back at the center.
But it isn't enough.
If the team fixes fast without changing the way it delivers, it will stay in a repair loop. So the real next topic is prevention: developer accountability, clear specifications, TDD, QA, automation, future legacy.
In other words: a zero-bug policy deals with the stockpile. Delivery quality keeps you from recreating it.
Learn more
Quality belongs to those who ship The Backlog Is Not a Dumping Ground: It's a Tool for Action