I see it happening time and time again, amazing software companies (eg: @BrainTree, @asana) operating without a Quality Assurance (QA) team and producing nearly flawless products. It seems counter intuitive - developers producing quality code when there’s no one to check their work - and yet it’s becoming commonplace. Why are software companies killing off QA teams (or never creating them in the first place) and should you consider killing off yours?
At my previous startup, we had a team of roughly 15 engineers. As we grew and hit 10 engineers, I decided it was time to build out a QA team because that’s what the traditional school of thought advocated. In fact, by all practical standards, I had gone too far without a QA team (10 engineers vs 0 QA). Following this old school mantra, we hired our first QA engineer and set to work building out a new development process that included our new QA “department”. Amazingly, within 6 months we let our only QA engineer go, grew the engineering team 1.5x, and improved the quality of our software. The reasons we succeeded, and the reasons why more and more software companies are ditching their QA department, are outlined below.
Put the onus of quality on software developers
The biggest problem with a QA department is that is creates a mindset amongst developers that quality is not their problem - there’s an outside department for that. When developers have a QA department to constantly check their work, they don’t feel a pressure to verify quality themselves. Errors in production code can be blamed on the QA team (the it’s-not-my-fault-QA-didn’t-find-the-bug excuse).
Developers need to be held responsible for the quality of their work and removing the babysitter helps them do that. It’s not perfect, there are always bugs that slip past a developer, but having peer reviews and automated testing procedures can help.
QA should be at the forefront of your development process (and automated!), not an afterthought
Software developers should be thinking about quality all the time, not as a final step in the development process. By removing the QA team, developers can focus on building quality into the process, a true test driven development environment. Every line of code should be tested and code coverage should always be at 100%.
When you have developers creating automated tests, thoroughly testing for regression bugs is easy. Continuous integration environments become meaningful and keep everyone inline. Developers know in real time of something they are doing is creating a regression bug.
In today’s world, speed is of the importance, and automated testing is your real-time QA department.