Sunday, July 27, 2014

On Testers and Code

Loads of people have weighed in on the question of testers needing to learn to code - or not.  The last several weeks have helped me develop my thoughts more clearly than they were developed before.

At shops where there is a distinct "automate a bunch of stuff" culture or a stand alone "automation team" it is easy to see why it is reasonable to presume that "learning to code" is "essential" for testers.

Most of the time, my standard response is a series of questions.  People think I'm doing something Socratic or that I'm leading them down a garden path just to pounce on them and say "Ah HAH!!! What about the FIZban project?  RIGHT! What good would that do you?"

The fact is, when I'm asking questions it is because I am trying to understand the situation you are in.  Most people who assert absolutely one thing or another tend to do so without considering other people's context, or that there might possibly be a situation where the "absolute" fails.  Most of them also look at you when you question the use of the term "best practice" for their context.

Here's what my current thinking is regarding Testers Learning to Code, coming from someone who is desperately trying to dust off/clean up rusty Java Script and even MORE rusty/limited JAVA skills.

Depending on what might be expected of you, there could be a reasonable expectation that you are at least conversant with the terms being used by the people you work with.  We expect developers and BAs and PMs to use the terms use, and not randomly assign definitions to things that make us cringe.  It strikes me that a fundamental understanding of what people mean by "assert" or "class" or something else might be a reasonable thing to expect.

At the same time, if we, testers, are expected to be able to assist in some way with code, either reviews of production or test code, or possibly contribute to the development of test code (yes, I know that is a potential can of worms, if not spaghetti, does it not make sense to at least learn the fundamentals?

If your organization is open to pairing, the need for testers to become anything other than "almost slightly dangerous" with writing or understanding code would, I expect, decrease dramatically.  However, that minimal knowledge might help you do a better job of testing.

Having a curious mind, I am not sure why people would not want to do that - at the least.

Like many people, I bristle when those with no concept of what I do insist that I must absolutely do something they do, so I can "be of value" - or something. 

This brings in the question of are testers really failed developers?  Do testers want to be production code developers but can't handle it?

I don't think so.

Once upon a time, people developing production code also tested it.  They also worked with the people asking for the software about what the requirements were.  Of course, in some shops, they told the people what the requirements were because, after all, they were IT.  They were the people who developed the software that would work the magic that allow those lesser beings to do their assigned work.

Sometimes, I wonder if the people insisting that all testers "must learn to code" are not making the same "this is a 'best practice'" argument that seems to defy the actual definitions of the words that other people make when they mean "just do it like this because it worked for us."  I want to believe that and not that they are descended from those same people who, once upon a time, told people what they, the software experts from IT would deliver.

The people who always know what is best.  The same one where we should not try and confuse them with any other viewpoints.  And facts to the contrary of those views are simply not allowed.

My fellow Software Testers - Learning something about what production code developers do and how they do it may have great value and may help your development as a professional. 

Learn to code because you want to learn one more tool to make yourself better, if it is appropriate for what you want your career to be - not because someone is compelling you to do so.

1 comment:

  1. Pete,
    I can agree that not in all situations a person/tester should learn how to write code (programming). I think in our area of software there are basically 2 types of testers; Business oriented (understand the business logic and usage of target application) and Technical oriented (understand how the target application is built and how it interacts within the computer environment).
    Both can learn to program, but it tends to be the more technical testers who do (and some can very well and others not so well). In regards to automation you get the people who are more technically oriented and also have some good programmer skills who do that work.
    Either way though you need to have some solid 'testing' skills/knowledge to do this type of work. How you choose to do is up to the individual.
    Key thing in the end is understanding how to talk to other people in other groups in their language. When talking to developers that may involve talking about code and how it is written (programmed). Having that skill and being able to do it well is a benefit to the tester in the end.


    Jim Hazen