Skip to main content
blog title image

4 minute read - Career Advice

I thought you were a tester but... you're programming

Jan 30, 2008

I state no “MUST"s in here, you don’t “HAVE” to know how to program to work effectively as a tester but…when you do know how to program, then you have more options. How many more? Well…

“Reasons to be cheerful - one, two, three…”

Reasons why I have found it useful to have programming knowledge:

  • Speak to the programmers in their own language – build relationships with the programming team
  • Different languages have their own problems and idioms – useful to know these
  • Different languages have to make different physical decisions when implementing logical designs
  • Implement custom test tool utilities – metric collating, defect management, data generation
  • Use existing test tool APIs and customise your test tools e.g. mercury open test architecture, TPlan API
  • Automate parts of my test process
  • Identify new tools that you can use to help you
  • Build the application from the version control system directly
  • Learn the database schema without extensive documentation
  • Reuse development code to construct test tools
  • Get free tools working – Java & Perl
  • Regular Expressions - use and read
  • Understand the design process and artifacts (OO, UML)
  • You know what the programmers mean when they say: Refactoring, polymorphism, mock objects, …
  • Compile in Debug Mode to make applications testable

I found it useful

Early in my career, I busied myself learning how to test and I worked on some projects where I didn’t know the programming language in use (e.g. IBM System 360 ASM). That meant that I had fewer options in how I could approach my testing and my dealings with the development team, and sometimes I could not even understand the problems they discussed. I decided never to stay in that situation for the duration of the project again.

“Do Testing Early” – “More Unit Testing” – Can you really promote automated unit testing if YOU don’t know how to do it? What tools can you use? Why should the developers listen to your advice on coding if you can’t code?

How easily can you make the system testable? Could you help make it testable, or do the development team need to do all the work?

Can you easily add logging in the current development language without interfering with the code? Do you know?

I cannot claim “greatness” as a programmer, but I do learn the language for the projects that I work on - even just a little. I use the fact that I want to learn the language to strengthen my relationship with the development team by asking them for help with my learning process.

I find it interesting that I wrote the above text many years ago. And in that time I’ve worked on Agile projects, paired with developers, learned TDD, created mock objects to aid in Unit Testing. I did a lot of this through book learning and experimentation. Fortunately I have worked with developers kind enough to explain things to me, recommend books, and point out what web-sites and blogs they read.

I appreciate that a lot of people don’t want to learn to code. But I feel the need to reiterate - when you learn to code, you increase the options available to you and increase your own personal flexibility.

I highly recommend every tester learns how to program in the language used to develop the system under test.

Not learning to code is a choice

You can choose to not learn to code, that is fine.

You don’t have to learn to program. Do not feel pressured into learning to code if you don’t want to.

But, similarly, don’t advocate for testers not learning to code.

Advocate for what worked for you, explain the benefits that you accrued. Please accept that there are multiple ways to approach a Software Development and Testing career.

A benefit of not learning to code is that, you will have more time to spend learning how to Test in more detail, the psychology of Testing and the System Dynamics of Software Development.

Be aware that learning to code (or not) may be a choice that you make ‘at the moment’. Careers are long term commitments.

Our choices help us focus our attention, and prioritise our learning. You may choose to ’not learn programming’ now, and you may find that it becomes a choice you make later on.

Maintain flexibility in your choices. That will help you adapt to the future and maintain your relevance.

Yes, yes, dear, dear, perhaps next year
Or maybe even never
In which case …..
Reasons to be Cheerful (Part 3)
by Dury, Payne and Jankel