During a career fair in a well-established university in London, I had the opportunity to discuss on different areas of software development with a group of computer science students. We covered the most generic areas of software development like project management, business analysis, user experience, design, development, testing and support. To my surprise, no student wanted to secure a placement in testing, which was bizarre. This was supposed to be the next generation of computer science graduates and no one wanted to be a tester. The question was why?I then decided to ask the obvious question “why don’t you want to be a software tester and what do you think of software testing as a career”. The answers I got were quite interesting. I will discuss a couple of these answers, and the rebuttals I provided.
- Software Testing is a job for developers who perform below expectation:
Let’s take an example, of how a book is written and published. After writing a book, you get Proof-readers to go through that book. They validate each line of text and point out all the errors to the writer. Will you call Proof-readers, writers who performed below expectation in the past? No, you will say a Proof reader is someone with a particular set of skills. Similarly, testing is not a job solely for developers or developers who perform below expectation. Testers break the software, while developers build the software. A developer who sucks at his job and turns to testing as his next alternative, will obviously fail at that, except he/she learns this art and science of testing.
- Everyone can do testing, but not user experience, development, business analysis or project management:
One major reason for the existence of testers, is because most developers are horrible at testing their own code and some write really poor code. Now the question I asked this group of brilliant students was, “does a writer send his book out for proof reading to any individual who he thinks can read?” The students answered “No”. On the contrary, he sends his material to proof-readers who have skills in finding out errors. After the book goes through the process of Proof reading, it attains a certain level of quality and then it is released to the public. The same principle applies to Software Testing. Software testers have different type of analytical skills. They understand the balance between Quality, Risks and Timelines. Software testers have a whole range of skills which takes years of experience to build and learn. Also Software Testers, write code now to test the application. I could go on and on about it but one question I want to ask you students is, “can anyone without some knowledge of software development, criticize your code or challenge your release”, the answer was “No”. Okay, another question, “when you develop and you use all the best practices available, like pair programming, TDD and others, why does the product still have bugs? I am sure a lot of testing was done by the developers via pair programming, TDD and maybe exploratory testing?” None of the students could give me an answer.
Because like the Proof readers, Software testing is a skill which has to be learnt and developed. Getting started is easy, but it is difficult to be an expert.
- Testers don’t earn as much as developers:
With the growing complexity of Software Testing and automation testing becoming more of an industry standard, software testers can earn similar or even higher wages than developers. A lot of companies are realizing the importance of software testers, especially when they start incurring technology debts. Finding an expert Tester is very hard in comparison to finding an expert developer. This makes it a lucrative career, especially if you have the required expertise.
- Testers won’t have jobs if developers get better at being responsible for quality:
I am a strong believer of TDD so a part of this is very true. Developers should also be held accountable for the quality of the system. But there has to be a balance, as developers do not want to be experts at quality assurance or processes and best practices, rather they focus more on their technical competency. Developers want to ensure that the code works, and ensure quality in their code. But a tester wants to ensure that the code does not just work, but it works according to the business needs and requirements. Testers still need to test the software to ensure a level of trust before release and testers also know the amount of regression testing that should be done to find the outliers.The Agile methodology requires all departments to champion quality. Everyone works together to contribute to quality as no one can work alone in isolation. Therefore, every department has a role to play, and that does not mean that developers can or should solely ensure quality to release a bug free product. In conclusion, having a development team that can be held accountable for quality, is good because it will reduce the amount of bugs that testers will find, which will reduce the cost of fixing defects. However, this will not eradicate the importance or jobs of Software Testers.