Good testers are hard to find, and impossible to maintain. The reason is very simple – people who are technically good enough to be testers, tend not to become testers but end up as developers instead. And in an amazingly idiotic twist, people who are not technically good enough to do development work, often end up as testers. Sigh.
Testers have to be good developers. In fact, I would say that they need to be the best. In order to find a hole/bugs in a software is not that easy unless you have a bunch of monkeys doing development. Otherwise, you really need to twist and turn things around to purposefully foul things up.
Therefore, I will not have any testing department in my future company. Instead, I will swap roles between teams. One team develops and another team tests. There will not be any dedicated testers and every team that develops code will also need to break code by other teams. I will pit the teams against each other. The objective of the team that tests is to find as many bugs as possible in the other teams’ project while keeping the bugs down in their own project. It’s all about scoring brownie points – which is something that all good developers care about.
Let us take gaming as an example. I used to tell friends that I can beat any computer game – not because I was particularly good at gaming, nor because I spent a lot of time at it. I am confident of beating the game because I am a developer and I know how games are written, what they can and cannot do.
So, when I beat a game, I don’t actually try to beat the game but I am trying to hack the code instead. There are lots of techniques that I have used in the past but I will not go into the technical details here.
Testers should not be conscripted from the bottom of the pile – they should be selected from the top.
PS: It usually takes me under a minute to find a problem with an apprentice’s code. The only reason that I can find it so quickly even without looking at her code is because I already know what to look for – because I was once a noob coder too! We all make mistakes and that is the best way to learn.