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 organizationsusing 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:
Defect blindness
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 orinconsistencies 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
Internal training
Online courses
Open source projects
Coding bootcamps
Which programming languages are the most valuable? Some coding languages come and go in popularity, so it’s difficult to determine where to start. JavaScript is popular within automated testing tools, along with Python and Cucumber. Ask the development team or a dev lead for suggestions. The tester will also need to decide whether to learn web or mobile development, or both.
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.