Should Testers Learn How to Code? Pros and Cons
The more you know code, the better you can test code. But does that mean it’s a requirement for testers to know code to do their jobs? That’s a question I’ve asked for years.
The answer: It all depends. No one seems clear whether a software tester really needs coding knowledge. But it’s a skill that might be helpful in testing careers.
First, let’s define what coding knowledge means. Coding knowledge means you are able to create programming code in one or more languages that results in a working product or feature. An understanding of coding means you can read through code and figure it out, but you can’t code a working product or feature alone.
Why the distinction? As a tester, it’s important that you understand what programming code is, and the basics of how it operates. Testers, however, don’t need to develop working code. So, while testers need an understanding of code, they don’t need to be able to develop working code. Testers can have highly successful QA careers without ever writing a line of code in any language. I can record a codeless test script and then edit the resulting code to meet my needs, but I cannot code anything from scratch. While there are career benefits to being able to code, and I have a strong understanding of coding, I have zero interest in developing code for software.
Software testing and software coding are two very separate ways of thinking or modes of operation. Testers focus on how a human customer uses an application rather than how the code functions. Testers look at the usability or customer experience aspects of the code. Developers are interested in the functionality of each component, and how it interacts and connects with other components.
Read on to learn about the potential advantages of coding development skills for a tester and options for learning how to code.
Why is coding knowledge helpful in software testing?
Without the ability to code, a software tester’s career might be limited to manual testing and using codeless tools for test automation. Knowledge of programming languages enables testers to take on SDET (software developer engineer in test) or other similar test automation development roles.
In this white paper, we explain how to put together an effective test automation strategy that blends scripted and codeless automated tests, enabling customers to scale testing with apps.
For those wanting to start as software testers and then become software developers, learning how to code is an essential goal. Advantages of coding knowledge as a tester includes:
Better — more honest — collaboration with developers. Coding knowledge will help testers recognize when developers are not being honest with them, and help them cut through technical jargon.
Ability to participate in code building and reviews. These situations might be a great place to showcase coding skills and contribute to the team.
Troubleshooting the root cause of defects. Code knowledge helps generate useful details. The more details a tester can give developers, the easier defects are to fix.
Improved awareness of logical disconnects in app workflows. Testers can find defects deeper in the application with a solid understanding of code logic.
The ability to code working software can also be advantageous for those who tire of software testing. Software testing over several years might become boring to some people. Learning how to code provides an added career path. Additionally, for organizations using a true DevOps methodology, coding might be required not only to write code but also to create automated unit and integration tests. The ability to code only expands the available career paths.
What are the disadvantages of testers knowing how to code?
The ability to code may open career doors in development, or within QA in more technical roles. As many organizations move to using DevOps and continuous testing methods, a QA tester who codes becomes a necessity. The advantages of knowing how to code certainly outweigh the disadvantages when you consider the expansion in possible career paths.
However, as a long-time professional tester, I believe there are some disadvantages for testers learning how to code — chalk these up mostly to the differing viewpoints of developers and testers.
Here are some disadvantages of knowing code as a software tester:
Losing touch with how customers experience products
Devs poaching testers
Consider the primary goal of software testing. Software testers aim to protect the customer experience. A defect is anything that annoys a customer or a feature that fails to function as expected. For developers, defects are failures within the code components, regardless of how it looks in the UI. If a code-competent tester begins to adopt a dev viewpoint, they will likely miss some defects in the UI or inconsistencies in the UX. This might be considered a betrayal to the unspoken pact between testers and customers.
Another distinct disadvantage is a tester who knows how to code may get borrowed from the testing team — potentially to never return. So, if the testing team wasn’t already short-handed, the team members who can create code can be pulled aside to help meet development deadlines. Poaching code-competent testers to serve dev goals comes at the detriment of the testing effort.
How can QA testers learn how to code?
Software testers who want to learn coding have numerous, effective training options. Larger software development organizations typically offer internal training. Online and educational programs also give testers an outlet to learn how to code.
Here are some ways testers can learn how to code:
Guidance from the development team
Automated testing, starting with codeless test automation tools
Open source projects
The coding I’ve learned came from a handful of brave developers who enjoy teaching. For whatever reason, learning code within the context of an existing application is easier for me to grasp than coding from scratch within a bootcamp or programming course. By learning from a developer on my team, I was able to add to the overall value I provided to the team, and it helped me to learn more about the applications I tested. I personally learn better from necessity, but other testers might find they learn better in other ways. Testers learning code should make sure they have somewhere to participate and practice to keep their skills fresh.
For software testers, it’s always crunch time. Striking the balance between effective and expedient testing isn’t always easy, but it’s necessary in our fast-moving digital world.
Many programming bootcamps are expensive, but they do come with support and career placement options. Some testers might prefer the structure and schedule of a bootcamp. If bootcamps are not an option, try online courses from organizations such as Udemy or Coursera. Most online courses can be taken for a lower overall cost than a bootcamp, and testers can complete the coursework whenever best works for them. Courses offer a larger variety of languages to learn than internal training available at most organizations.
Whatever path a tester chooses, the best place to start might be to take advantage of any internal programming training options within the organization. Additionally, work on learning test automation tools. If the organization creates and maintains a test automation suite, a tester can ask how to get involved — there’s often a lack of knowledge with these tools.
To effectively test mobile apps, now and into the future, enterprises must ensure a strong user experience from the beginning. Here's how to implement an effective mobile testing strategy.Read 'The Essential Guide To Mobile App Testing' Now