New to Software? Consider QA
Before becoming a software developer, I was a QA automation engineer. I had just changed majors and had a couple of CS classes and a basic understanding of javascript under my belt. I found a small software shop near me that was hiring an automation engineer, and I was lucky enough to have landed the job despite little experience with development. To say that it was like drinking from a fire hose would be an understatement- I had to learn what an automation framework was, how existing frameworks like Webdriver.io worked, how to modify the existing React codebase to accommodate my tests, what in the world agile was, and how to use industry-standard tools like Jira and Github.
Eventually, I moved on to a new company that would provide room to grow. My first job paid horribly, the developers were not helpful, and my overall long-term stability was questionable. However, the experience was invaluable to my career growth. I eventually landed a position with a new company that was supportive of my career goals and always willing to let me participate in company hackathons and other engineering tasks. A little over a year later, I was moved into a software engineering position.
I always suggest that would-be developers keep the QA field in mind. The salary is typically good, they are almost always in demand, and it will give you industry experience that can open up a new career paths that you might not have thought about.
What types of QA roles are there?
There is no real standard when it comes to QA job titles, so it can be confusing unless you pay close attention to the job description. However, there are 3 general categories that I group these jobs into:
QA Analyst
This is a generic term for a manual tester and is often interchangeable with the titles ‘QA Engineer’ and ‘QA Tester’ (or something similar). This job generally consists of performing manual tests of a product. You will often be testing a story or task for bugs before sending it off to the product owner for acceptance. These roles don’t pay quite as well, but there’s always an opportunity to learn and grow.
Automation Engineer
This often turns out to be a hybrid manual/automation position, although the amount of automation vs manual testing will be very company-specific. In this role, you’ll be responsible for writing automated tests that will run against the front-end of a product. If you’re working for a large, established company, you’ll likely be adding to a large existing framework. Conversely, a startup might require much of the framework to be built out in parallel with development. This is a wonderful way to learn and build your coding skills, especially if you’re working with an experienced team. If the company has truly embraced test automation, you’ll learn a lot about Continuous Integration (CI) and Continuous Delivery (CD).
SDET
This is sort of a strange role that has no specific definition, but an SDET (Software Development Engineer in Test) is more of a developer-automation hybrid that has been called the ‘unicorn of the QA world’. This is a QA professional that is both capable of development and writing automation, unit, and integration tests for a product. While role definition varies wildly, some companies consider their automation engineers SDETs.
What do I look for in a company?
If you’re looking for a QA role, you want to find a company that knows exactly how QA fits into its engineering process. You may find a surprising number of smaller companies that know that they should be running automated tests and/or have quality assurance systems in place, but don’t know how to implement them. You could be working on test automation with no clear vision of how they’ll be executed. Always try to tease out this information during interviews.
You should also find a company in which there’s room to grow. You may find that you love QA and want to make a career in it, but if you have any inclination of moving into a development (or product owner, etc.) role, you should communicate this early on. Developers should be willing to teach, and you should have access to pull requests, etc so that you can learn by reading code and getting involved in the process. Ask lots of questions about how they mentor, if there are any learning opportunities provided (Pluralsight, etc.), and how they feel about QA in general. Ask lots of questions, and don’t be afraid to zero in on any red flags.
What Do I need to know?
You should have a solid grasp of javascript and at least one web framework (React, Angular, Vue). There are plenty of free resources available on the internet, as well as some solid courses on Udemy if that’s more your style. While companies using Angular will be pretty much locked into Protractor for their testing framework, Webdriver.io is a good place to start. The documentation is good, its pretty easy to set up, and there’s plenty of help available if you get stuck.
Installing Webdriver.io and writing some automated tests for a project you’ve already built is a great idea. I find myself doing this for all of my Angular side-projects with the built-in Protractor framework. If you’re not yet comfortable with building your own web app, search GitHub for an app that you can pull and run locally to practice on.
Conclusion
I hope that this gave you something to think about as you navigate your journey into software development. QA is a wonderful and vital step in the development process, and I’ve worked with quite a few automation engineers that came from software development because they just loved the testing process. Whether this is a career or a step in your career journey, I wish you the best of luck!
Photo by Scott Graham on Unsplash