I recently read a post by
Justin Rohrman entitled "
Do testers need to code". The following line gave me some concerns:
"So, I think that testers do need to learn some programming skills now."
Now I wish to begin by stating I am not against testers learning to code if that is something they are interested in and they want to learn. On the other hand it may not be the best value skill you could bring to a team, especially if you already have 5-6 exceptional coders on your team. Justin within the article tries to align to this thought with the following:
"My new feeling is that testers need to learn to program, or at least become more technical –write SQL, use developer tools effectively, read code — for any sort of longevity in the field. "
I have blogged about this in the past-
'A discussion on do tester really need to code.' in which I talk about adding value by learning the syntax of code. I was asked on twitter by
Marcel Gehlen to provide an example of what I meant by this. I replied with the following:
'I understand the syntax of the french language but I am terrible at speaking it.'
The main point of this update to the 'testers need to code' debate is around what we mean by being '
more technical'? To the majority of people and from the many articles I come across this implies learning to code. I feel this is too narrow and at the same time limits the potential and opportunities testers may have. As an example if you now have a team in which everyone can code and there is a need to reduce the team due to financial and business pressures. If the decision being made is based upon coding skills then I feel testers could be at risk.
Where does this learning to code end? In the modern development world of 'devops' are we now going to state that operational people and marketing people should now learn to code? we could end up with an over saturated market of half decent coders. What skills are going to make testers stand out and be seen to be adding both team and business value?
Taking a step back what do we mean by coding?
I can writing scripts in bash which to me is similar to writing test script in the sense of logical following steps. At the same time I understand the command line interface to enable me to deploy a test environment. Going forward into the devops model I can write
dockerfiles to create containers..
#
# Super simple example of a Dockerfile
#
FROM ubuntu:latest
MAINTAINER Andrew Odewahn "odewahn@oreilly.com"
RUN apt-get update
RUN apt-get install -y python python-pip wget
RUN pip install Flask
ADD hello.py /home/hello.py
WORKDIR /home
Example from
http://odewahn.github.io/docker-jumpstart/building-images-with-dockerfiles.html
I understand how to use
ansible to deploy an environment to enable me to test and run automated checks.
These are, what many would class as, highly technical skills. However as
Jerry Weinberg just posted about '
Becoming a Better programmer; ' there are other skills that are of value to a team and to the business that many would not class as technical. The ability to get people to work well together and collaborate and communicate is a highly desirable skill to have. Since it is classed as a soft skill not a lot of emphasis is placed upon this as a skill testers should learn.
What about analytical skills, as more and more companies move to a devops model for software delivery, the skill of being able to determine patterns within the software from all the data and collate that data to help improve try and improve the quality is a highly demanding and technically challenging skill. I can see this skill becoming highly desirable in the future. Maybe a tester could invest their time learning this skill?
Then we have the other areas such as an understanding of human behavior to help influence the design . Learning about social science and systems thinking to help see the big picture and overcome obstacles for the team. I have been running a series of blog posts on skills testers should learn away from the traditional 'must code' school of thought. Using your time wisely to practice and improve these skills can help you become a better tester and more importantly show your value to the business.
A few examples are given below (feel free to browse my blog for other examples)
Also with your testing skill set you could mentor, coach and teach others about testing and how they can use that to help improve the software. Set yourself a goal of coaching the programmers in simple test techniques that they could look to add to their frameworks to enable you to focus more on the difficult to find issues using exploratory testing .
Again I wish to state I am not against tester learning and if they feel they have a passion towards coding then go and do it. At the same time think about what else they could learn that adds both team and business value.