If you ask any random set of testers what their title is, about half of them will answer with some term that includes “Test” and the other half will answer with some term that includes “QA” and “Engineer”. If you then ask them what their job entails, all of them will say something about testing a product. Never once have I ever had anybody reply that they are responsible for engineering quality into the product.
Go ahead, try this yourself. I’ll still be here when you get back.
See what I mean? What’s up with that?
If you *did* manage to find a QA Engineer who believes they are responsible for engineering quality into their product, you found someone laboring under some serious delusions. Or a very broken job description.
I am a Tester. I am not a Quality Assurance Engineer. Or rather everyone in my feature team is a Quality Assurance Engineer, because the entire team is responsible for the quality of our feature and the entire product.
Quality has to be built in from the start. You can’t test it in later. (You can however incrementally build it in to each new release, which is a good thing if you’re staring down a nasty gooey mess and trying to figure out how you will ever tame it.) The program manager has to write clear specs, the developer has to ensure they understand and can implement the specs, the tester has to look for holes in the spec, and everyone has to be sure the spec is telling them the same things it is telling everybody else. Once you know what you’re building (regardless of whether you (attempt to) get the entire spec nailed down before starting or build it in small chunks), the developer is responsible for writing solid code with no bugs, the tester is responsible for finding the bugs that inevitably pop up and for verifying that the code works like the spec says it should, and the program manager is responsible for keeping the spec up to date and resolving the thought-we-understood-it-but-we-don’t problems that always crop up.
All of this contributes to a quality product. None of this is more or less important than the others. Leave any one part out and you can’t have a quality product. Only by working together do you have a chance at that particular nirvana.
*** Comments, questions, feedback? Want a fun job on a great team? Send two coding samples and an explanation of why you chose them, and of course your resume, to me at michhu at microsoft dot com. I need a senior tester and my team needs program managers. Great coding skills required for all positions.