Career option: QA Engineer

Hello, my name is Pablo and I’ve completed courses for Ruby, JAVA, Javascript, SQL, Command Line, Building APIs from scratch, and currently doing Python. I’m a QA Engineer transitioning to Software Engineering Manager and I’m here to help out people as I can. Working on a couple of ideas to engage with the community and with Alyssa to set up some Q&A sessions.

After completing one of the courses, a lot of you ask: Now what?

Well, aside from being an app developer a good option is to be a QA Engineer. But what exactly does that mean? QA -> Quality Assurance

A QA Engineer should be part of any development team, they validate the requirements from the stakeholders and maintain the quality of the product. I say should be because a lot of companies don’t see the value in having a QA resource, and expect the developer to be responsible for the quality of their own code. To an extent, that statement is correct but a QA mindset is very different than a developer mindset.

Why? We find bugs in the code by testing the functionality, manually using the app.

How? Mostly by asking “what if I do this…”, we have inquisitive minds that don’t like to do as we’re told.

  • Hey, can you test the login page?

  • Sure.
    – use a good password
    – use a bad password
    – use a SQL statement instead of a username (anybody know little Bobby tables?)
    – use a Js script instead of a username

  • Found a bug.

  • Wait, what? How did you crash the system?

  • Because you didn’t sanitize your db inputs.

Developers usually only do what they’re told, unless you give them very specific instructions they don’t ask the "what if’s. QA does.

Eventually, all apps are too big to be able to execute every possible scenario manually in a reasonable timeframe (regression cycle). That’s where the Engineer part and your recently completed course come in. Instead of manually testing every flow in the app, you can automate it. Use Python, JAVA, Javascript, or any other number of languages and you can automate a piece of software.

Tired of testing the login page every single time? Write a script for it, it will execute automatically and you can worry about more critical areas of the app.

Automation can be done on the front end, the back end, on mobile apps, or the pipeline. What tools or language you use depends largely on the project at hand.

Questions, comments?

Discuss.

11 Likes

Wow! thanks for all the info. The first question that came to my mind was…

Are QA engineering jobs available to entry or junior level developers?

because it sounds like QA engineers have quite a bit of responsibility and tell others what's wrong with their code.
5 Likes

Wow quality advise
Thank You very much

1 Like

Short answer: yes.

Real answer: yes but… just like for a developer, you’ll need some experience in actual QA as well as writing automation code.

Like I said, QA people have a specific mindset that makes them stand out. You may be able to write the code, but it might not end up being an enjoyable experience. While it is an option, it’s not for everybody.

Companies have job postings looking for an automation engineer, but in reality you won’t be writing code 100% of the time. You’re going to have to do manual testing because automation is always falling behind and the code still needs to be tested. In 11 years I’ve never been part of a company that actually has a QA Engineer writing code all day.

What can you do to get some automation experience?

  • learn about Selenium
  • once you know the basics of Selenium, find a framework that supports the language you learned
  • take the apps you’ve written recently and apply some automation to it
  • take any site you like, write some scripts for it. In this sense, it’s a little easier to gain experience because you can apply it to any existing site or app.

Regarding QA experience… that’s a whole other topic. Unlike developers, QA needs to have a lot more knowledge. As a developer, you can focus only on the front end, or only on the backend. And that’s fine, but QA needs to know about both. A good QA resource will at least match, if not exceed the knowledge of a developer. They just use it in a different way.

Also, something I mentioned in another post. Just because you know Python doesn’t mean you can use it for every single automation project. Some apps benefit from automation in Python, others from Javascript, others in Ruby. As a QA Engineer, you need to be flexible and adaptable. You need to be able to pick up a new language when required. You don’t have to master it, but you need to be able to pick it up with little effort in a reasonable amount of time.

Once you enter the coding world, deadlines are constantly changing and everything is important so your manager is always going to push you to get things done quickly. This is true for developers and QA.

4 Likes

Excellent post.

In some ways, the job of QA Engineer sounds very similar to some roles you’d find within the infosec space… in as much as part of the role is focused on poking applications to see whether they behave in an unanticipated (or potentially exploitable) manner. :slight_smile:

(Extra points for lil’ Bobby Tables!)

1 Like

Informative post

In General, QA stands for Quality Assurance it means managing the quality of a product or service involves planning, fulfilling, and monitoring activities. Quality assurance comes under the monitoring facet of that discipline. It’s the approach or act of confirming whether the firm’s quality requirements met or not.

Quality Assurance (QA) in software testing is defined as a procedure to make sure the quality of a product or service meeting the standards set by the organization. QA improves the software development process and makes it efficient and effective as per quality standards defined for software products. Quality Assurance is also called Quality Assurance Testing. QA Testing,

QA is the last line of defense to stop bugs from reaching the public, so the level of testing is an order of magnitude higher than the developer.

I would suggest you learn Selenium with python so that you will gain some knowledge

hello @peachesmotorsports, thanks for sharing your experience.

I just started learning about coding recently, but I’ve been a QA professional pretty much my entire career (10+ years), however, it’s in a totally different industry - Manufacturing. I was initially exposed to programming through some necessity at works, such creating reports by querying information from a SQL database, as well as writing simple macro in VB for Excel spreadsheet.

I am thinking of a career pivot into Software Development, it makes sense to synergize with the QA tech stack, but I have yet to find any of my former technology knowledge useful in software. I’ve wrote some python scripts (with Selenium) to automate and scrape some of my daily works, as well as other hobbies. But is there a systematic approach to start a career path in the QA roam? perhaps starting out as a QA Tester…QA Analyst?

It will be great if someone can shed some light.

Thanks,

Jack

Don’t limit yourself by the industry, I find that to be completely irrelevant. The skills of a QA Engineer or a developer can be transferred to any industry. I’ve gone from Digital Media → Transportation → Retail → Healthcare → Crypto. While there is value in having specific knowledge, diving into something different is what can help you grow.

Why do you want to be a developer, or do you mean writing code as a QA resource? What is your former technology knowledge?

I don’t know of a systematic approach, I had to figure things out on my own. I had coding knowledge and a desire to do more, be more. When my manager didn’t support or encourage my ambition I simply left, that is what I consider bad management. My previous managers didn’t want to help me grow within the company, in some cases because they didn’t know what to do with me, where to place me or pay me what I really reserved. They lost a valuable resource, and I found the things I wanted to keep growing.

What is your actual goal? Most importantly, why?

1 Like

I guess I wasn’t clear on my original post. I am working as a QA Manager in the Manufacturing industry (nothing to with programming and software development whatsoever). Most of my skillsets are not software related, rather it’s more product specification driven, while implementing quality system such as ISO9001 and maintain such environment.

“What is your actual goal? Most importantly, why?”. These are definitely some tough questions. The reasons I wanted to pivot into a software development based career are quiet straightforward. I in my early 30s and I feel like I have a long career ahead of me, and I do NOT think manufacturing has a bright future, especially when I live (not a manufacturing region). There hasn’t been any disruptive technology within the manufacturing industry, I meant there’s robotics automation and additive manufacturing(aka 3D printing), but most companies don’t really embrace such technologies. There’s also the earning potentials, I am pretty much capped out at my current salary, even though I’ve been taking on other responsibilities within the organization such as Sales and Project Management.

Another main reason for my pursuit in software development is the fact you can work anywhere, for anyone (like you mentioned above). I’ve been pretty active in the web3 space myself ever since the pandemic, and I was able to participate in various projects, helping the teams simple tasks such as community moderation, as well as manually testing UI/UX prior to launch. I even started a little DAO earlier this year with some like minded people, to pool our resources and share knowledges within the space. I wanted to be able to do more in the space, whether is building front-end UI for a project, or compose smart contracts within the back-end, as well as writing automated testing or auditing.

My goal for the next 2 years is to establish a new career path within the IT industry, I am not sure exactly what that path will look like, but I am hoping that I can utilize my former(current) experience as QA in manufacturing, and combined with new technological knowledge in programming and coding. I’ve been picking up bits and pieces along the way, but never really had a systematic approach to learning coding, hence I signed up for Codecademy, planning to complete these fundamental courses, such as Python 3, JavaScript and SQL.

I suppose @peachesmotorsports you are correct, there’s no fixed path to get where I wanted to go, I kinda have to fumble through it myself. Hopefully people like yourself will be able to provide some guidance for me along the way.

Cheers,

Jack

I see, that makes more sense.

Within manufacturing, there are a couple of things you could explore: PLC programming and writing code to validate quality. Both require good planning and code development but depending on the manufacturing industry it might not be feasible. Also, it requires you to be on-site to supervise the implementation. It is more of an Engineering role than a software role. I have a friend who creates such systems for nuclear plants, he has traveled to Asia and Central America to supervise the implementation of his designs. I relate to it because I took those courses in college but never got a chance to work in that field, I enjoy talking about his projects to see what he is doing.

As for your actual goal, I would say that starting in QA to eventually move to a developer role is not the best path. Some people have done that, but from what I’ve seen companies don’t have that as a natural progression. If you were to find the right company that would be willing to work on that with you, it would take some time (a few years). If you want to stay active in the web3 space I would suggest sharpening your development skills and capitalizing on them. My experience with crypto is limited, I’ve only been working in this industry for just under a year but from what I’ve learned this is what I suggest:

  • REACT or Angular for frontend development (assuming you want o keep contributing in this area)
  • .NET for the backend (we are a .NET shop) → JavaScript could be a substitute, I just haven’t seen it used
  • SQL and NoSQL
  • Node
  • Python
  • git
  • Docker, Kubernetes, Helm
  • cloud services (whatever your preference is between, AWS, Azure, etc.)
  • APIs (Codecademy has a good Pro course on this, I took it and it was extremely helpful)
  • FIX APIs (learn about them and how to use them)
  • NATS, RabbitMQ, or another messaging service of your choice
  • Graphana or another monitoring service of your choice
  • find a good source of test crypto (Ropsten, etc.)

We do not deal with smart contracts, but I know they can be tricky to write. Even trickier to test. I was approached several months ago to be part of a company that needed a QA resource to validate smart contracts, at the time I declined the offer because I didn’t know much about it. I would be more confident taking on such a role now.

Good developers have a habit of writing unit tests which is a good way to maintain quality in the code, but a dedicated QA resource is essential. QA is extremely underestimated in the IT industry. This is evidenced by news articles I’ve seen of companies that lost millions after deploying a smart contract that had a bug. The QA resource for this is not cheap, but definitely worth it when you consider the consequences.

It is very hard for a developer to test their own code, even if they have a strong QA background. I tell you this because I find bugs in my own code weeks or months after the fact (I’m the only QA resource and have no one to do code reviews for me). Also, I constantly find bugs in the code I get from my team.

Once you have more experience, you may find that being the dedicated QA resource could be what you enjoy doing so don’t rule it out as an option.