On testers and testing
sriramk.com
sriramk.com
But then there is the kind of software that must not break, ever. The kind of software that is so complex that every time a developer touches it, he is bound to break something, somewhere, because no human can keep all that complexity in his head.
Your operating system falls into that category. Your web browser. The machines that bring humans to the Moon, keep you alive at the hospital or your car on the road. You know, the difficult stuff.
I've spent a few years as test manager for a web browser engine you may have heard of. The team consisted of some of the best developers I've ever met. Razor sharp guys. But despite their brilliance: for every bug fix they did, there was a 30% chance of them breaking something. In the most complex parts of the layout code, that number was closer to 50%.
50%!
Having less than one tester per two developers on that particular project would be madness. And I'm not talking about outsourced monkeys pushing random buttons ten time zones away. I'm talking about people more evil than the devil himself – able to conjure up the kind of tests that will rip your software to pieces in ways you could never imagine. I'm talking about proper test engineers that can automate away all that boring shit humans don't want to do.
A sparring match between a great developer and a great test engineer is truly a thing of beauty. And in the end, both of them win.
When you need to go back and forth on a bug 4 or 5 times, every time the programmer claiming it was fixed but failing an old test case, a test group won't fix the problem, programmers taking responsibility to ensure their own code is correct will.
> A sparring match between a great developer and a great test engineer is truly a thing of beauty. And in the end, both of them win.
Absolutely. Unforunately, if the tester is not up to snuff, they're no help against a great developer, and a great tester against a sub-par (or worse, insecure) developer is nothing but trouble, no matter who's right.
But to respond to you - neither do a lot of others (need high quality software i.e). Agility->quality is a continuum. On one end, you can instantly deploy any piece of code to prod as soon as it is written. On another end, you test code for several years to make sure it is rock solid (stuff that goes into nuclear reactors). Large organizations move more to the right than they need to. Sometimes it makes more sense to optimize for bandwidth of code over quality (I believe Zuckerberg said this first).
Big companies don't want downtime, but they hire non-programmers to make this happen. The result is downtime.
Second, it's not fair to go easy on the quality of test/QA folks. This is where a lot of organizations that actually invest in dedicated testers fail. Testers must be held to a similar bar as developers, just with a different functional role. As others have pointed out, the disbalance that widely varying talent levels cause in organizational health is quite disastrous. It's the same as any other piece of hiring. Make sure you have the right person for the job. That almost always means someone who knows computers/code/workflow/users at the same level as developers or product managers.
Finally, as a former Windows engineer, I don't agree with the narrative that the Vista fiasco was a result of over-automation and not enough end-user scenario testing. It was more a problem of poor processes that couldn't handle the scale of the team and a lack of clear planning/leadership to account for that. Windows 7 had, if anything, more automation and more testers than Vista and was obviously a much better product. A lot of things have to go wrong to get something as ugly as the Longhorn Reset (http://en.wikipedia.org/wiki/Development_of_Windows_Vista#Mi...) and the one that OP pointed out was likely one of many.
Testing is a VERY different skill set to dev. While good tester have coding skills, and understand concepts like design patterns, most of their knowledge is in failure modes of systems (inc. software), and how to identify/prevent these. Often they have security or performance testing skills on the side. Almost always they have automation skills. If a company does not understand that these skills are as useful as a developer, or BA etc, then I suggest that the tester needs to move firms - from experience there a plenty of firms that do value these skills.
and in this post "Ex-Facebook employees have some privileged channels they can use to report issues; I personally report around 13,000 bugs per month"
huh? That's about 18 bugs per hour on average. Does it say that the guy on quora is working for them on bugs although he's not an employee, or am I missing something??