Software engineers helped create the webpage you’re reading right now, the web browser you launched to do so, the operating system that allowed it and the content management system that hosts it. Each one of those software applications — and the entirety of the broader digital environment, really — has undergone design, testing, maintenance, installation, configuration and programming. In a word, engineering.
Much like the job itself, the path to becoming a software engineer isn’t always straightforward. To help you get up to speed on how to become a software engineer, we’ll cover the basics of the role, its perks, salary details, experience requirements and expert tips on how to become a software engineer and thrive within the industry.
What Do Software Engineers Do?
Software engineers work with various programming languages to develop and test software before its release. Depending on the sector, software engineers can create computer hardware and software systems, mobile applications, websites, gaming systems and more.
To develop these technologies, software engineers collaborate with QA analysts, software developers and other relevant personnel. They also monitor software after its release, making software patches, implementing updates and performing other maintenance tasks.
Why Become a Software Engineer?
While the job itself offers exciting possibilities, there are a range of reasons for why professionals go on to become software engineers.
Challenging Tasks
Software engineers often deal with complex products, requiring advanced problem-solving skills to create, maintain and fix software.
Lifelong Learning
The field of software engineering is an ever-changing landscape, adopting the latest techniques and technologies. Successful professionals in this role are willing to be lifelong learners, embracing new skills and experiences. As a result, software engineers can stay engaged throughout their careers.
Flexible Work Situations
Many organizations don’t require software engineers to come into the office. Remote software development and engineering teams can then gain much more flexibility in terms of their schedules and where they work.
Promising Job Outlook
The number of software developers, QA analysts and testers is expected to rise by 25 percent between 2021 and 2031. With similar roles increasing in value, aspiring software engineers can look forward to plenty of opportunities to break into the industry over the next decade.
Social Impact
Software engineering roles often give professionals opportunities to do meaningful work. Reinforcing cybersecurity platforms, defending patients’ health information and protecting financial transactions are just a few areas where software engineers can leave an impact.
Software Engineer Salaries
Typically, software engineers can expect six-figure salaries at different stages in their careers. The average base salary for software engineers in the U.S. is $141,230. This number grows to $150,790 once engineers advance in their careers to become senior software engineers.
How Long Does It Take to Become a Software Engineer?
Software engineers typically complete a four-year degree in a relevant field like engineering, data analytics and computer science. Depending on the type of role, some engineers may also need to earn certifications to become more qualified candidates. Some software engineering roles are entry-level and accessible to professionals directly out of college. However, many software engineers accumulate a year of prior experience in entry-level roles like technical support specialist, junior software engineer and software developer.
How to Become a Software Engineer
- Plan your career path.
- Pursue a technical degree or software engineering courses.
- Practice your coding skills.
- Get certified.
- Build a portfolio that showcases samples of your skills.
- Apply to jobs.
To provide a more in-depth overview of the software engineer’s journey, we spoke with four software engineers, each of whom has experience at some of the biggest firms in tech, about how they sharpened their skills and advanced in the fast-changing industry.
We spoke with Cassidy Williams of CodePen; Victor Ionescu, a Facebook and Google veteran, who did data infrastructure and core services for Airbnb; Max Heinritz, a former Flexport software engineer who previously worked on Google Earth Engine; and Samara Trilling, a former software engineer for Sidewalk Labs, the ultra-ambitious smart-city development wing of Google parent company Alphabet.
How Do You Get Into Software Engineering?
Cassidy Williams
Senior Software Engineer at CodePen
I first got involved with code when I was a teenager. I was very self-taught. I built a website for my high school biology class. From there, I decided I wanted to get a job doing it and realized I could. So I majored in computer science and from there went into the industry.
Victor Ionescu
Software Engineer at Airbnb
I started coding when I was 12, for a computer science class. As soon as I got into it, I was selected by my teacher to compete in algorithmics. So I competed for a few years through middle and high school. It was just something I was good at, so naturally I did computer science in college. It wasn’t meant to be a high-paying job or anything fancy. I just started because I was good at it, and everything follows from there.
Max Heinritz
Software Engineer at Flexport
My first time coding was on a TI-83 Plus calculator in seventh-grade math class. I built a few games for fun and tools for homework to answer questions like, “A ball is thrown one meter-per-second at a 60-degree angle. Does it clear a two-meter-tall fence 50 meters away?” Then I took some programming classes in high school, and my interest kept evolving from there. No one in my family programmed or used Linux or anything like that. So I just picked up bits and pieces along the way when I could.
Samara Trilling
Software Engineer at Sidewalk Labs
I’m from the Bay Area and grew up around a lot of people from tech, but I never thought of myself as going into tech. I was much more excited about politics. I went to school at Columbia [University, in New York] and took my first computer science class kind of on a whim my freshman year.
It was a lot of collaboration with people that I really liked. So I kind of found my people in the computer science department in college. I knew I wanted to gather as many skills as I could in order to do something positive in the world.
I got my first internship when I was a sophomore. A friend really encouraged me to apply to some opportunities at Google. I went back to intern there, then started full time after graduation, working on Google Fiber — specifically on how we could give better Internet service to people who previously hadn’t had it.
Are Programming Certifications Worth It?
Williams: It depends on the company you’re speaking to. Some companies are like, “Oh, well, they did this cool project on GitHub and that’s all I need to see,” or, “They have a bunch of cool Pens on CodePen and that’s all I need to see.” But some companies that want to know more about your academic background or how you learn, they actually care about a degree or some kind of good certificate — though I do think that the industry is trending towards not caring about that as much.
Ionescu: I can tell you that in the industry, if someone has a lot of open source projects, that can serve as validation, because if a lot of people are using your code, then it must be working, right? And if you actually wrote it, then you probably are a pretty decent programmer. But if you don’t have that, I definitely don’t think that’s a drawback.
Because a lot of people working on complicated things — like, for example, infrastructure people working on databases, or people working at Google or another company that doesn’t really have a huge open source culture — just go in and upload your code. But yes, if you have it and it’s used, in the programming community it does say something. There’s a sample of your work. That’s good in every industry.
Heinritz: I don’t think I’ve ever given consideration to a candidate’s programming certification during the hiring process. GitHub repos might be useful in three ways: getting past the initial recruiter screen to get a phone screen, having some interesting projects to talk about during your interviews or nudging your application through hiring committee borderline cases.
The number one thing people underinvest in is practicing the coding interview.
Trilling: I do think there’s a lot of value in contributing to open-source work and code online in general. It helps build confidence and it gives you a place to track your own learning. But employers want to have in-person experience [demonstration] as well.
Those more experiential interviews tend to do well in seeing how somebody collaborates, how they explain their vision, which I think is more important than whether or not they know a particular [programming] language. Because a lot of people can pick up languages pretty quickly. It’s really much more about your ability to build the right thing, work with other people and be collaborative.
What Soft Skills Does a Software Engineer Need to Have?
Williams: I think it’s less about soft skills and more about core skills. If you’re able to communicate, able to write — honestly, communication is what it all boils down to. That’s so key for being successful in the industry. You need to be able to write good documentation. You need to be able to voice your opinions in meetings. You need to be able to communicate to the team, so that if you leave for whatever reason or need to pass off your code, people can take it and run with it and not be entirely dependent on tribal knowledge. That is the top skill to have, and it’s a core skill that everyone needs.
Ionescu: It’s really hard to get stuff done by yourself. And I’ve noticed particularly in companies that are slightly younger, it’s best to have some program management skills: getting people organized, trying to make them keep you up to date. Everything that requires group effort in terms of execution could benefit from synergy, right? You have to create synergy with coworkers so that everyone knows what each other’s working on, and how far along they are.
Top Soft Skills Every Software Engineer Should Have
- Written and verbal communication
- Ability to be a team player
- Multitasking
- Curiosity
- Ability to meet deadlines
Heinritz: Written communication is the single most important non-coding skill in my experience. Verbal communication is important, too, but written communication scales more broadly. Writing design docs, blog posts, onboarding guides — these artifacts massively increase your leverage.
Trilling: Soft skills are engineering skills. I don’t know any engineer who’s successful without being a good communicator. And I don’t know an engineer who wouldn’t be a better engineer if they weren’t a better communicator. So learning how to explain and teach well — not just to make yourself feel smarter, but to really give the other person the chance to learn and ask questions. That’s the way really great engineering organizations grow.
Are Coding Bootcamps Worth It?
Williams: Bootcamps are a viable option for sure. I don’t know if I would say on top of an existing technical degree, because so often they’ll be teaching things you might already know or be capable of learning a lot faster. But for someone making a career change. I will say that in doing a bootcamp, you learn a lot in a short period of time, and it’s very specific information. If you go that route, you should pay attention in class and do all the projects. But also be ready to learn more beyond the bootcamp, go a little bit deeper.
Ionescu: I think bootcamps are good for people who have what it takes, but they might not be a great indicator for people who could have what it takes but need more time.
So they’re good and bad. Are they worth the money? Sure, if you want to get a job out of it, I think that’s a good place to start. If you have a bit more time, I would recommend taking it easy and maybe getting a computer science degree. Or try to work on something in your free time without having expectations of income from it.
Programming Languages Software Engineers Need to Know
- Go
- Python
- Java
- HTML
- Dart
- Swift
- MATLAB
- JavaScript
Heinritz: I can only provide anecdotes. One of my college friends studied economics, worked at a tech-based consulting company, went through a bootcamp two years after graduating and ended up working as an engineer at Google. So for him, it was definitely worthwhile.
Trilling: Just like a lot of other educational programs, a great bootcamp is fantastic and a not-as-great bootcamp is not so useful.
But even in my career, maybe only half the people I’ve worked with have computer science degrees. A lot of people studied a different part of engineering or philosophy or got a minor in history. And I think that actually makes people much better engineers overall, when you don’t have such a myopic view of the field and you understand why you’re learning these skills. So I do think bootcamps can be really valuable, especially if you’re somebody who likes to learn socially, to make sure you have a cohort of people who are learning alongside you. Even at Google, I think they’re working harder at recognizing that there’s all this tech talent out there that doesn’t look like somebody who went to MIT and got a computer science degree.
What Questions Would You Ask a Prospective Employer in an Interview?
Williams: One thing I always ask employers in interviews is, “What’s more important: the employees, the product or the customers?” There’s no real wrong answer, but it’s a really good indicator of the company’s priorities.
Ionescu: If I were to switch jobs right now, I [would] want to work on something that really teaches me stuff. So I wouldn’t want to be too comfortable in my job. I’d ask about opportunities in terms of growth, because the best way to learn, particularly as a senior engineer, is to get into areas that are not particularly known. So I ask about opportunities for growth and open problems that the company has.
Heinritz: I would first identify what I’m optimizing for in my job search, and then ask questions that would help me evaluate whether this company could help me get there. In my most recent search, I was optimizing for: growth, real-world impact, day-to-day flow, full-stack roles and open source frameworks. So I asked questions like: “I like to work on maps. What are you doing with maps?” “Why are you excited about Flexport’s future?” “How much time did you spend coding yesterday?” “What tools have you used this week?” More specific is better.
Trilling: One important question is, “If your company were really, really successful, who would that benefit and who would that not benefit?” It’s a question that maybe we wouldn’t have necessarily asked five years ago that now definitely feels of the utmost importance. And the question of, if someone were to take your test model to the extreme, what would be the consequences in the world for that model? Is the way you’re creating value fundamentally extractive or fundamentally generative?