Tuesday, 27 August 2013

But I only write test code, I'm not a programmer!

"But I only write test code, I'm not a programmer!"
"I'm only a tester, so I've never done TDD before!"
"Why should I care about readability, this is only test code?"

I often hear phrases along these lines from testers, and it makes me very sad. Not just the fact that this mentality often results in hard to maintain and brittle test code, but it also blocks testers from developing their skills.
Definition of the word: programmer
"One who writes computer programs."

Before continuing on with my rant, I'd like to make one thing clear:
Test automation code is a piece of software that tests the functional correctness of another software. Therefore, you, me and everyone involved in maintaining that automation code is - by definition - a programmer. We might be specialised in test frameworks, tools, browsers, requirement formats, but we are still programmers.
Without admitting that, we will never feel entitled to think about all the fancy stuff "developers" do. We won't feel the need to learn design patterns, and will not be striving for decoupling, readability and clean code. Why should we? We're only testers. We will constantly feel inferior to the guys actually "writing software".

I often ponder about why this phenomenon exists in the first place. I believe it comes from an ancient world's mindset, where "testers" were "only" executing manual scripts. Back then, testers did not write software. And by that I mean that they didn't have an IDE installed on their computer. They didn't have jdk, ruby or a stack of javascript dark magic installed on their computer. They didn't have to learn version control systems and continuous integration services. Hell, if they've ever heard the term: merge conflict. Now if that's true for you now, you're right: you don't need to know about programming. But if you're like most of us, and your job is to use a programming language to construct an executable program, you are (drumroll) a programmer. It is not a matter of the intent of the software we create, but the fact that we are writing software.

There is however another legacy that we (as programmers of test code) need to fight. Unfortunately most programmers by title, perceive test folk as less capable. But I believe it is due to what I've been writing about above, and the only way we can change that perception is to man up, admit that we're programmers and learn the craft, to prove them wrong.

It starts by admitting it to yourself, and it feels damn good!
So what are you waiting for?


  1. This comment has been removed by a blog administrator.

  2. This comment has been removed by a blog administrator.

