Ever wondered who’s behind the apps you use every day, like Instagram, Spotify, or Netflix? That’s the work of Software Engineers!
It’s an incredibly rewarding career where you get to create and innovate with technology every single day and get paid very well to do it.
Thinking of taking this up for a career? Well, good news, because in this guide, I’ll pull back the curtains for you and show you exactly what it takes to become a Software Engineer and answer important questions like:
I’ll also cover exactly what a Software Engineer does, the skills required in the role, and how to get the experience you need to land a job.
So that by the end of this guide, you can get started right away, and have a step-by-step career path to follow.
Important: This post is LONG with a lot of resources and a roadmap to both learn Software Engineering and then get hired. You might want to bookmark it 😉
I cover this in a lot more detail below as well as some further options and specific income numbers etc. But for those who just want a quick scan, here's the 7-step roadmap to becoming a Software Engineer:
Easy right?
Now let's get into it in more detail, and I'll share all the resources you need to smash this at every step. First of all of course, let's answer the elephant in the room...
Hi, I'm Andrei Neagoie, and I’m the Founder and an instructor here at Zero To Mastery. I’ve taught more than 1,000,000 students worldwide how to get into tech, many of whom now work for world-class companies like Apple, Google, Amazon, Tesla, IBM, Meta, Shopify, and many more.
Before that, I worked as a Senior Software Developer in Silicon Valley and Toronto for years, working with Fortune 500 companies and tech startups.
Fun fact: I’m also self-taught and started my career working in the travel industry with absolutely zero experience in tech or programming. So I know what it’s like and what it takes to switch to a career in tech.
With that in mind, I’ll make sure to break this guide down into simple steps so you can take action ASAP, and not have any lingering questions.
So let’s get into it.
A Software Engineer is someone who designs, develops, tests, and maintains software applications and systems.
Sometimes, software can be both an application and a system.
For example
A self-checkout system at a supermarket is both an application and a system.
It acts as a user-facing application for customers to scan and pay for their items, providing an interactive interface.
Simultaneously, it handles backend tasks such as updating inventory levels, processing transactions securely, and communicating with other systems like inventory management and ERP (Enterprise Resource Planning) systems.
Now, don’t worry if that seems like a lot, as not every Software Engineer works on all of this (at least not at first anyway). They either stick to one area of focus or expand their skills over time.
Here are the most popular types of Software Engineers:
For example
If we look at the same self-checkout machine again, we can see how different Software Engineers might be used.
Starting with front-end development is common, and then engineers often expand their skills to full-stack and later specialize based on their interests and career goals.
This is why when we break down the steps later on how to become a Software Engineer, I’ll show you how to become a Front-End Software Engineer first so you can get hired ASAP and get paid.
Then in the next steps, I’ll walk you through what to do to move into full-stack and any of these other more niched-down roles and earn even more money.
Before then, let me help answer a common question that most people get confused about.
A web developer focuses on building websites and web applications using tools like HTML, CSS, and JavaScript, while a software engineer works on a wider range of software, including web, mobile, and desktop applications, using a variety of programming languages.
Since both roles often use similar coding languages like JavaScript or Python (and then a few variations on the backend), it’s common to get confused over the diferences or wonder which path to choose.
Basically, if you learn one, then you have a bulk of the skills to do the other role, so you can always change if you want to.
Ultimately though, its just a choice:
Choose based on what excites you most. And you can always pivot later on.
Yep!
The global Software Engineering market size was valued at approximately $142.1 billion in 2023 and is expected to grow at a compound annual growth rate (CAGR) of 6.5%, reaching $255 billion by 2032!
Just a cool $100 billion difference in the next decade.
This is partly driven by the increasing adoption of cloud-based services, digital transformation initiatives across industries, and the rising demand for automation and integrated solutions.
As for jobs? At the time of writing, there are currently 356,881 Software Engineering jobs available in the US right now on ZipRecruiter.
So a lot of opportunities right now, and even more over the next 10 years. Oh, and did I mention that the pay is fantastic?
If we look at the average salary of those 356,000 jobs on offer, it works out to around $147,524 per year.
However, just be aware that this can vary based on location and experience. Jobs at companies in high-tech areas such as Silicon Valley can pay a lot more.
For example
Here we can see a Senior Software Engineering position that’s available at Apple:
$296,000 a year! Not bad at all.
Also, be aware that some specializations, as well as full-stack and senior roles, can all pay substantially more - regardless of where you are in the country.
Nope! I cover it more in this guide here, but let me simplify.
We’ve already seen that start to happen.
This doesn't mean you can learn these tools and nothing else thought. The tools themselves help you get things done quicker, but they are not perfect. You still need to learn the specific skills (such as coding) to use them effectively.
Not only that, but you also need to learn how to use the AI tools better so that you can leverage them even more effectively. This is why we recommend you learn to use them alongside learning to code - and that’s why it’s in our roadmap later in the guide.
Nope! Some big tech companies may ask for a degree, but most of them don’t care. All they care about is that you can do the job, and have a portfolio of work to prove it.
For example
Here’s another Software Engineering job at Apple that's open right now, for a front-end position.
Bear in mind that this is a job post for one of the biggest tech companies in the world, with some of the most strict hiring requirements, and they don’t care if you have a degree.
Sidenote: Also, they don’t really care if you have X years of experience either. It’s here more as a placeholder. They just want people with the same skill level as what a 4+ year Software Engineer might have. If you can prove you have those skills, then you’ll get hired.
This is why we’ve had brand new engineers get hired at places like Tesla or Google - because their course projects and portfolios are at such a high level.
Speaking of skills - let’s take a look at what else you’ll need to know.
Becoming a Software Engineer requires a mix of technical skills, problem-solving abilities, and soft skills.
I’ll go into more detail in a second, when we look at the career path steps, but here’s a rough overview:
Notice though that some of those skills vary depending on where you want to focus. The career path to the front-end is quite short.
Speaking of time frames. Let’s break down how long it takes to learn all this.
It depends on how far you want to dive into the career.
I’ll break down the exact time frames during the steps in a second, but if you want to follow the path I’m about to share, then you would be looking at around:
This is based on the average completion time of our students, when completing the training that we have in each of these areas. Some people do it much quicker. Others take longer based on the time they can dedicate each week.
So 6 months to learn, 1-2 months to get hired, and 6-9 months more to specialize further and take on more senior roles for even more money.
However, there's one thing I want to just clear up real quick...
Like any job - it all has its difficulties.
The actual process to get into tech is fairly easy. You learn the right things, apply, and get the role. I truly believe anyone with the right mindset and roadmap can achieve this if they put in the effort.
However, unlike some other careers, there are differences in tech. It’s a continuous learning experience, as new technology and frameworks are released. This can be a pro and a con. You’ll never be bored, but you also have to keep learning to keep progressing.
It’s also probably not exactly how you might picture it in your head. It’s rare to write code from scratch - simply because it is easier to take older code and reuse it. Likewise, some people are resistant to change (like any career).
Aldo goes into his own experience as a Software Engineer in this article here, so definitely check that out.
What I will say is this: It’s not a perfect career. No job is. But if you can work 12 hours in a factory or wait tables, then you can do this also, for much higher pay. It’s just different strengths to work on.
And like any job - it all gets easier the more experience you get. I just want you to come into it with your eyes open, so you’re prepared to put in the work.
You go this! Now let’s walk you through how to get there.
This process basically breaks down into 3 core parts:
As we go through each, I’ll explain why they’re important, how long they take to learn, and how to learn them.
This first step is completely optional but highly recommended, because here’s the thing:
If you can learn both of these, then not only will you learn faster for every new skill moving forward, but you can also implement systems to help you code easier.
Estimated Time Required For This Step: 5 days.
It seems insane to say, but schools are not great at teaching people.
They focus on memorization techniques, which are proven not to be that effective long term. The thing is, there are multiple different learning techniques that you can use that make all of your future learning efforts far more effective. This means that if you know the techniques, you can understand faster and more efficiently, so less back and forth.
I know it might feel like a step backward or even a detour, but think about it like this:
Bear in mind that there are a lot of different languages and frameworks that you need to learn if you want to go full-stack, specialize, or move into more senior roles.
So why not learn how to cut down on that time, improve your comprehension, and pick up skills faster and easier first? The time and energy savings will seriously compound as you go through the rest of the content you need to learn.
Learn how to learn more efficiently here.
Estimated Time Required For This Step: 24 days.
More and more companies are asking for experience with generative AI tools like ChatGPT in their job interviews nowadays. The reason for this is that if you can use these effectively, you can work far more effectively than the average person.
This makes you an incredibly desirable hire vs your peers. Not only that, but it can make your life far easier also.
For example
We did a survey of AI tools and their usage in the tech industry and found that some people were being assisted with 30-80% of their work with these tools.
Again, this is a bonus step but if you learn this first, you can then apply it to every language or task you have moving forward. Once you pick up these skills, it’s insane how much more productive you can be.
You still need to learn to code and how to do the job, but once you understand your role, you can then start to streamline and apply these tools correctly.
Learn Prompt Engineering & how to work with LLMs here.
Estimated Time Required For This Step: 90 days.
There are a few different language options that you can use as a Software Engineer, such as Python, Java, C++, or JavaScript.
However, because we’re going to focus on becoming a Front-End Engineer and hired ASAP, we are going to learn JavaScript.
There are a few reasons for this:
My bootcamp course above will also teach you HTML, CSS, React, as well as some Node.js and SQL which is what you might use on the backend, so it’s the perfect starting point for your coding journey.
Sidenote: Although the course is called Web Development, there is a large overlap between Front-End Web Development and Front-End Software Engineering. Hence why if you learn the skills in this, you can work in either role.
Estimated Time Required For This Step: 90 days.
Remember how I said that tech companies don’t care if you have a degree? The reason for this is twofold:
I’ve covered this in more detail in this guide here, but basically, they interview in stages, with observed technical testing to prove you can actually do what they are hiring for.
It can vary from company to company, but the tech interview process looks like this:
So as you can see, the hiring process is quite different from what you’ve done before for other jobs. However, it does mean you can skip 4 years of college and $100,000+ in school fees.
The only real stalling point here is the Data Structures and Algorithms, which is why you need to learn these next before you apply for Software Engineering jobs.
Here are a few more reasons why you shouldn't skip this step (but a lot of people do):
You can learn everything you need to know about Data Structures and Algorithms here.
The courses I've listed so far are a great starting point to ease you into how to build projects but once you've done the projects from these courses, you HAVE to build on your own.
It won't be comfortable. It'll feel like it takes forever. It'll seem like you don't know anything. Those are all the right feelings to have. That means you're learning. The key is pushing through that feeling of discomfort.
I'll be honest with you though, 80%+ of people that reach this stage don't push through. But if you do, the rewards are great... you can land a rewarding, high-paying career. If it was so easy, it wouldn't be so high paying 🙂
So what projects should you make?
Well, a good rule of thumb is to try out some additional projects you find online first.
(Filter down to Development > Software Engineering > projects to find these on our course pages).
Then after that, try to create some of your own.
Ask yourself:
By this point, you have the skills to do all this. But the action of starting your own projects will build so much more confidence, while also wowing prospective employers.
It's almost time to apply for some Front-End Software Engineering jobs.
However, before you can apply, you want to make the best first impression that you can, and that involves a few things:
The good news?
Fellow ZTM instructor Dan Schifano goes through all of this in detail in his course on personal branding, including how to set up a professional portfolio that stands out amongst your peers. (As well as some other great tips to help you stand out even further).
Estimated Time Required For This Step: 10 days.
Take that course and follow the steps to build your portfolio and LinkedIn profile here.
Alright, now it's time to apply for jobs and get hired!
Trust me, you'll never feel 100% ready but if you've followed along so far, you are ready to start working in the real-world. If you're anxious then understand this: The simple truth is that you don't need to know every detail about everything to get hired.
In fact, you'll pick up a lot of skills and experience simply by doing the job. It's about having the requirements to get started, and you already have that so start applying already!
I shared this guide earlier on applying for tech roles, but here are a few extra tips:
In addition to the technical know-how that you’ve built up through courses and certifications, interviewers will be evaluating your soft skills.
Software Engineers do a lot of troubleshooting and problem-solving during their normal work, so be prepared to talk through a situation or two where you saved the day by solving a complex or business-critical problem.
If you don’t have work-related examples, share stories from school or community projects.
Like any other kind of interview, it’s always good to:
Do all this, and you’ll smash the interview and get the job.
Estimated Time Required For This Step: Usually somewhere between 1-6 months given all the potential factors, multiple applications, time to hear back, etc.
By this point, you should have already been hired as a Front-End Engineer - congratulations!
However, you can make a lot more money and open up more job opportunities if you carry on learning, so let’s cover what you need to become full-stack, and then further niche down.
You don’t need to do this right away. In fact, it's better to focus a majority of your energy on getting hired so that you can start learning on the job by working on real-world projects and problems.
However, this will give you a sense of what you’ll need to do when you decide to take the next step in your career.
Estimated Time Required For This Step: 45 days
SQL (Structured Query Language) is essential for Back-end Software Engineering.
Any application or software that has products, account numbers, or customer information will use this. SQL allows you to interact with databases, retrieve and manipulate data and is foundational for any backend or full-stack developer.
Estimated Time Required For This Step: 45 days
Advanced algorithmic questions and system design are often required for senior roles or interviews at big tech companies, such as those in the FAANG (Facebook/Meta, Amazon, Apple, Netflix, Google) group or the Magnificent 7 (Microsoft, Amazon, Meta, Apple, Google, Nvidia, Tesla).
Mastering these concepts will not only prepare you for high-level interviews and help you get hired at these companies, but it will also improve your problem-solving skills and enable you to write more efficient, scalable code.
Learn the more advanced Data Structure and Algorithm principles here, and get hired at FAANG.
Estimated Time Required For This Step: 40 days
System design involves understanding how different components of an application interact, how to handle large volumes of data, and how to ensure reliability and performance, and is an essential skill for advancing to senior or full-stack positions.
For full-stack positions, understanding system design is crucial. This knowledge allows you to architect large-scale applications, ensuring they are robust, scalable, and maintainable.
By this point you’re ready to apply for full-stack positions. However, some of them might want specific niche specialization, depending on where you apply.
Depending on where you want to focus, the skills can vary, but just so you have a rough idea.
Estimated Time Required For This Step: 45 days
There are a few different languages and frameworks you might want to pick up, such as Vue.js, Angular, or React. Each of these is widely used in the industry and can significantly enhance your web development skills.
Click any of the links above to check them out.
If you’re not sure which to learn, React is always a good choice. Alternatively, take a look at any company you want to work for and see what languages and frameworks they are using.
Each of these takes around the same amount of time to learn, but better to learn the one you want for the specific company you want to be hired at.
Estimated Time Required For This Step: 40 days
When it comes to mobile, you’ll be building for iOS or Android, and there are a couple of options for what you can learn:
React Native is a good choice if you plan to build apps for both platforms without having to learn both Swift and Kotlin. It’s also used by a lot of companies.
Estimated Time Required For This Step: 73 days (All 3 courses combined)
DevOps focuses on automating and streamlining the software development process, ensuring continuous integration and delivery. By specializing in DevOps, you’ll be able to handle the deployment and management of applications, ensuring they run smoothly and efficiently.
Here are the 3 key skills you’ll need:
1 Learn Linux: Mastery of Linux operating systems, command-line tools, and system administration is foundational for DevOps roles 2. Learn Terraform: Terraform is essential for Infrastructure as Code (IaC), enabling you to manage cloud resources efficiently 3. Learn BASH: Proficiency in BASH scripting allows you to automate tasks and manage configurations effectively
You’ll need to learn all three of these to get a good understanding and move into DevOps.
So there you have it - the entire roadmap to becoming a Software Engineer within the next 6 months, or sooner, as well as a path to continue your career after that.
Software Engineering is a great career to get into right now, with high demand (over 356,00 jobs in the US alone!), a great salary, and interesting topics to learn.
It’s fairly easy to pick up as a beginner and has a large overlap with Web Development- meaning you’ll open up even more opportunities if needed - and that’s just by the end of Step #2!
All you have to do now is simply start learning and follow the path. 6 months will pass either way. But your career could look very different if you set your mind to it.
We cover almost all of the languages and courses mentioned in this list inside of the Zero To Mastery Academy:
(The only things we’re missing are Swift and Kotlin).
This means that if you become a member, then you have access to all of these courses right away and will have everything you need in one place.
Plus, as part of your membership, you'll get to join me and 1,000s of other people (some who are alumni mentors and others who are taking the same courses that you will be) in the ZTM Discord.
Ask questions, help others, or just network with other Software Engineers, students, and tech professionals.
Make today the day you take a chance on YOU. There's no reason why you couldn't be applying for Software Engineering jobs just 6 months from now.
So what are you waiting for 😀? Come join me and get started on becoming a Software Engineer today!