When you give a person an excuse to do less than the best, often times they accept it as the norm. QA is a good example of providing an easy out. Why put the effort into checking your own code, ensuring what you do is acceptable and going out of your way to program defensively when you can have someone else do that often painful, trying to get toward perfection type of work….
I have no real evidence, but I’ve seen enough evidence to show that the number of QA resources is directly proportional to the poor level of coding. You might say additional QA people are brought in to compensate for the quality of coding, I think the number of QA resources is more driven by allowed budget and the higher the budget the power the code quality….sounds strange, but I really think it’s true.
I’ve always felt that a good QA group would indirectly contribute through audits and improved processes, however – in most cases – they are designated as testers, fed bad apps after development mangling. So, at the end of the day, the hoped for gains from a QA group are often lost through the misuse of them and the re-direction of quality from the source of issues to the QA group who gets stuck at the end of the pipe instead of helping front-load quality. My suggestion: get rid of QA and lets see what the results are, I would wager improved overall quality within 30 days.