I'm not the best coder in the world… Let’s face it, I'm not even the best coder in my team (making a liberal interpretation of the Ringo Starr joke).
I'm well aware of that, and am absolutely fine with it. Just putting this confession out here to set the scene for this article.
For almost 25 years now I've been working with (test) automation, and during that time I've had many struggles and successes with it. Let me reflect on it.
What "automation" means to me
For me automation is so much more than using a tool for automated test case execution; I'm probably not the only one in the software testing profession with a similar view.
Anything you can let a computer do to help you with your work I consider that as automation. For example in my first job at a bank, I wrote MS Excel formulas and macros to crunch- and process data; that's automation for me. Using keyboard shortcuts for commonly used tasks (launching apps, advanced copy / paste, ...), enhanced custom searches in the browser bar; that's automation for me. Using scripts to do various things (creating bug reports, produce verification reports, download YouTube clips and save as MP3); you guessed it, that's automation for me.
Talking about automation here is in the broadest sense of the word.
As said, I don't consider myself a good coder, even though I've been doing it for over 35 years now (first as a hobby on an Acorn Electron). Here are some of my automation struggles:
- Still I don't completely grasp the concept of object-oriented programming. Looking at all the code I've written over the years, a lot of it could have benefitted from an object oriented approach. Having that nagging feeling of "this piece of code can be written much more effectively".
- More often than not I have to Google for coding solutions. Almost feel a bit ashamed by that, feeling I'm wasting my valuable time. Functions I have used numerous times, I still looking it up on how the exact implementation is.
- And then there is my urge to refactor. In itself a very essential and important part of coding, but must admit I sometimes take it to the extreme. Meaning I spend more time on it than I should, and leaving a piece of automation in an unusable state for too long. At least I hope the technical debt is kept to manageable levels.
Luckily it is not all bad news. If it was, I would have given up on automation a long time ago. And it is successes like the following that gives me joy, and wants me to keep going with it:
- What I like about the team of people I work with today, is the collaboration on our test automation suite. In my career I've set up numerous amounts of automation frameworks, often on my own. Now I'm part of a team where people's good ideas on automation has come together. This has resulted in a very robust framework, which forms an integral part of our delivery pipeline.
- I love it when I can use my coding skills to knock up something quick and dirty to solve a problem. Be it using the API of a tool to extract or inject data, parsing a log file and plot performance metrics from it, write a wrapper around another piece of automation to make it more accessible. Not only is it handy for yourself, you can be of service to your colleagues.
- I'm a curious person. In relation to automation this means that I want to know about new tools, libraries, techniques, and how they potentially can be used in my work. Which has resulted in me setting up proof of concepts, that got later adopted by the team / project / company.
- Yes, refactoring can be a struggle, but also is a mechanism to create success. It's great to see that as a result of refactoring, a codebase becomes better maintainable and easier accessible. That will always be a big win for me.
Despite all the struggles, I will never give up on automation. The fun I have with it, and the successes I've achieved with it, far outweigh all the negative stuff around it. Working with automation gives me job satisfaction, but more importantly, with it I can add value. Despite I sometimes (have to) walk away from it, automation will always lure me back; The automation is dead, long live the automation!