I do a lot of search on google about this question. I reached out some great blogs and articles about it. Some like these three: roadlesstested.com testobsessed.com testingperspective.com.
As you can see, these three post came from people who know about programming. I see just one side of the discussion, just based on how I write my query on google search.
So, I need others point of view. I post this thread on different groups on Linkedin. Technical groups, management groups, etc. I try to post on groups with members on different locations, like Europe, US, India, and Brazil.
It was answered for about 37 persons. It is not a ‘great audience’, but I get what I need. I have a lot of considerations, point of views, etc. My post was vague on some aspects, to not drive answers (like my search on google).
The content of my post was:
Currently, in my company, we had this discussion about the competencies of a tester. We get stuck in this point: How much programming a tester must know?
I opened this discussion to get different points of view and clarify to the team the results.
How much programming skills a tester must know?
(1) None – Tester will verify the front-end, independently of the back-end technology
(2) Some – Tester understand what he is doing, in the front-end and some back-end, like databases. Understand about the technology and its integrations.
(3) Enough – Tester understand about the technology and use this to validate code before all deploy, perhaps before a commit.
I will explain about those levels. A ‘None’ consists in a tester who drives all its validation in a deployed software (web, mobile, desktop, etc). He doesn’t even have to know about how language the software was written and validate all tests in the front-end. The ‘Some’ is when the tester knows some code to, after the deploy and find a bug, he knows for sure that is an application issue, not a test fault. He understands about log reviews, stack trace analyzing and then, see the code to see where the bug probably is.
And then, ‘Enough’ is when the tester has good development skills to, before an deploy, or even a commit, analyze the code and, eventually, doesn’t approve the code. Using tools like Sonar or git/Gerrit, he could say: “Hey, that if/else is wrong…”.
And please, share your location! I will post this discussion in other groups and want to compare the results !
I get 37 responses. I will not make a graph, distribute location of posters, etc. No, no need of this. The most voted level was ‘some’, with 28 hits. Regarding location, there is a common sense of that a professional must know what he is doing. And we achieve this on the ‘some’ level.
I agree with that. With some knowledge, we can say what we want with confidence. When we say programming skills, we talking about the generic thing: an if/else, for loops, architecture stuff, design code, etc. Instead of a programming language, a tester must know how an if/else works to help him in their tests.
My survey was intentionally vague in some points, and maybe, people see things like I expected. Some people ask me back about what the real role of this “tester”. He did manual or create automated scripts? Off course, if we want someone to write automated scripts, he must know coding skills. When we get a manual tester, we didn’t expect that. I believe they have different skills. A manual tester have an attention on details, user-like view of system, etc. A programmer only see lines of code, and probably don’t have the “user view”.
I have a consideration on the level of this programming skill. We get a lot of good tester who have those skills I described above. What happens when he gets more technical? He loses part of those skills? I think so. These skills are on different sides of brain: the skills of testers are on the right side, and the logical skills are on the left side. Ok, I believe this could be a myth, but we do have to agree that a person is different from another person, no matter what sides of brain their use. See some about the left-brain and right-brain here and here. This could be a good discussion, and this is not the place, but it’s a good thing to think, right?
These personal differences make me believe why some posters voted on ‘none’ (4) and ‘Enough’ (5). Some occasions force us to be on the extremities. Some posters said about the “depends on situation”. On some cases, we don’t need to know programming, in other cases, we need.
I am still divided on what to think. Obviously I tend to assume that testers must have some knowledge on programming. But, looking on that way, on that those skills depends on personal qualifications, I stay in doubt. I believe that anyone can learn or develop new skills. But, some skills can make other skills disappear?
At the right moment I am writing this post, I receive a new contribution on a linkedin group. The poster, share two links and say “You might be interested in this”. Yes, those two links are very interesting, but makes me feel divided yet. The authors, from what I see, have some programming knowledge. I don’t know how much, but they have. For me, the discussion remains on one side of the table. See the links here and here.
My personal experience, with testers who don’t have programming skills are a little bit confusing. I think they believe, because I am a developer too, that I force they to know programming. I don’t like to do tasks over and over again, repeatedly. So, that’s the reason I began to learn code programming, in the past. Java, Ruby, Python, SQL, shell script, gave me a great background to understand what I’m doing. Today, instead of automation, I work on development team too, depending on projects.
The testers I know, who didn’t want to learn something new, are, in the most part of time, frown and are complaining about everything. I don’t know if their attacks are just defenses. I used to think this is a culture of my country, or my region, where I work. From the posts, I get some point of views, from the other side of the globe, where the same happens too. I believe is a defense, in most of the cases.
I believe this discussion will never ends. Testers are not the same as developers. And developers are not the same as testers. Each one knowing what others do is interesting, but not obligatory. And to conclude, as several posters said in my survey, “it all depends!”.