Should testers learn to code?
This question has been discussed on twitter quite frequently, and to be honest is getting a little boring. If testers want to learn to code then they should. If they don't then that's fine as well. This post is my humble opinion on whether as testers we should learn to code. The reason for this blog post was because recently Trish Khoo (@hogfish) asked the question:
Should testers learn to code?
She did a blog post on the results of the poll, which can be found here
http://trishkhoo.com/2017/08/yes-all-testers-should-learn-how-to-code/
In my humble opinion testers should learn to code. For me it is a no brainer and something that isn't about keeping up with the industry trends or doing what is fashionable for testers, its about:
What is coding to a tester?
Coding to me can be one of two things:
1) Automating the testing of the UI e.g. Selenium
2) Developing of tools that aid you or your teams testing process
Now if you are a tester who has no interest in testing the automation of a UI then there is still value to be had in learning to code. Developing tools that aid the testing process can yield invaluable gains (in terms of both time and knowledge) and give you more time to do 'testing'.
During testing there are probably times when you need something done quicker and more efficiently than how you currently do it. Now if you have learnt to code you may be able to identify how code could help you become more effective, and you could then start to write a little program.
For example.....
You have spent some time learning powershell.
Your test database servers have to have SQL Server 2016 installed on them, but the features that are required will vary from environment to environment. You could write a little powershell script that installs SQL Server 2016 and uses a list of parameters that allow you to specify what features you want to install.
Now you may not identify this as 'coding' but it is. You have written some commands that sit inside a script, and the scripting language you have used supports the typical coding basics, such as variables, loops and functions. Now this script would mean that you could get an environments database installed whilst you were doing something more interesting. Now I appreciate that learning to write this script will take time but what you learn will not be wasted, going forward you have some knowledge that can be used in other areas. And also there are plenty of resources online to get you up to speed quite quickly with a programming language, my personal favourite is Pluralsight. Now i'm not saying that you need to know all the ins and outs of a programming language but just to have some knowledge will go a long way. I wrote a similar script to the one mentioned above and it took me only a couple of hours and I had no powershell experience before hand. You may find that you have a real talent for coding and this could lead you down other paths which will help you develop as a tester.
From this you could move on to setting up an entire test environment using a script. How much time could this save you? Think of the savings across a whole team if each tester
just has to run a script compared to installing a database manually.
There is another advantage. If you sit with a developer and are discussing various aspects of the system, your coding knowledge will help you when (and if) they start trying to explain the code to you. You can ask better questions and enhance you knowledge of the system you are testing. This will
make you more valuable to your team as you can point out potential issues to the developer. You will also have more insight into the code which in turn will help you come up with different test ideas.
What should I learn to code?
Well that can depend on the technologies your company uses and the resources you have available. I work in a .NET environment so I have done a little powershell learning but my main push is to learn c#. The reasons for this are:
This question has been discussed on twitter quite frequently, and to be honest is getting a little boring. If testers want to learn to code then they should. If they don't then that's fine as well. This post is my humble opinion on whether as testers we should learn to code. The reason for this blog post was because recently Trish Khoo (@hogfish) asked the question:
Should testers learn to code?
She did a blog post on the results of the poll, which can be found here
http://trishkhoo.com/2017/08/yes-all-testers-should-learn-how-to-code/
In my humble opinion testers should learn to code. For me it is a no brainer and something that isn't about keeping up with the industry trends or doing what is fashionable for testers, its about:
- Developing skills you may not know you possess
- Give you the chance to spend more time 'testing' (By this I mean exploratory testing)
- Making you a more valuable member of your team (Before anyone reading this says "I am valued and I don't code!!!" I'm not saying that if you cant code you don't add value, i'm saying that IMO you will add even more value)
What is coding to a tester?
Coding to me can be one of two things:
1) Automating the testing of the UI e.g. Selenium
2) Developing of tools that aid you or your teams testing process
Now if you are a tester who has no interest in testing the automation of a UI then there is still value to be had in learning to code. Developing tools that aid the testing process can yield invaluable gains (in terms of both time and knowledge) and give you more time to do 'testing'.
During testing there are probably times when you need something done quicker and more efficiently than how you currently do it. Now if you have learnt to code you may be able to identify how code could help you become more effective, and you could then start to write a little program.
For example.....
You have spent some time learning powershell.
Your test database servers have to have SQL Server 2016 installed on them, but the features that are required will vary from environment to environment. You could write a little powershell script that installs SQL Server 2016 and uses a list of parameters that allow you to specify what features you want to install.
Now you may not identify this as 'coding' but it is. You have written some commands that sit inside a script, and the scripting language you have used supports the typical coding basics, such as variables, loops and functions. Now this script would mean that you could get an environments database installed whilst you were doing something more interesting. Now I appreciate that learning to write this script will take time but what you learn will not be wasted, going forward you have some knowledge that can be used in other areas. And also there are plenty of resources online to get you up to speed quite quickly with a programming language, my personal favourite is Pluralsight. Now i'm not saying that you need to know all the ins and outs of a programming language but just to have some knowledge will go a long way. I wrote a similar script to the one mentioned above and it took me only a couple of hours and I had no powershell experience before hand. You may find that you have a real talent for coding and this could lead you down other paths which will help you develop as a tester.
From this you could move on to setting up an entire test environment using a script. How much time could this save you? Think of the savings across a whole team if each tester
just has to run a script compared to installing a database manually.
There is another advantage. If you sit with a developer and are discussing various aspects of the system, your coding knowledge will help you when (and if) they start trying to explain the code to you. You can ask better questions and enhance you knowledge of the system you are testing. This will
make you more valuable to your team as you can point out potential issues to the developer. You will also have more insight into the code which in turn will help you come up with different test ideas.
What should I learn to code?
Well that can depend on the technologies your company uses and the resources you have available. I work in a .NET environment so I have done a little powershell learning but my main push is to learn c#. The reasons for this are:
- I have multiple developers to ask about the language should I need help
- When I'm looking at our application code I will have more chance to understand it
- C# can be used across many platforms.
Comments
Post a Comment