This is sorta two posts in one, but on the same general theme.

Computer Science

A while back Alan Page wrote a blog on Why computer science knowledge helps testers where he explains why Microsoft hires programmers / computer science graduates as testers. Here is the relevant quote:

we hire people who understand more about how computers work because they are better testers

This is the classic education / school / computer science bias that you see in large organizations. Who is the better programmer? The one who figured it out on their own when they were 12 or the one who went to school and took 17 courses in their computer science program which didn’t address real-world situations? Same thing for testing. How many post-secondary curriculums have more than one or two courses on ‘Quality Assurance’? Not many. And of those, how many of those deal with things other than the classical techniques? Even less. So what is the value of having a computer science background? Not great I would argue.

Yes, having the formal background helps in certain contexts, and low-level OS type stuff might be one of them, but as a whole I don’t think so. Alan is himself a music major, I got politely asked not to return to school, and I’m fairly certain that James Bach doesn’t have a formal computer science education so it is possible to be productive and even successful without.

I’m starting to see this undercurrent in the Agile community right now, though their inspiration may be different. More and more there is talk of software development as a craft in the classical sense where one starts as an apprentice and learns under a master. As they mature they become journeymen, etc.. This is how I see testing succeeding and how I try to run groups when I have people reporting to me. I consider it a failure if they don’t eventually leave my group to another because they have grown beyond the team and are ready to lead their own. (And they can’t have mine.)

Math

I’ve had the Computer Science one brewing for months, but in last week’s Stack Overflow podcast they talk about whether you need to know math to be a programmer. The answer was that in most cases it doesn’t, but in some specific cases it does. Shockingly, the same general answer for comp sci.

For testers, the need to know math is even less. I can think of one example where pure math is necessary which is the creation of oracles for the testing efforts. If you are creating oracles, you need to understand the space you are operating in. I wouldn’t want to have someone who doesn’t understand Time Value of Money working up the validation points in a mortgage application program. But how often do we need to do this? To testers of tax software understand the tax code? Not necessarily, nor do they have to. Their oracles need to understand it though, be they business analysts or accountants or separate, independent scripts.

The argument could also be made that knowing statistics helps as well, but I so rarely use them that I’m saying this is more important with performance testing where you have to go through reams of data which need to be parsed with a statistical lens.

So there you have it.

  • You don’t need a formal education to be successful in testing.
  • You don’t need to have a computer science background to be successful in testing.
  • You don’t need a math background to be successful in testing.
  • The craftsmanship movement is likely the best model for success in testing