Every engineering team I have ever worked with shares a common pattern. Developers write code, testers test it, bugs are found, fixes are made, and the cycle repeats until someone declares the product "good enough" to ship. This model is broken — not because testers are bad at their jobs, but because quality is being asked to show up far too late in the process.
The most expensive bugs in software are not the ones found in production. They are the ones that were never caught at all because the wrong thing was built. And the second most expensive bugs are the ones that were caught late — after the architecture was set, the UI was built, and the integrations were wired up.
What "Inception Phase Quality" Actually Means
When I say quality must start at inception, I am not saying QA engineers should attend every product brainstorming meeting (though that helps). I am saying that quality thinking — the habit of asking "what could go wrong, what edge cases exist, what are the acceptance criteria" — must be part of how product decisions are made from day one.
This manifests in several concrete ways:
- Requirement reviews with a QA lens: Before a single line of code is written, requirements must be reviewed not just for what the feature does, but for what it does not do, what happens in error states, and how it will be verified.
- Definition of Done includes testability: If a feature cannot be verified automatically or manually, it is not done. Testability is a completion criterion, not an afterthought.
- Acceptance criteria written before design begins: Writing acceptance criteria forces clarity. Ambiguous requirements produce ambiguous software.
- Risk-based thinking from the start: Which parts of this feature are highest risk? Which user flows, if broken, would damage the business most? This informs where to invest testing effort before a single test is written.
The Three Conversations That Must Happen Early
1. The "What Does Done Look Like?" Conversation
This is the most underrated conversation in software development. When a product manager says "we need a user login feature," what exactly does that mean? Does it include password reset? OAuth? Session expiry? Rate limiting? Account lockout after failed attempts?
Every undefined assumption is a future bug. Quality engineers are uniquely positioned to ask these questions because their job is to break things — and you can break a lot of things before writing a single line of code if you ask the right questions early.
2. The "What Can Go Wrong?" Conversation
Most product discussions are optimistic. They focus on the happy path — the user logs in, adds items to cart, checks out, receives confirmation. Quality thinking introduces the unhappy paths: what if the payment gateway times out? What if the user has an unstable connection? What if two users try to purchase the last item simultaneously?
These are not edge cases to be dismissed — they are the scenarios that define whether your product is truly reliable or just demo-ready.
3. The "How Will We Know It Works?" Conversation
Every feature should have a clear, agreed-upon verification strategy before development begins. Will this be unit tested? Integration tested? Tested via E2E automation? Monitored in production? The answer to this question should influence how the feature is built — not the other way around.
How to Implement This in Your Team
Introduce Three-Amigos Sessions
The Three Amigos model brings together a product manager, a developer, and a QA engineer to review every story before it enters the sprint. Each brings a different perspective: the PM brings context and intent, the developer brings technical constraints, and the QA engineer brings edge cases and verification strategy.
In my experience, a 20-minute Three Amigos session eliminates at least 30% of the bugs that would have otherwise been found during testing. Not because testing improves — but because the thing being built is clearer from the start.
Create a Requirement Quality Checklist
Build a lightweight checklist that every requirement must pass before development begins. It should include:
- Is the acceptance criteria written and agreed upon?
- Are all error states and edge cases documented?
- Is the feature testable — can it be verified automatically?
- Are there any dependencies on third-party systems, and are their failure modes considered?
- Has performance impact been considered?
- Are security implications reviewed?
Make QA a Product Team Member, Not a Gatekeeper
The biggest cultural shift required is moving QA from a gatekeeper role (someone who approves release at the end) to a quality partner role (someone who helps shape what is built from the beginning). This means QA engineers should be in product refinement meetings, design reviews, and architecture discussions — not just sprint demos and UAT sessions.
The Mindset Shift Required
This approach requires a fundamental mindset shift from everyone on the team — not just QA. Product managers need to accept that incomplete requirements are a quality risk. Developers need to accept that "it works on my machine" is not a definition of done. And leadership needs to accept that slowing down at the start to ask quality questions actually speeds things up overall.
The teams that build the most reliable software are not the ones who test the most. They are the ones who think about quality the most — starting before the first line of code is ever written.
// Key Takeaways
- Quality defects are exponentially cheaper to fix at the requirements stage than in production.
- Three Amigos sessions — PM, Dev, QA reviewing stories together — prevent a significant percentage of bugs before they are written.
- Every story should answer "how will we know it works?" before entering the sprint.
- QA engineers should be quality partners at inception, not gatekeepers at the end.
- Writing acceptance criteria before design begins forces clarity and prevents ambiguous software.