Do Testers Need Programming Skills?
Do testers need programming skills? This is not a new question to the testing discipline.
A tester plays a unique role in a product team. He needs to maintain his independence in being an advocate for the end user, but he also has to collaborate with his team in promoting the required agility in the team’s operations and the overall product development effort. To be able to more technically understand—at an architecture level—the product under development and to automate tests, including developing test frameworks and customizing tools to meet the team’s testing needs, programming skills definitely come in handy.
Testers can be categorized under at least seven different classifications: administrative, technical, analytical, social, empathetic, user expert, and developer. There is no right or wrong category; every tester type has its own value. Also, a tester does not need to confine himself to just one category.
For our specific needs, the technical and developer categories are where programming skills and coding come into the picture. For example, although a person may today be an analytical and social tester, he is in a situation where he needs to evaluate whether he needs to become a technical tester, too, for his product and domain.
In the United States, there is growing concern about a lack of engineering graduates, especially with computer science backgrounds, to meet the needs of the available jobs at hand. Computer science is one area where supply is far below the demand, according to a study by the Bill & Melinda Gates Foundation.
To fill this gap, several organizations are coming together to promote coding skills at a school level. Typically, most testers come with an engineering background where they would have learned at least basic coding skills. Often, they lose touch with it on the job, as they do not get an opportunity to code.
This is where testers need to be more diligent in ensuring they don’t let those skills rust. This can be done in simple ways, including periodic static code reviews and attempting to work on test automation, or at least reviewing existing test automation code, even when working with manual testing.
Technology is growing at a very rapid pace. Areas such as artificial intelligence, big data, and interactive computing are all manifesting themselves in several domains. While these are taking us back to the grassroots of testing, the value and versatility a tester brings with his programming skills will go a long way in differentiating him and his testing team.
Rather than looking at whether it is mandatory for a tester to know programming, if we start understanding the value of a tester with programming skills, the tester will be able to claim a better role, earn respect in his team, and be more convinced and driven to stay current with coding and use it in ways to enhance the quality of the product.