Everyone needs a change of scenery at times. There’s a major difference between personal changes and professional change: we like our career to move in an exclusively upward trajectory. We know that everyone wants to feel like they’re making personal and professional progress by becoming better, smarter, and more responsible people. We want more responsibility, more challenging tasks, better opportunities, higher purchasing power, and better provisions for our families. Most importantly, we want to be satisfied and feel like we are fairly rewarded for our efforts. Let’s talk about how to move your career path from QA to software developer.
But in order for employees to achieve upward momentum, leaders and managers will expect employees to actively engage in their career progression by taking the initiative to adopt new responsibilities as evidence of their qualities. This basically means that if you want to move up and acquire more responsibility, you should actively seek to move yourself up into those responsible roles rather than sitting back and waiting for your manager to bestow them upon you. Work with your managers, not around them.
We want to take this time to discuss how people feeling stuck as a QA tester can take that active leap into a new career as a software developer. It’s not easy. It’s not quick. And it certainly requires an abundance of patience. You’ll need to apply yourself in areas that will make you a bit uncomfortable. Most of the changes required during the transition will involve an abundance of non-technical abilities, so hold on for the ride.
Why Move to Software Development
If you’ve spent any amount of time on this site and read through our numerous guides, it should be no surprise to you that we are huge advocates of any type of person becoming a software developer. Job security, mental challenges, money, collaboration, and flexibility are just a few of the reasons that people willingly subject themselves to rigorous study sessions for hours on end learning the ins and out of computers and how to program them.
In fact, we have written extensively about why you should move into a software development career. Whether you’re a student, someone without a college degree, a graduate with an information technology degree, or just wanting something new in your life entirely, we’ve got you covered.
It’s important to note that the following benefits often also apply to quality assurance (QA) testers that work alongside software developers at tech firms. Both testers and engineers will be touching the same products with different responsibilities. The nature of each position has some overlap and similar benefits.
Let’s summarize some of the biggest reasons to make the jump.
The world is full of technology. Entire industries are built around the assumption that the Internet and millions of connected devices are online. In some cases, people have become entirely dependent on the conveniences and connectivity afforded by technology. Mobile phones, dishwashers, tablets, movie streaming, and navigational GPS maps are just a few examples.
How do you think all of that technology functions? Here’s a hint: not by magic.
Software developers are constantly ranked in some of the highest paid and most flexible positions. They’re able to work remotely from anywhere on the planet, relocate their lives with minimal disruption, collaborate with communities across the globe, and get started in the profession with relatively tiny barriers to entry.
According to the Bureau of Labor Statistics, software developers and related fields are ranked with a “much faster than average” job growth prediction between 2018 and 2028. This means that on top of the already millions of jobs available in these industries, there will be upwards of 20% more by 2028 in some categories.
Compared to QA testers in the tech industry, software developers are usually more secure in their positions because of the complex nature of the solutions they’ve created. It isn’t yet possible to automate design and implementation phases of the software development lifecycle (but artificial intelligence junkies are trying to change that). However, QA testing can be automated through tools like Postman, Selenium, ReadyAPI, and just plain old scripts.
This means that QA testers are far easier to replace if good automation is used.
Salary and benefits are obvious benefits to a software career considering that most people get jobs because they need money to live their lives. Yes, we strive to obtain jobs that will bring us satisfaction beyond money, but at the end of the day, we work to live, not the other way around.
While QA testers are often paid above median salary ranges, they’re typically below what software developers are paid. And that disparity grows quickly as the years of experience start to add up.
According to salary.com, here is a quick comparison of salaries:
|Software Quality Assurance||Software Developer|
Further driving home the point that software developers have better salary prospects, here’s a break down some compensation numbers according to the BLS:
- Median salary of $105,590 (varies wildly between cities and states)
- Median hourly rate of $50.77 (varies wildly between cities and states)
- Higher than average growth outlook (up 24% from 2016 to 2026)
Note that salaries and hourly rates can fluctuate wildly between locations, industries, and individual businesses. Your experience and performance will ultimately determine how much you end up making. For new hires that have little to no experience, businesses sometimes associate the applicant’s college degree with the eventual pay rate.
Beyond the immediate salary benefits, software jobs typically come with better than average benefits, flexible hours (see below), and generous paid time off policies.
- Insurance benefits: Sometimes larger tech firms will offer 100% covered health, dental, and vision insurance. Even if the plans aren’t 100%, there are usually other plans that have low deductibles and fair premiums compared to the rest of the market.
- Flexible hours: Software development can be done in any area of the world (electricity and Internet are requirements) and in any time zone even if your team is across the planet. Teams split across countries have no problems contributing to the success of the same product. In fact, 24-hour development and test coverage can be obtained if teams are spread across the globe in just the right way.
- Paid time off: Like insurance benefits packages, some tech firms have begun to offer “unlimited vacation” which encourages people to take breaks whenever they need it. Obviously big project deadlines will hamper those plans, but compared to other industries, the ability to take time off to avoid burnout or to spark some creativity is a big deal.
We’ve already touched on the flexibility of the work hours, but did you know that the modern office trend is to work remotely? Instead of forcing people to trek across great distances on interstates and highways, companies are finally starting to figure out the efficiency, productivity, and cost benefits of allowing developers to work at proxy offices or from home.
The increasingly portable nature of your workplace and tools is what makes software development so special. You’ll be able to command a salary that is local to the business headquarters while living an area with a low cost of living. Think: working in Kansas for a company in Washington. High salary + low cost of living = happy.
Let’s talk details of the biggest flexibility perks.
- Remote work. Having the ability to move where you want at any given moment is a huge benefit. You’re not tied to any specific place because you don’t have to physically commute anywhere other than your place of residence.
- Work from home. As a software developer, your job is perfectly doable from home due to the nature of the work and the tools that we have built to make remote work easier.
- Travel. Some career paths allow you to be a software developer and a traveling tech evangelist for those of you who love to travel, talk, educate, and teach.
What Type of Degree is Required
If you’re already a QA tester, you probably have a bachelor’s degree. According to a 2018 summary report from O-NET Online, 70% of survey respondents have a bachelor’s degree, 15% have an associate’s degree, and 7% have post-high school certificates and training. That’s good news for you because the biggest leg up against other competition for software development job openings is having any college degree.
Based on interviews and screening of potential candidates by some of our authors, having a computer science degree is typical, any STEM degree is optimal (see our guide for readers with Information Technology majors), and no degree is still an option. We’ve personally been involved with interviewing hundreds of candidates across several companies. Many of these candidates have been stacked with degrees and certificates, but many of the most talented have come from the pool of individuals without any formal training. Where they lacked in formal academics, they excelled with confidence and speaking abilities backed by their experiences gained through building their personal projects on their GitHub portfolio.
Many of the classes in the various STEM programs have overlapping requirements, assignments, knowledge, and outcomes. That means skills earned in one program are usually transferable to a degree in another program as long as both programs are concentrated in STEM.
For those of you who have non-STEM degrees or even no college degree at all, you’re still eligible to break into the industry. Just know that you’ll have to make up for your lack of formal education with self-learning, dedication, organization, communication, and patience. While it is true that having a STEM degree is sometimes a requirement for job placement, on the other hand, it’s rare for software firms to turn down talented and dedicated individuals without one.
We should note here that your specialized interest will ultimately determine what type of academic background you need. Computer security and encryption will likely require advanced math and algorithms designs whereas basic web application development would only require knowledge of the fundamentals of computers, software, and programming.
QA Versus Software Developer
We mentioned previously in this article that QA testers and software developers work on the same products and have minor overlaps in responsibilities. It’s important to understand the large responsibility shift that you will incur by switching into a software development role. For some people, the difference can sometimes be staggering and overwhelming depending on what you were used to in your QA tester role.
Defined Criteria Versus Creative Solution
If you’re a current QA tester, then you’re probably familiar with the type of criteria handed over to you to begin creating positive, negative, and automated test cases. It might look something like this (if you use the GIVEN, WHEN, THEN approach).
GIVEN I am a user of the system WHEN I click a button THEN the system should take some action AND I should see a response
That’s pretty straight forward and solidly defined. If you don’t have a good product owner and business analyst on your team, then maybe you’ll have something less defined, but let’s focus on the best case scenarios for the purposes of discussion.
Creating test scenarios from something so robust is fairly easy. After all, testing is performing a series of steps, documenting the result, and comparing that result to the expectations. We call this “actual versus expected” results. Sure, you’ll have to be creative and think about all the ways in which the system should be tested for bad user experiences, but you’re mostly railroad tracks.
In software development, such a luxury isn’t the norm. If you’re lucky, you’ll get a user story in a format like “As a user, I need to be able to do X, so that my job is easier.” Sentences like this are open for interpretation, easily misunderstood, often framed incorrectly, and just not that great at helping a software developer build X. Through discussions with product owners and technical leads, the business spoken user story needs to be translated into a technical design or architecture so that an accurate and maintainable solution can be created.
And that’s not the end of it. A design is not an implementation. You can’t ship an architecture diagram to a user and call it a day. Software developers have to take the user stories in combination with the architectural diagrams, put their hands on a keyboard, and create something that not only solves the issue but does so in a way that meets standards, best practices, and maintainability guidelines for the poor souls down the road who have to support the product.
What and Where Versus How
QA testing cares about two things: what was created and where can it be found? Obviously the testers need to know what exactly they’re supposed to test. New features are different from bug fixes. User facing requirements are different from invisible changes. Next, testers need to know where the changes were made. Which application or product needs to be tested? Where in that product was the change made? Which tools will the tester need to pull out of the toolbox?
On the other hand, in addition to “the what” and “the where”, software developers also care about how to create something since they’re the ones responsible for implementation and maintenance. This is a big difference between testing and development. While testers can stop after figuring out what needs to be tested and where testing will be optimal, developers will need to go the extra step of creating or fitting into an architecture, implementing the feature, and documenting it for eventual testing, support, and maintenance.
Technical Background Differences
Depending on the level of scripting and automation with which a QA tester is familiar, there may be a lot of overlap between responsibilities. For example, Postman is used by both testers and developers for the purposes of testing web services and web APIs. Selenium can introduce testers to basic programming skills via Java automated testing. Azure DevOps allows testers to get involved with the CI/CD pipeline when plugging in integration and user interface tests to the build and releases processes.
And while there can be a lot of overlap, there are still large gaps that need to be overcome. Here is a list of the more common knowledge gaps that a QA tester would need to bridge to be successful as a software developer. This list isn’t exhaustive, so use it as a starting point.
- Computer science background (degree not required, but you’ll have to make up for it with a lot of self learning)
- Fundamentals of programming (unless heavily invested in test automation, see above)
- Application design and architecture
- Source control (see below, and our Git guide)
- Automated build and deploy via CI/CD
- Unit testing
Learn Software Development Fundamentals
We hope it’s obvious that you’ll need to learn how to program if you want to be a software developer. As mentioned before, there testers may have been exposed to the fundamentals of web APIs through use of Postman and the basics of Java development while building out automated test scenarios. But it’s unlikely that either of those experiences were comprehensive enough to allow you to jump around this step.
If you’re already working at a tech firm as a QA tester, you might be able to shadow a software developer to pick up on these skills over time. Of course, you’ll need to clear that with your management (see below), make sure that you’re not negatively impacting the developer’s productivity, and keep on track to finish out your own work.
Programming fundamentals. If there’s anything you take away from this guide, it’s this one. You can’t be a software developer if you don’t at least know the fundamentals of programming. If you’re starting from the bottom, start with some videos on KhanAcademy. Brush up on some essential knowledge. If you’re already a little familiar with programming or you’re graduating from the basics, check out Coursera and Pluralsight for wide range of broad and focused online classes that work with your schedule.
Requirements Analysis. All features and bug fixes have requirements. Someone needs something to be created. They describe what they want, and that becomes the requirement. As a software developer, you’ll need to be involved in understanding the requirements and helping translate them into something that can be understood and implemented by technical teams (and yourself).
Software Development Lifecycle (SDLC). As a QA tester, you might be familiar with standard SDLC processes. But you’ve probably only been involved in the “test” part of the “develop and test” phase. You’ll need to understand how to translate requirements (see above), how to design an application feature (see next bullet), how to assist in the delivery of the feature, how to document your changes, and how to assist in evaluation and analyzing the feature in the wild.
Architecture & Design. This is a hard one to learn on your own and most likely will require exposure to the process and experience with others who are more knowledgeable. When working on your personal projects, instead of jumping right to code, try drawing out what you think the system will look like using a basic diagram. If that’s giving you trouble, you should at least write bullet points and notes of your overall design. List out functions you might need. What classes and objects will you use? How will they interact with each other? Do some brainstorming.
Unit Testing. As a QA tester, you love testing, right? Well, maybe not which is why you’re reading this guide to switch to software development. But you can’t escape it in this case. Think of unit testing as the process of testing isolated units of work. For example, you might have a function that adds two numbers together. A unit test which tests this function should input something like 2 and 2 and receive 4 as an output. If the function doesn’t work as expected, the unit test will fail and stop the build process.
Learn Source Control
Unless a tester belonged to a very progressive QA testing team, it’s most likely that he or she would not have been exposed to source control. Automated tests are likely stored and attached to Jira tickets without any versioning or branching strategies. Avoiding source control and collaborative distributed repositories like Bitbucket and GitHub isn’t an option for software developers.
So that means anyone serious about switching to a software development career will need to learn the most popular source control tool: Git.
Git works natively on Windows, Mac, and Linux. When using Windows, you’ll most likely be using the tools included in the Git for Windows initiative (Git BASH, Git GUI, and Git Shell Integration). Mac and Linux have native command line support.
To get started, go download Git by finding the link for your operating system.
- If you’re on Windows, use the Windows download link.
- If you’re on Mac, use the Mac download link. This link seems to redirect to Sourceforge.
- If you’re on Linux, use your distribution’s package management commands as seen on the Linux download link.
For example, with Ubuntu, you’d use:
apt install git. You might need to augment this with
sudo if your setup requires root to install software.
Note that Git is, by default, purely a command line tool. If you’re interested in using a user interface to manage your Git repositories, check out our tooling guide for some suggestions or our massive Visual Studio + Git guide. You can also check out the official Git GUI page.
Build a Public Portfolio
This step is most important if you’re on the job hunt and want to start a new company immediately as a software developer. Since your résumé will be full of your testing work at previous jobs, you’ll need some evidence that you’re serious about software development and have practical experience to back it up. Your personal projects won’t be industry game changers, but being able to discuss what you’ve worked on in your free time and show evidence of that work goes a long way to impressing your interviewers.
Don’t overlook this step. Just like an artist is expected to bring a sampling of his work, so too should you have your personal projects at the ready in case an interviewer asks about it. They may not, but it doesn’t hurt to have them ready. Plus, you get some exposure to development communities and just might find others that think like you.
OK, but how? Bitbucket and GitHub! Let’s focus on GitHub since we’ve previously written an ultimate guide to using it for your public portfolio. GitHub allows you to make your source code publicly available to the world. Not only is it visible, but you can provide access to others in the community (friends, family, and strangers) with the ability to contribute to your code. You may not think that public contribution to your projects is important for a portfolio, but interviewers sometimes like to see how you approach team-based problems rather than isolated projects.
It’s easy to get started. Better, it’s free. Start with the free plan since it gives you everything you need to be successful. Make sure all your code is marked as public and available via a permissive license.
Just remember that both Bitbucket and GitHub require you to know how to use Git. Make sure to read the section above regarding Learning Source Control so that you’re not caught off guard after creating your accounts.
Make Your Career Intentions Clear
The easiest path to switching from QA to software development is by getting hired into a company as a QA tester (that’s your background, after all) and then branching out into software development within that company by working through your managers, coworkers, and teams.
But that’s not your only option. Obviously, you can interview with other companies in an attempt to start new as a software developer. Just be aware that résumé will be full of job experiences in which you were primarily a QA tester. That’s not necessarily a negative in this scenario. You’ll be able to discuss standard SDLC processes, talk about how you worked with product owners and project managers, discuss business value in product delivery, and discuss tools that you used to create automated test scenarios.
Here’s how you can approach both entry points.
Already in a Company
If you’re already in a tech firm, then you have a bit of an advantage. You’ll have an opportunity to show others that you know what you’re doing while receiving a salary. This will allow you to concentrate on your skills to transition into a new role without having to worry about impressing various company interviewers.
Talk with your manager. Don’t do anything in secret. That’s not to say you need to tell everyone exactly which skills you are learning in your free time, but you shouldn’t try to go around your manager to transfer roles. In some companies, your current manager will probably need to sign off on moving you to other teams. That’s not always the case, but to be safe, it’s best to discuss your intentions with him or her. Plus, your manager might be able to give you some advice and point you to the right people that can help with your transfer. If your manager isn’t supportive, don’t get discouraged. You can either be more assertive in your desires or look for jobs at other companies.
Establish a path. Don’t do anything without a plan. You can obviously experiment with software development in any way that you want, but it helps to think about your goals, break them down into achievable items, establish some deadlines for achievement, and lay it all out in writing. This helps you with accountability and to stay on track. Talk your plan through with your manager and your team to make sure that your current projects aren’t negatively impacted.
Looking for New Opportunities
Maybe you’re in a company but your manager doesn’t like the idea of losing you as a tester, or your company doesn’t have any open software developer roles. There are companies out there that specialize in only testing software by maintaining partnerships with tech firms, so it isn’t a far-fetched scenario to have no opportunities within. Either way, you’re going to have to look outside your current company to find any opportunities.
Let interviewers know. Whether you’re interviewing for a QA position with hopes of eventually transitioning to software development or trying to go straight to software development as a new hire, you’ll need to let your interviewers know your background and future intentions. You don’t want to surprise your new employers by asking to move to a software developer role after working in your new position for one month without ever discussing that as part of the hiring terms. Honestly, hiring someone with both QA and software development experience is a huge win for any company, so there’s nothing wrong with bringing your intentions to light.
Brag about yourself. Interviews aren’t the time to be shy. This is especially true if your background is slightly different from the job in which you’re hoping to be placed. You need to convince the interviewers that you’re capable of handling whatever it is you’re pitching to them. Talk about your personal projects. Talk about your GitHub portfolio (you did create one, right?). Emphasize the overlap in skills that you have as a QA tester and how those can be applied going forward as a software developer.