The source of product quality is unit testing. The guarantor of quality is E2E testing.

John Gluck
Kirk Nathanson
May 16, 2024

Who owns product quality? Developers? QA? Leadership?

You’re right: It’s everybody. PMs develop requirements. Designers shape the experience. Developers, of course, build the application. QA validates that everything works. Even marketing—bless their hearts—do their part for the business.

When we talk about who’s responsible for product quality, what we really should be talking about is detection (catching bugs after they’ve been introduced) and prevention (not introducing bugs in the first place).

End-to-end tests are detection. They’re the alarm/sprinkler system—you only hear the alarm after something’s on fire. By then, it’s already broken, and the team is scrambling to clean up. But prevention happens earlier. Developers are the builders. Their choices shape the system’s foundation, and their code is what keeps bugs from appearing in the first place. You don’t prevent fires with sprinklers. You do it with a circuit breaker.

The role of developers on product quality

Developers define application behavior through the code they write. Each line encodes a decision about how the application should work. Those decisions take effect immediately when the code runs.

Most bugs don’t come from broken syntax or typos. They come from logic that doesn’t fully account for how the application behaves in real-world conditions. A developer might write clean, well-structured code that runs without errors and even passes end-to-end tests—but still leave gaps in code coverage where untested logic hides bugs. When tests don’t validate that logic, critical issues slip through unnoticed.

Only developers can catch those gaps at the source. They shape behavior when they implement it. Prevention starts at that moment. To catch problems early, developers need tests that validate logic from the inside—close to where decisions live.

White-box tests are the tool of bug prevention

Unit and component integration tests validate the application from the inside. They exercise logic directly and confirm behavior at the function or service level. These tests run early, fail fast, and catch mistakes before the application reaches the outside world.

Prevention requires internal visibility. White-box tests expose how the application behaves beneath the surface. They validate critical logic, provide fast feedback, and make failure easier to catch during development. Without them, the system may still work—but developers have no way to know why.

Black-box tests are the tool of bug detection

On the other hand, black-box tests confirm that the system behaves correctly from the user’s perspective. They catch failures across systems, but they don’t explain why the failure happened or where it started. They only show that something broke—not which decision caused it.

When tests cover the most critical workflows—logins, checkouts, messaging, and so on—developers don’t have to wonder whether a refactor silently broke something important. E2E tests run those flows across services and platforms, surfacing issues when behavior deviates from what’s expected.

That kind of detection changes the risk profile. Developers can untangle logic, consolidate rules, or fix structural issues knowing they’ll get clear, fast feedback if something breaks. Even in legacy codebases, that makes meaningful cleanup possible.

Developer-led prevention makes quality sustainable

Quality becomes sustainable when developers remove risk at the source. Clear structure, strong patterns, fast feedback, and trusted tests make it possible to catch issues before they spread. Prevention happens inside the code, where logic is defined and behavior takes shape.

Detection is effective when it stays focused. QA, PMs, and designers validate full workflows, user roles, and edge cases across the product.

Everyone owns quality. But developers own prevention—because no one else writes the logic, structures the code, or defines how the system behaves. That’s where bugs start, and that’s where they have to be stopped. Detection confirms what’s already true. Prevention changes the outcome. When developers build systems that are safe to change and fast to validate, quality becomes an integral part of the product itself, rather than a checkpoint.

Some disclaimer text about how subscribing also opts user into occasional promo spam

Keep reading

Parallelization
Running the same test in multiple environments isn’t as simple as it sounds
E2E testing
Automated mobile testing without tradeoffs: The QA Wolf approach
Culture of quality
The Test Pyramid is a relic of a bygone era