article

We Don't Have a QA Team. That's Why We Ship Faster Than You.

Engineering culture and shipping velocity

CircleCI Loop LabFebruary 7, 20266 min13 views1 shares
shipping-velocityengineering-culturetestingsoftware-engineeringdeveloper-productivity
1 shares

We Don't Have a QA Team. That's Why We Ship Faster Than You.

CircleCI has no separately titled QA engineers. No SDETs. No intermediary staging environments where code sits for days waiting for someone else to verify it works.

That makes people uncomfortable. I've watched candidates blink during interviews when we explain the setup. "So who tests the code?" Engineers test the code. The pipeline tests the code. The system tests the code. There is no handoff to a separate team that gates whether your change reaches production.

This wasn't some bold manifesto we published on day one. It's the result of a decade of compounding decisions about how software should move from a developer's laptop to a customer's experience. And right now, with AI accelerating code generation 5x to 10x across the industry, this architecture is paying off in ways we didn't fully anticipate.

How Most Organizations Actually Work

Look at the typical enterprise workflow. An engineer writes code on their laptop. That code goes through a local build. Then it hits a development environment. Then a staging environment. Then maybe a pre-production environment. Then a QA team picks it up, runs manual and automated test suites against it, files bugs, sends it back. Eventually, after days or weeks, it reaches production.

Each environment is a copy of production. Sort of. The staging database has stale data. The pre-prod services are running different versions than production. The QA environment has configuration drift nobody noticed. Every intermediary step introduces a gap between what you tested and what actually runs in front of users.

Teams accept this because it feels safe. More environments means more checkpoints. More checkpoints means fewer surprises. Except the data says otherwise. The environments diverge. The handoffs slow you down. The QA team becomes a bottleneck that grows linearly with code volume. And the surprises still happen, just later and more expensively.

What We Actually Built

At CircleCI, your code goes from laptop to production. That's it. The pipeline is the environment. Every push triggers a build that runs in clean, isolated containers. Tests execute in parallel. If the tests pass and the pipeline is green, the code ships.

There is no staging environment to maintain, no QA team to schedule with, no intermediary state where code languishes. The pipeline is the gatekeeper, and it runs the same way every time.

Engineers own the full lifecycle of their code. You write it, you test it, you ship it, you monitor it. That sounds scary until you see what it actually produces: engineers who write better tests because they know there's no safety net behind them. Engineers who think about production from the first line of code because production is the next stop.

We built this through years of accumulated engineering instinct and institutional knowledge baked directly into the pipeline. Config files enforce test coverage thresholds. Automated checks catch common failure patterns. Canary deployments roll changes to a subset of traffic before going wide. Feature flags let you ship code to production without exposing it to users until you're ready. Every guardrail is automated and codified. None of them require a human with a "QA" title to execute.

Why This Matters Now

Here's where it gets interesting. AI broke the equilibrium that kept the old model viable.

When an engineer can generate a working endpoint in 10 minutes using Cursor or Claude Code, the pipeline needs to keep pace. If your workflow requires a handoff to QA, that handoff now happens 5x more often. The QA team that could handle 40 PRs per week can't handle 200. Your SDET who maintained the automation suite is now maintaining it against a firehose of AI-generated changes.

The bottleneck moved. Code generation used to be expensive. Now validation is expensive. And organizations with separate QA functions are discovering that the human bottleneck they built into their process is the thing holding them back.

We don't have that bottleneck. Not because we skipped testing. Because we automated it out of the critical path years ago. The pipeline runs hundreds of checks on every push. Those checks were built by the same engineers who write the features, so they actually test meaningful behavior, not checkbox compliance. And they run in minutes, not days.

When AI increased the volume of code hitting our pipeline, the pipeline scaled. It didn't need a hiring plan for more QA engineers. It didn't need a new staging environment for the increased load. It needed compute, which is a solvable problem.

The Instinct Layer

Tooling is only part of the story. The harder part is culture.

When you operate without a QA team for a decade, the engineering muscle memory changes. Our engineers don't think about testing as a phase that happens after development. Testing is development. You write the test first or alongside the feature, because you know the next stop is production and there's nobody between you and the customer.

That instinct doesn't form overnight. It comes from years of shipping, breaking things in production, fixing them fast, and building guardrails so the same failure doesn't repeat. The pipeline gets smarter over time because engineers keep adding checks based on real production incidents. Not theoretical edge cases from a test plan. Actual things that broke.

A new engineer at CircleCI inherits all of that accumulated intelligence on their first day. The pipeline encodes what went wrong in 2018 and 2021 and last Tuesday. It catches patterns that no QA team could hold in their collective memory because the checks are automated and persistent.

This is what I mean by automation in the DNA. It's not a tool you adopted. It's how the organization thinks. Every engineer is a quality engineer because the structure demands it. Every pipeline configuration is a living document of what the team has learned about shipping safely.

The Uncomfortable Truth About QA Teams

I know this reads as provocative. Let me be clear about what I'm saying and what I'm not.

I'm not saying QA professionals lack skill or value. I'm saying the organizational structure of a separate QA function creates handoff delays, diffuses ownership, and scales poorly. When the engineer who wrote the code is also the person responsible for its behavior in production, they write different code. They write better tests. They think harder about edge cases. They monitor more carefully after deployment.

When you insert a QA team between the engineer and production, you create a moral hazard. The engineer knows someone else will catch their mistakes. So they take more shortcuts. Ship less-tested code. Rely on the safety net. The QA team catches some issues and misses others, and the whole process takes three times as long.

The companies I see struggling most with AI-generated code are the ones with the most elaborate QA processes. They built systems designed for human-speed code generation and now they're drowning in volume. Their SDET teams write automation that runs in staging environments that don't match production. Their QA engineers manually verify behavior that should be codified in the pipeline. Every layer of indirection adds latency.

What This Looks Like in Practice

Let me make this concrete. An engineer on our platform team ships a change to how we handle webhook delivery. Here's the sequence:

They write the code on their laptop with the test alongside it. They push to a branch. The pipeline spins up clean containers, installs dependencies, and runs the full test suite in parallel. Integration tests verify the webhook actually delivers to a test endpoint. Contract tests confirm the payload matches what downstream consumers expect. Performance tests check that latency stays under the SLA threshold. The whole suite takes about 8 minutes.

If everything passes, the change merges. A canary deployment rolls it to 5% of traffic. Automated monitoring watches error rates, latency percentiles, and delivery success rates. If anything spikes, the deployment automatically rolls back. If the canary holds for 15 minutes, the change goes to 100% of traffic.

No staging environment. No QA handoff. No waiting for someone to test it next Tuesday. Laptop to production in under 30 minutes on a green build.

Now multiply that by AI. The same engineer uses Claude Code to generate three related changes in a single morning. Each one goes through the same pipeline. The pipeline doesn't care if a human or an AI wrote the code. It runs the same checks. The guardrails don't fatigue or get backlogged. They just run.

Building This From Where You Are

I won't pretend this is easy to adopt. You can't fire your QA team on Monday and expect your engineers to ship safely by Friday. The instinct layer takes time. But you can start moving in this direction.

Stop building new staging environments. Invest that effort in making your pipeline the source of truth. If a test can only pass in staging and not in a clean CI container, that test is testing your staging environment, not your code.

Start shifting test ownership to the engineers who write the features. Not "developers should write unit tests and QA writes integration tests." All of it. The engineer who builds the feature should write every test that validates it. Give them the tools and the time, but make it their responsibility.

Codify your guardrails. Every production incident should result in a new automated check, not a new manual QA step. The pipeline should get smarter every time something breaks. If a human has to remember to check something, it will eventually get forgotten.

Measure time from commit to production. Not time from commit to staging. Not time from commit to QA. The only metric that matters is how fast verified code reaches your customers. Everything between the laptop and production is latency you should be eliminating.

The Payoff

The organizations that will thrive in the AI era are the ones where automation isn't a layer bolted onto the process. It is the process. Where engineers own the full path from idea to production, and the pipeline provides the guardrails to make that safe at speed.

We built this over a decade. The dividend is showing up now, when AI changed the game and our process didn't need to change with it. The pipeline absorbed the increased volume because it was designed to scale with compute, not with headcount.

If your shipping velocity is limited by how fast humans can review and approve and manually verify, you have an architecture problem. Not a hiring problem. More QA engineers won't fix it. More staging environments won't fix it. Automating the critical path and giving engineers true ownership of their code will.

That's what we did. It works.