I'd like to share my thoughts on why I don't like to use the term QA as a role and the gatekeeper of quality and why I believe everyone is a developer in agile software development.
Where does quality come from?
Back when I started as a QA engineer around 2008, the agile movement was just starting to take root and people believed that testing performed by QA engineers assures, or even increases quality of the software.
Quality is created by people who write the software, not by testing. Testing can provide information to assess quality and allow decisions and actions to be taken to reduce risks and increase quality. But it doesn't create it. Since the only way to have good software is to write good software, so quality is in the hands of the developers.
One of the problems with having dedicated QA is that it creates environment in which responsibility for quality is taken away form people who write the software and transferred to someone else.
Whole team to the rescue
Quality needs to be built in, you can't add it externally. The developers are the only ones who can do that, so they should be responsible for the quality, right?
Does it mean that developers, aside form writing all the code, also need to test it all?
Of course not.
In a truly cross functional team, everybody is a developer, and everybody is also a tester. While they all share the same responsibility for quality, each team member uses their unique skills to bring value to the team.
Let me clarify that a bit. When I say everybody is a developer, I mean that everybody uses their skills to develop the software, whether it means writing code, communicating with customers, testing user interface, or doing exploratory testing and feeding information back to the code. They all contribute to development of the product, so they are all developers. And of course they all test the product too, how else would they know if it works.
Do you agree? Do you disagree?
Please give me feedback.