Saturday, June 18, 2016

How to become a software tester

Software testing career is very peculiar - you can't just go to university and graduate, as none of them offer this field of study. Maybe because of that I hear a lot questions like: 'how to become a software tester?'. Today I'd like to answer them and compile good advices (at least in my opinion) in one place.

Throughout the post I'll use a lot quotes from 'How Google Tests Software' book. I also recommend posts from blacksintechnology, guru99, reddif, deccanherald and last but not least, my blog (but have in mind that it was written for testers with some experience already).

As usual a word of caution (which you should adopt for everything btw): those are just my views, they don't have to true for you and your environment. Order is pseudorandom. 

1. Education

Google takes hiring engineers seriously. In general, our engineers have computer science or related degrees from accredited universities.

Highly controversial topic which make a lot people agitated and emotional. From my experience though  testers with computer science background are indeed better (and I'm not the only with such opinion).

Now imagine you don't have any IT education and you are being recruited by someone like me. Every job interview would be uphill battle for you. You would have to prove more skills than your peers just because they are not confirmed by 'accredited university' yet.

Today we interview for general computer science and technical skills combined with a strong requirement for testing aptitude.

 Place yourself in pole position and graduate. As Sun Tzu said fighting uphill battle is never a good idea.

2. Learn English

The reality is that the companies consider the candidate’s ability or inability to speak fluently in English as one of the major selection criterion.

Obvious one. It's true especially for testers which often have to not only play with system under test, but also actively cooperate with product owners, programmers, managers etc. 

Remember that learning English doesn't have to be boring. Make it fun by reading books, watching sport and TV shows in English (preferably with English subtitles). Some cities have something like 'Language Exchange Club' where you can meet people and train foreign language.

3. Avoid naysayers and doubters

One of the dangers newcomers face in any industry are “broken” and “settled” employees.

Interesting topic. Generally speaking if we are committing ourselves to something ambitious (like becoming software engineers) there will be people who will show skepticism, doubt and worries. You need to ignore them and find mentors instead (see point 9). Robert Greene in 48 Laws of Power  goes as far as to phrase Law 10 - Infection: Avoid the unhappy and unlucky. Surround yourself with positive people.

4. Work on soft skills

We want to hire people who are enjoyable to work with, get along well with others, and who add to our culture here.

As I said already in 'do and don't for testers' software development is social activity these days. Engineers aren't locked in small rooms with no windows, but they cooperate on daily basis with a team. I know people who have very high technical skills, but are just terrible when it comes to effective communication. 

Our society discourages honesty in this area (because it may hurt someone else's feelings) so until you're hired and trusted employee don't expect any feedback. You have to be aware of it's importance and analyse your failures by your own. Recruiters won't tell you were just weird :)

One of the major attributes employers find lacking in young graduates is soft skills.

Also before getting a new job you need to succeed at job interview first, that's why I wrote this post: 'How to nail testing job interview'.

5. Get ISTQB certificate

Pass ISTQB FL because it may give you an edge during recruitment, but don't waste time going higher.

I'm not a fan of ISTQB certification, but it can be important during recruitment process. Foundation Level is pretty easy so it shouldn't be too big time investment. Learn basic vocabulary and try to understand basic concepts.

6. Work on programming skills

Knowledge of coding is necessary but tends toward the coding skills necessary for {...} the modification of code over its creation and the ability to script end-to-end user scenarios.

Most of testing jobs these days require test automation skills (some testers call it check automation, but don't bother about it now). Pick any language you want, for example Java. Start with  general programming skills and move to Selenium after that. My recommendation would be:
a) Java for Testers by Alan Richardson

7. Get yourself interested in testing community

We are looking for innate curiosity about how things are built and what combinations of variables and configurations are possible and interesting to test.

If you want to be a good tester you need to at least like your profession. It's very important to show that interest during job interview. The biggest international testing communities can be found:
a) On Slack -> 
b) On Ministry of Testing ->

8. Read books about Software Engineering

Test Engineers are rare individuals. They are technical, care about the user, and understand the product at a system and end-to-end perspective.

Get yourself familiar with keywords like Waterfall, Agile, Lean, Lean Startup, User Experience (UX), Performance, Security. Focus on understanding why we do we things we do. Skip detailed technical implementation for now.

Next week I'll extend this topic and post book recommendations on Awesome Book Reviews.

9. Seek mentors

Test management at Google is much more about inspiring than actively managing.

Natural extension of point 3. It may be hard before getting your first job, but if don't know anyone you can look for them online (see point 7), or meetup (see point 10).  Make sure sure you have indeed  found smarter person. This article about highly overrated people may be beneficial at finding black sheep.

10. Join local meetup/conference

We want people who are connected to the world around them and the larger computer science community.

I joined KraQA crew recently and already gained a lot of knowledge from more experienced colleagues. It's wonderful place to learn something new and find people with common interest. Don't leave right after official part ends, sometimes (actually, pretty often) you can learn more during informal post-meeting discussions influenced by a beer :)

Conferences are also great, I'm going to Quality Excites next week. See you there!