I have been a manual QA tester for ~3 years and my company is starting to take steps towards automated testing. We haven't decided on a language yet (though we will almost definitely be using Selenium); the other QA on my team has a Java background, but the devs all use Javascript so I think my manager is leaning towards using Javascript for our automated testing.

Regardless of which language we land on, I really want to up my technical skills and I've been trying self-education (for years now, on and off) to no avail. The brutal truth is, I'm just not very good at keeping myself motivated; so I've decided to start looking into bootcamps because I'm fairly certain I'll do a lot better learning by physically being in a room with an educator and having a structure to motivate me to stay on track.

However, the internet is far more saturated with bootcamps for software development and not so much for QA-centric education, so I've been starting to seriously consider doing a part-time coding bootcamp.

On one hand, I think it could be beneficial to learn programming from a development standpoint, because then I would have the language knowledge and I would have an understanding of how my devs think.

On the other hand, is that veering too far away? Where I'm standing right now, I think I'm still more interested in being a QA engineer rather than becoming a developer. With that in mind, should I really just forego development-centric education and just- find QA-centric education OR buckle down and learn whichever language my team chooses?

6 Answers 6


As a QA engineer who also does automated testing, I feel that knowing basic development concepts can only help you. Even if you don't stray very far into actual dev work or domain knowledge to turn the code you're testing into whitebox testing, knowing some basics in coding can help you if you need to create a script or build on an existing library/framework to automate tests.

If your company hasn't picked a language yet, you can still learn some development principles by just finding courses in generic object oriented programming or functional programming. Try to find either a language agnostic book or a general purpose language you are interested in. There's two main styles of programming: object oriented and functional (there's also procedural, but I don't think that's used much except for basic scripts). I'm not a dev, so maybe there are more both those two are kind of the main ones I've heard in industry.

Usually, your first language is the hardest to learn because you're trying to learn the concepts and the language. Once you're proficient in your first language, other languages tend to be easier to learn since the principles tend to be pretty similar and the main differences are the syntax and how much boilerplate is needed for particular tasks in the language. So if you learn Java, it's probably not going to be too difficult to pick up Ruby or Python or Groovy. If you're going from object oriented language to functional language (or vice versa) then it'll be a little harder because the paradigms and program designs will be different.

I've never tried bootcamps so I can't speak much about how that experience is. I've learned programming on my own through books and trial and error. If you are interested in learning to program, and you feel bootcamps will keep you motivated, I'd say go ahead and do it even if it's not QA-centric. From my experience, coding for development work vs coding for automated testing isn't all that different. You still want to have good designs in your automation framework, you want things modularized so that a change in one part of the program doesn't ripple through a bunch of other files. You still want the code to be as reusable as possible, and while automated tests doesn't usually have to be high performance you still want to have it as efficient as you can reasonably make it so you can have fast turn around on your test runs (for continuous integration if you're doing that).

Chances are you'll probably want to choose a pretty high level language so that there's less boilerplate you need to code to do basic things. Java tends to be pretty verbose, but other languages tend to be more geared towards scripting and testing. I hear Python is a good all purpose high level language that can be used for testing. I use Groovy because the code I test is Java based, and Groovy is like Java but with less boilerplate and still runs on the JVM. At a previous company I used Ruby.

There was a book I saw once called "7 languages in 7 weeks". You might want to check that out and get a flavor for some of the different languages and which appeals to you. You can also check out https://learnxinyminutes.com/ which has a list of many languages and shows you how to do a lot of the basic things in those languages. Very nice language tours. Best of luck to you!


Automation tester is a programmer ("Software Development Engineer in Test"), the only difference is that "core developers" are programming the main application business wants, while automation testers are developing automated tests to test it. In all other aspects, it is just another programming position.

If you cannot get yourself motivated to learn programming: Sorry to break the bad news for you, but you need to consider if being a programmer (whether in test automation, or in any other way) is a good career fit for your personality.

Programming is not for everybody, and people who do it have certain personality traits. Like love of solving complicated logical puzzles (and being able to keep at it after long frustrating failures), constantly learning new technologies, being able to build in your mind complicated mental models, and maintain/remember them.

It is nothing wrong if you don't have such personality, but without it, you would hate your job.

There is nothing wrong to be a manual tester. Instead of programming, you may consider skill less relying on programming, like system administration of the tools used to track bugs. Learning how to configure/usee tools where you have more immediate feedback when you change configuration: Jenkins, Jira, wiki for technical docs, etc.

You will still need to learn some programming, but your programs would be much smaller: just a custom tools to manage separate steps when processing your data. Best language for such tools is Python, which is also widely considered as best first language to learn programming. There are plenty of free online courses to start. Next step would be Linux and bash.

  • +1 for python, IMHO the best language for learning programming. Commented Jan 4, 2018 at 21:24

My recommendation is that to be a good QA engineer you will need to be a good engineer generally and will also benefit greatly from being a good programmer. If you want to get into automation then that is also about writing code and as test suites grow all the techniques needed to make application code bases readable and maintainable also start to become critical for test suite codebases.

  • the brutal truth is, only a few people are good at keeping themselves motivated. Usually, we see them afterwards giving workshops or talks about the topic they kept them motivated.
  • are you familiar with https://www.ministryoftesting.com and trainings they offer? There are online masterclasses time to time which are free and then there is TheDojo with free and premium version. TestBash conferences have usually workshop day. For example like this: https://dojo.ministryoftesting.com/events/testbash-netherlands-2018

I'm a QA engineer who learned programming for automation on the job - I find that interactive programs such as codecademy are the best for me. Whether you're programming for automation or an application, you have to start from the same spot. The difference for QA is that you can learn as your tests demand it - testing frameworks often just require selenium and knowledge of the programming language itself.

Javascript, if I remember right, is fairly easy. I'm using Python now and I find it very intuitive. Ruby is a good one too. Java is tougher, but it's easier as a second language. With any language, you'll want to learn a method of Version control - lots of engineers find that to be the toughest part of all.

You'll also want to figure out what testing framework/test runners you want to use: There's testNG and Cucumber-JVM for Java, for example, or Protractor for Javascript, which is becoming very popular. Each of these have communities that will train or share materials online to interested parties. I'm a huge fan of Behavior Driven Development myself, but I know some QA Engineers don't like it at all.

You might also want to check with your application developers to see if they have automated testing and would like the QA team to extend, take over, or write independent tests, and if so, what kind of ground they think you should cover.

There's also free automation tools for api testing and load testing such as Postman and Soap-ui, that offer a valuable skill set without a whole lot of programming knowledge. Postman uses a little javascript - just enough to make the online classes worth it!

In other news, I don't think a particular personality is more amenable to programming or not. I got into because manual regression testing was extremely tedious for me, and I found that programming taught me to push past feelings of failure, appreciate complex logic, and remain calm in times of panic. If I had known that would happen before I started, I would have started sooner. I think my reading and listening skills have improved as well.


Go Slow and Steady.

What about learning to do a string reverse in JavaScript TODAY?

Then tomorrow reversing the words in a sentence and so on.

Pick one small programming problem daily for the rest of your life.

Try it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.