Engineers should QA too
I can’t agree more with this post (http://sriramk.com/testing) by Sriram Krishnan.
If the goal of a product team is to build a high-quality product, then the quality assurance responsibility shouldn’t fall on the shoulders of one or two people. Everyone on the team should be playing and testing the end product.
The reasons for having the engineer be responsible for the quality of the product they build is rooted in psychology. In social psychology there’s a phenomenon called the diffusion of responsibility effect (http://en.wikipedia.org/wiki/Diffusion_of_responsibility), where people are less likely to take action when they know others are present.
By having QA, it makes it easier for engineers to take shortcuts on implementation so that they can pass it on to QA rather than to build it right the first time.
By keeping the QA role with the engineer, the engineer knows when his or her job is done. There is a fast feedback loop for the engineer to learn when his or her decisions works or doesn’t. The engineer is incentivized to write correct and maintainable code so that he/she doesn’t spend more and more time on QA and less and less time on the writing actual code.