Software engineering
Table of Contents
- 1 Why might software engineering be high impact?
- 2 What does a software engineering career involve?
- 3 Reasons not to go into software engineering
- 4 How much do software engineers earn?
- 5 Software engineering job satisfaction
- 6 Examples of people pursuing this path
- 7 How to predict your fit in advance
- 8 How to enter this field
- 9 Want one-on-one advice on pursuing this path?
- 10 Learn more
- 11 Find a job in this path
On December 31, 2021, the most valuable company on Earth was Apple, worth around $3 trillion. After that came Microsoft, at $2.5 trillion, then Google (officially Alphabet) at $1.9 trillion, then Amazon at $1.5 trillion.
On December 31, 2020, the four most valuable companies were: Apple, Microsoft, Amazon, and Google.
On December 31, 2019, the four most valuable companies were: Apple, Microsoft, Google, and Amazon.
And on December 31, 2018, the four most valuable companies were: Microsoft, Apple, Amazon, and Google.
If you’re anything like me, you’re starting to spot a pattern here.
Revenue in software has grown from $400 billion in 2016 to $500 billion in 2021, and is projected to reach $800 billion by 2026.
Software has an increasing and overwhelming importance in our economy — and everything else in our society. High demand and low supply makes software engineering well-paid, and often enjoyable.
But we also think that, if you’re trying to make the world a better place, software engineering could be a particularly good way to help.
In a nutshell:
Software engineering could be a great option for having a direct impact on the world’s most pressing problems. If you have good analytical skills (even if you have a humanities background), you might consider testing it. Basic programming skills can be easy to learn and extremely useful even if you decide not to go into software engineering, which means trying this out could be particularly low cost.
Pros
- Gain a flexible skill set.
- Make a significant direct impact, either by working on AI safety, or in otherwise particularly effective organisations.
- Have excellent working conditions, high pay, and good job security.
Cons
- Late-stage earnings are often lower than in many other professional jobs (especially high-paying roles such as quantitative trading), unless you help found a successful startup.
- Likely only a small proportion of exceptional programmers will have a highly significant impact.
- Initially, it could be relatively challenging to gain skills quickly compared to some other jobs, as you need a particular concrete skill set.
Key facts on fit
Willingness to teach yourself, ability to break problems down into logical parts and generate and test hypotheses, willingness to try out many different solutions, high attention to detail, quantitative degree useful but not required.
Sometimes recommended — personal fit dependent
This career will be some people's highest-impact option if their personal fit is especially good.
Review status
Based on an in-depth investigation
This review owes a lot to helpful discussions with (and comments from) Andy Jones, Ozzie Gooen, Jeff Kaufman, Sasha Cooper, Ben Kuhn, Nova DasSarma, Kamal Ndousse, Ethan Alley, Ben West, Ben Mann, Tom Conerly, Zac Hatfield-Dodds, and George McGowan. Special thanks go to Roman Duda for our previous review of software engineering, on which this was based.
Why might software engineering be high impact?
Software engineers are in a position to meaningfully contribute directly to solving a wide variety of the world’s most pressing problems.
In particular, there is a shortage of software engineers at the cutting edge of research into AI safety.
We’ve also found that software engineers can contribute greatly to work aiming at preventing pandemics and other global catastrophic biological risks.
Aside from direct work on these crucial problems, while working for startups or larger tech companies you can gain excellent career capital (especially technical skills), and, if you choose, earn and donate substantial amounts to the world’s best charities.
How to do good as a software engineer
Even for skilled engineers who could command high salaries, we think that working directly on a problem will probably be more impactful than earning to give.
Some examples of projects where software engineering is central to their impactful work:
- Ought is an AI research company attempting to build systems that apply machine learning to the task of helping people think.
- The Secure DNA Project is attempting to build a secure global screening system for DNA sequences that could be used to engineer a global pandemic.
- Momentum is a startup building donation pages that encourage recurring donations to the world’s most effective charities.
- Lightcone Infrastructure builds software-based infrastructure for longtermist projects.
- Telis Bioscience is a startup attempting to radically accelerate drug development to mitigate risks from future pandemics.
- Anthropic is a research company working to build reliable, interpretable, and steerable AI systems.
- Redwood Research conducts applied research into the challenge of aligning artificial intelligence.
- Wave is a startup building a way for people in developing countries to access financial services.
Most organisations, even ones that don’t focus on developing large software products, need software engineers to manage computer systems, apps, and websites. For example:
- Effective Altruism Funds provides expert-managed funds to facilitate donors maximising the impact of their donations. They use software engineers to design and maintain their online platform.
- Our World in Data, founded by Max Roser, collects and presents data on many of the world’s most pressing problems. They use software engineers to maintain their website, analyse data, and develop their open-source data visualisation tool.
- Here at 80,000 Hours, our team includes two software engineers working on our website and other technology.
- The Centre for Effective Altruism‘s tech team supports a variety of projects across the effective altruism community, such as the Effective Altruism Forum.
Many people we’ve spoken to at these and other organisations have said that they have real difficulty hiring extremely talented software engineers. Many nonprofits want to hire people who believe in their missions (just as they do with operations staff), which indicates that talented, altruistic-minded software engineers are sorely needed and could do huge amounts of good.
Smaller organisations that don’t focus on engineering often only have one or two software engineers. And because things at small organisations can change rapidly, they need unusually adaptable and flexible people who are able to maintain software with very little help from the wider team.1
It seems likely that, as the community of people working on helping future generations grows, there will be more opportunities for practical software development efforts to help. This means that even if you don’t currently have any experience with programming, it could be valuable to begin developing expertise in software engineering now.
Software engineers can help with AI safety
We’ve argued before that artificial intelligence could have a deeply transformative impact on our society. There are huge opportunities associated with this ongoing transformation, but also extreme risks — potentially even threatening humanity’s survival.
With the rise of machine learning, and the huge success of deep learning models like GPT-3, many experts now think it’s reasonably likely that our current machine learning methods could be used to create transformative artificial intelligence.
This has led to an explosion in empirical AI safety research, where teams work directly with deep neural networks to identify risks and develop frameworks for mitigating them. Examples of organisations working in empirical AI safety research include Redwood Research, DeepMind, OpenAI, and Anthropic.
These organisations are doing research directly with extremely large neural networks, which means each experiment can cost millions of dollars to run. This means that even small improvements to the efficiency of each experiment can be hugely beneficial.
There’s also often overlap between experimental results that will help further AI safety and results that could accelerate the development of unsafe AI, so it’s also important that the results of these experiments are kept secure.
As a result, it’s likely to remain incredibly valuable to have talented engineers working on ensuring that these experiments are as efficient and safe as possible. Experts we spoke to expect this to remain a key bottleneck in AI safety research for many years.
However, there is a serious risk associated with this route: it seems possible for engineers to accidentally increase risks from AI by generally accelerating the technical development of the field. We’re not sure of the more precise contours of this risk (e.g. exactly what kinds of projects you should avoid), but think it’s important to watch out for. That said, there are many more junior non-safety roles out there than roles focused specifically on safety, and experts we’ve spoken to expect that most non-safety projects aren’t likely to be causing harm. If you’re uncertain about taking a job for this reason, our team may be able to help you decide.
Software engineer salaries mean you can earn to give
In general, if you can find a job you can do well, you’ll have a bigger impact working on a problem directly than you would by earning money and donating. However, earning to give can still be a high-impact option, especially if you focus on donating to the most effective projects that could use the extra funds.
If you’re skilled enough to work at top companies, software engineering is a well-paid career. In the US, entry-level software engineer salaries start at around $110,000. Engineers at Microsoft start at $150,000, and engineers at Google start at around $180,000 (including stock and bonuses). If you’re successful, after a few years on the job you could be earning over $500,000 a year.
Pay is generally much lower in other countries. Median salaries in Australia are around 20% lower than salaries in the US (approximately US$80,000), and around 40% lower in the UK, Germany, Canada, and Japan (approximately US$60,000). While much of your earnings as a software engineer come from bonuses and equity, rather than just your salary, these are also lower outside the US.
If you do want to make a positive difference through donating part of your income as a software engineer, you may be able to increase your impact by using donation-matching programmes, which are common at large tech companies (although these are often capped at around US$10,000 per year).
You can read more about salaries at large tech companies below.
It’s important to note that many nonprofit organisations, including those focusing on AI safety, will offer salaries and benefits that compete with those at for-profit firms.
If you work at or found a startup, your earnings will be highly variable. However, the expected value of your earnings — especially as a cofounder — could be extremely high. For this reason, if you’re a particularly good fit, founding a tech startup and donating your earnings could be hugely impactful, as you could earn and donate extraordinary amounts.
What does a software engineering career involve?
Ultimately, the best ways to have an impact with software engineering are probably things like working at an AI company or a particularly effective nonprofit.
To get there, there are two broad paths that you could follow to build software engineering skills (and, given the high salaries in software engineering, you can earn to give along the way):
- Working for a large, stable company (e.g. Microsoft, Google, Amazon)
- Working for a small, fast-growing startup
In general, you will gain broadly transferable skills through either of these options. To gain experience as quickly and effectively as possible, look for roles that offer good management and mentorship opportunities. You should also make sure you gain a really deep understanding of the basics of software development.
Working at a top-tier tech company also holds comparable prestige to working in finance or consulting, and gives you the opportunity to make connections with wealthy and influential people, many of whom are impact-minded and interested in doing good.
You’ll need different skills, and work at different jobs, depending on whether you want to be a front-end, back-end (including machine learning), or full-stack developer.
Working for a large software company
The best way to develop software skills is to practise writing code and building software through years of experience. Direct one-on-one mentorship is extremely valuable when developing skills, and this is often provided through software engineering jobs at large tech companies.
Top firms (e.g. Microsoft, Google, Amazon) are particularly good at providing training to develop particular skill sets, such as management and information security. After talking with people who have experience in training at both tech giants and elsewhere, we think that this internal training is likely the best way to develop knowledge in software engineering (other than on-the-job practice), and will be better than training provided outside of these big tech companies.
However, it’s important to ensure that your role provides you with a variety of experiences: five years of software development experience is not the same as having the same year of experience five times over.
For example, it can be harder to gain full-stack or transferable front-end development experience at a large company. Many large mature products have a large front-end team making many small tweaks and analysing their performance in experiments. This provides good training in experiment design and analysis, but often isn’t very transferable to the sorts of front-end work you’d do at smaller companies or nonprofits, where you’ll often be working in a much smaller team with a focus on developing the experience as a whole rather than running experiments on small changes.
It generally takes around two years for new starters at big tech companies to have the experience they need to independently work on software, and another two years to reach a position where they are able to give advice and support to others in the company and manage projects.
Key career stages at large tech companies
First you’ll need some basic experience. You can get this from a relevant degree; working on a job at a smaller, less prestigious company; or from a bootcamp (see how to enter below for more).
New graduates, and other people with a couple of years of relevant experience, will start out as junior engineers. As a junior engineer, you’d complete small, clearly specified tasks and gain a preliminary understanding of the software development lifecycle. You’ll generally be given lots of guidance and support from more experienced engineers. You usually stay in this role for around three years, gradually expanding your scope. In the US, you’d be paid an entry-level compensation of $100,000 to $200,000 (as of early 2022).
Once you’ve successfully demonstrated that you can work on projects without needing much support, you’ll be given more responsibility. For a couple of years, you’ll work on more complex projects (often in one or two languages in which you’ve specialised), and with less support from others.
After five to eight years2, you’ll generally progress to a senior engineer position. As a senior engineer, you write complex applications and have a deep understanding of the entire software lifecycle. You may lead small teams or projects, and you’ll be expected to provide mentorship and guidance to junior engineers. You can stay in this role for much of your career, though it becomes harder to compete with younger talent as you get older. Compensation in 2022 at this level is around $300,000 to $400,000 in the US.
At this point you may have the skills to leave and become a technical founder or CTO of a startup. This is a highly variable option (since most startups fail), but could be one of the highest expected value ways to earn to give given a chance of wild success.
Progressing past senior engineers, you’re typically responsible for defining as well as doing your job. You may go into management positions, or could become a staff engineer. Staff engineers, while still building software, also set technical direction, provide mentorship, input an engineering perspective to organisational decisions, and do exploratory work. At this level, at top firms in the US, you can earn upwards of $500,000 and sometimes more than $1,000,000 a year.
Software engineering is unusual in that you can have a senior position without having to do management, and many see this as a unique benefit of the career. (To learn more about post-senior roles, we recommend The Staff Engineer’s Path by Tanya Reilly and the StaffEng website.)
Working for a startup as a software engineer
Working for a startup can give you a much broader range of experience, including problem-solving, project management, and other ‘soft’ skills — because unlike in large companies, there is no one else at the organisation to do these things for you. You can gain a strong understanding of the entire development process as well as general software engineering principles.
Startups often have a culture that encourages creative thinking and resourcefulness. This can be particularly good experience for working in small software-focused nonprofits later in your career.
However, the experience of working in small organisations varies wildly. You’ll be less likely to have many very senior experienced engineers around to give you the feedback you need to improve. At very small startups, the technical cofounder may be the only experienced engineer, and they are unlikely to provide the level of mentorship provided at big tech companies (in part because there’s so much else they will need to be doing). That said, we’ve spoken to some people who have had great mentorship at small startups.
You also gain responsibility much faster at a fast-growing startup, as there is a desperate need for employees to take on new projects and gain the skills required. This can make startups a very fertile learning ground, if you can teach yourself what you need to know.
Pay at startups is very variable, as you will likely be paid (in large part) in equity, and so your earnings will be heavily tied to the success of the organisation. However, the expected value of your earnings may be comparable to, and in some cases higher than, earnings at large companies.
Many startups exit by selling to large tech companies. If this happens, you may end up working for a large company anyway.
Take a look at our list of places to find startup roles.
Moving to a direct impact software engineering role
Working in AI safety
If you are looking to work in an engineering role in an AI safety or other research organisation, you will probably want to focus on back-end software development (although there are also front-end roles, particularly those focusing on gathering data from humans on which models can be trained and tested). There are recurring opportunities for software engineers with a range of technical skills (to see examples, take a look at our job board).
If you have the opportunity to choose areas in which you could gain expertise, the experienced engineers we spoke to suggested focusing on:
- Distributed systems
- Numerical systems
- Security
In general, it helps to have expertise in any specific, hard-to-find skill sets.
This work uses a range of programming languages, including Python, Rust, C++ and JavaScript. Functional languages such as Haskell are also common.
We’ve previously written about how to move into a machine learning career for AI safety. We now think it is easier than we previously thought to move into an AI-safety-related software engineering role without explicit machine learning experience.
The Effective Altruism Long-Term Future Fund and the Survival and Flourishing Fund may provide funding for promising individuals to learn skills relevant to helping future generations, including new technologies such as machine learning. If you already have software engineering experience, but would benefit from explicit machine learning or AI safety experience, this could be a good option for you.
If you think you could, with a few weeks’ work, write a new feature or fix a bug in a major machine learning library, then you could probably apply directly for engineering roles at top AI safety companies (such as Redwood Research, DeepMind, OpenAI, and Anthropic), without needing to spend more time building experience in software engineering. These top companies offer pay that is comparable to pay at large tech firms. (Read more about whether you should take a job at a top AI company.)
If you are considering joining an AI safety company in the near future, our team may be able to help.
Working on reducing global catastrophic biological risks
Reducing global catastrophic biological risks — for example, research into screening for novel pathogens to prevent future pandemics — is likely to be one of the most important ways to help solve the world’s most pressing problems.
Through organisations like Telis Bioscience and SecureDNA (and other projects that might be founded in the future), there are significant opportunities for software engineers to contribute to reducing these risks.
Anyone with a good understanding of how to build software can be useful in these small organisations, even if they don’t have much experience. However, if you want to work in this space, you’ll need to be comfortable getting your hands dirty and doing whatever needs to be done, even when the work isn’t the most intellectually challenging. For this reason, it could be particularly useful to have experience working in a software-based startup.
Much of the work in biosecurity is related to handling and processing large amounts of data, so knowledge of how to work with distributed systems is in demand. Expertise in adjacent fields such as data science could also be helpful.
There is also a big focus on security, particularly at organisations like SecureDNA.
Most code in biosecurity is written in Python.
If you’re interested in working on biosecurity and pandemic preparedness as a software engineer, you can find open positions on our job board.
Other important direct work
Nonprofit organisations and altruistic-minded startups often have very few team members. And no matter what an organisation does, they almost always have some need for engineers (for example, 80,000 Hours is not a software organisation, but we employ two developers). So if you find an organisation you think is doing something really useful, working as a software engineer for them might be an excellent way to support that work.
Engineering for a small organisation likely means doing work across the development process, since there are few other engineers.
Often these organisations are focused on front-end development, with jobs ranging from application development and web development to data science and project management roles. There are often also opportunities for full-stack developers with a broad range of experience.
Founding an organisation yourself is more challenging, but can be even more impactful. And if you’ve worked in a small organisation or a startup before, you might have the broad skills and entrepreneurialism that’s required to succeed. See our profile on founding new high-impact projects for more.
Reasons not to go into software engineering
We think that most people with good general intelligence will be able to do well at software engineering. And because it’s very easy to test out (see the section on how to predict your fit in advance), you’ll be able to tell early on whether you’re likely to be a good fit.
However, there are lots of other paths that seem like particularly promising ways to help solve the world’s most pressing problems, and it’s worth looking into them. If you find programming difficult, or unenjoyable, your personal fit for other career paths may be higher. And even if you enjoy it and you’re good at it, we think that will be true for lots of people, so that’s not a good reason to think you won’t be even better at something else!
As a result, it’s important to test your fit for a variety of options. Try taking a look at our other career reviews to find out more.
How much do software engineers earn?
It’s difficult to make claims about software engineer earnings in general.
For a start, almost all of the official (especially government) data on this is on salaries rather than total compensation. By the time you’re a senior engineer, less than half of what you earn will be from your salary — the rest will be from bonuses, stock, and other benefits.
Most government data also reports median salaries, but as we saw when looking at progression in big tech firms, very senior software engineers can earn seven-figure compensations. So we should expect the distribution of total compensation to be positively skewed, or possibly even bimodal.
As a result, you should think of the figures below as representing salaries for early- to mid- career software developers.
Even given all these caveats, the figures we present here are instructive for understanding the relative salary levels (e.g. between locations), even if the absolute values given aren’t perfect.
More data is available at Levels.fyi, which collects data from people self-reporting their total compensation, and also has data on the distribution of what people earn, rather than just averages.
Software engineering salaries in the US
Here are the median US salaries for software developers, from the US Bureau of Labor Statistics:
Median US salaries for software engineers in 2020 (excluding bonuses)3
Mean | Median | |
---|---|---|
Computer programmers | $95,640 | $89,190 |
Software developers and software quality assurance analysts and testers | $114,270 | $110,140 |
Web developers and digital interface designers | $85,490 | $77,200 |
Here are the median salaries at different levels of progression, both in the US as a whole and in Mountain View and Palo Alto (i.e. Silicon Valley).4 In general, salaries rise quite rapidly in the early stages of the career, but then level off and grow by only a few percent per year after around a decade. However, this is probably offset by increases in other forms of compensation.
Median US salaries for software engineers in 2020 at different levels of progression
Stage | Usual experience required | US (median salary + bonus) | Mountain View and Palo Alto, CA (median salary + bonus) |
---|---|---|---|
Software engineer I (entry level) | 0-2 years | $75,000 | $94,000 |
Software engineer II | 2-4 years | $95,000 | $120,000 |
Software engineer III | 4-6 years | $120,000 | $150,000 |
Software engineer IV | 6-8 years | $147,000 | $185,000 |
Software engineer V | 8-10 years | $168,000 | $211,000 |
Software engineering manager | 10+ years | $155,000 | $195,000 |
Software engineer director | 10+ years | $226,000 | $284,000 |
Software engineer director | 15+ years | $303,000 | $380,000 |
For figures on total compensation, especially at top companies, we can again look at Levels.fyi. These figures are far higher. Entry-level compensation is around $150,000, rising to $300,000 to $400,000 for senior engineers, and above $500,000 for late-career engineers. The top compensation levels reported are over $1,000,000.
Salaries also vary by location within the US; they are generally significantly higher in California (although web developers are best paid in Seattle).
Mean salary by US region in 20205
National | Top-paying state | Top-paying metro area | |
---|---|---|---|
Computer programmers | $95,640 | $107,300 (CA) | $125,420 (San Francisco) |
Software developers and software quality assurance analysts and testers | $114,270 | $137,620 (CA) | $157,480 (Silicon Valley) |
Web developers and digital interface designers | $85,490 | $94,960 (WA) | $138,070 (Seattle) |
These data are supported by Levels.fyi data on various locations in the US (e.g. Atlanta, New York City, Seattle, and the Bay Area).
Notably, the differences between locations in salaries at the 90th percentile is much higher than the differences in median salaries.
Compensation by US region in 20206
Median | 90th percentile | |
---|---|---|
Atlanta | $131,000 | $216,000 |
New York City | $182,000 | $365,000 |
Seattle | $218,000 | $430,000 |
San Francisco Bay area | $222,000 | $426,000 |
It’s worth noting, however, that the cost of living in Silicon Valley is higher than in other parts of the US (Silicon Valley’s cost of living is 1.5 times the US national average7), reducing disposable income. (In general, data on average cost of living is particularly representative of the costs you’d expect to pay if you have a family or want to own a house.)
If you want to estimate your own disposable income given different scenarios, you can try these tools:
- Estimate your post-tax income
- Find out the cost of living in different cities
- Calculate your donatable income
Software engineering pay in other countries
Software engineers are paid significantly less outside the US. The UK Office for National Statistics found that the mean salary for “programmers and software development professionals” in 2020 was £46,000 (US$59,000 in 2020).8 Even when looking at full compensation, we see similar trends across the world.
Software engineer compensation outside the US6
Median | 90th percentile | |
---|---|---|
Australia | A$166,000 (US$123,000) | A$270,000 (US$200,000) |
Canada | C$143,000 (US$115,000) | C$270,000 (US$218,000) |
Germany | €86,000 (US$98,000) | €145,000 (US$165,000) |
India | ₹3,123,000 (US$42,000) | ₹7,435,000 US$100,000) |
Ireland | €101,000 (US$115,000) | €188,000 (US$214,000) |
Israel | ₪533,000 (US$165,000) | ₪866,000 (US$268,000) |
Netherlands | €108,000 (US$123,000) | €174,000 (US$198,000) |
Russia | ₽2,991,000 (US$42,000) | ₽6,410,000 (US$90,000) |
Singapore | S$143,000 (US$106,000) | S$263,000 (US$195,000) |
Switzerland | CHF 177,000 (US$190,000) | CHF 355,000 (US$382,000) |
Taiwan | NT$1,819,000 (US$65,000) | NT$3,387,000 (US$121,000) |
United Kingdom | £90,000 (US$123,000) | £166,000 (US$228,000) |
The only countries with earnings as high as the US are Israel and Switzerland, and no countries have earnings as high as Seattle or the San Francisco Bay Area. The cost of living in major cities in Israel and Switzerland is around 20% higher than in Silicon Valley.9
Compensation across the world is often higher if you work from a major city.
Software engineer compensation in major cities outside the US6
Median | 90th percentile | |
---|---|---|
Bangalore, India | ₹3,569,000 (US$48,000) | ₹7,583,000 (US$102,000) |
Dublin, Ireland | €106,000 (US$120,000) | €189,000 (US$215,000) |
London, UK | £95,000 (US$130,000) | £170,000 (US$233,000) |
Toronto, Canada | C$149,000 (US$120,000) | C$273,000 (US$220,000) |
Vancouver, Canada | C$156,000 (US$126,000) | C$306,000 (US$247,000) |
It can be difficult to get a visa to work in the US. For example, US immigration law mandates that a maximum of 65,000 H-1B visas (one of the most common types for software engineers) are issued a year. Also, because of the cost of flying you out for an interview, there will often be a higher bar for international applicants passing phone interviews.
There are some things that can make it easier to get a visa:
- Having a degree in computer science or other field related to your job
- Applying to companies with enough capital and flexibility to bear the time and financial costs of the visa process
- Having a specific unusual skill set that may be hard to find in the US
Take a look at this blog to find out more.
Despite all of this, remote work in software development is becoming far more common. There’s a growing trend for a few companies to hire globally for remote roles, and pay US-market compensation. If you manage to get one of those roles, you can earn a lot from anywhere.
Software engineering job outlook
The future demand for software engineers is promising. The US Bureau of Labor Statistics projects 22% growth in US employment of software engineers from 2020–30, which is much higher than the growth rate for all occupations (8%). The main reason given for this growth is a large projected increase in the demand for software for mobile technology, the healthcare industry, and computer security.
The number of web development jobs is projected to grow by 13% from 2020–2030. The main reasons for this are the expected growth of e-commerce and an increase in mobile devices that access the web.
What does this mean for future salaries? Strong growth in demand provides the potential for salary growth, but it also depends on how easily the supply of engineers can keep up with demand.
Software engineering job satisfaction
The same high demand for software engineers that leads to high pay also leads to high bargaining power. As a result, job satisfaction among software engineers is high.
Many software engineers we have spoken to say the work is engaging, often citing the puzzles and problems involved with programming, and being able to enter a state of flow (which is one of the biggest predictors of job satisfaction). On the other hand, working with large existing codebases and fixing bugs are often less pleasant. Read our five interviews with software engineers for more details.
Work-life balance in software engineering is generally better than in jobs with higher or comparable pay. According to one survey, software engineers work 8.6 hours per day (though hours are likely to be longer in higher-paid roles and at startups).
Tech companies are progressive, often having flexible hours, convenient perks, remote working, and a results-driven culture. The best companies are widely regarded as among the best places to work in the world.
Examples of people pursuing this path
How to predict your fit in advance
The best way to gauge your fit is to try it out. You don’t need a computer science degree to do this. We recommend that you:
- Try out writing code — as a complete beginner, you can write a Python program in less than 20 minutes that reminds you to take a break every two hours. Once you know the fundamentals, try taking an intro to programming class, or work through free resources. If you’re in college, you could try taking CS 101 (or an equivalent course outside the US).
- Do a project with other people — this lets you test out writing programs in a team and working with larger codebases. It’s easy to come up with programming projects to do with friends — you can see some examples here. Contributing to open-source projects in particular lets you work with very large existing codebases.
- Take an internship or do a coding bootcamp.
It seems likely that a few software engineers could be significantly better than average. These very best software engineers are often people who spend huge amounts of time practising. This means that if you enjoy coding enough to want to do it both as a job and in your spare time, you are likely to be a good fit.
How to enter this field
While a degree in computer science or a quantitative subject is often helpful, many entry-level jobs don’t require one, meaning that software engineering is open to people with backgrounds in humanities and social sciences.
To enter, you need some basic programming skills and to be able to demonstrate a strong interest in software engineering. We’ve seen many people with humanities and social science degrees get junior software engineer jobs with high salaries, just through learning on their own or through coding bootcamps.
Learning to program
Basic computer programming skills can be extremely useful whatever you end up doing. You’ll find ways to automate tasks or analyse data throughout your career. This means that spending a little time learning to code is a very robustly useful option.
- Learning on your own. There are many great introductory computer science and programming courses online, including: Udacity’s Intro to Computer Science, MIT’s Introduction to Computer Science and Programming, and Stanford’s Programming Methodology. Don’t be discouraged if your code doesn’t work the first time — that’s what normally happens when people code!
- Attending a coding bootcamp. We’ve advised many people who managed to get junior software engineer jobs in less than a year through going to a bootcamp. Coding bootcamps are focused on taking people with little knowledge of programming to as highly paid a job as possible within a couple of months. This is a great entry route if you don’t already have much background, though some claim the long-term prospects are not as good because you lack a deep understanding of computer science. Course Report is a great guide to choosing a bootcamp. Be careful to avoid low-quality bootcamps. To find out more, read our interview with an App Academy instructor.
- Studying computer science at university (or another subject involving lots of programming). If you’re in university, this is a great option because it allows you to learn programming while the opportunity cost of your time is lower. It will also give you a better theoretical understanding of computing than a bootcamp will (which can be useful for getting the most highly paid and intellectually interesting jobs), a good network, some prestige, and a better understanding of lower-level languages like C. Having a CS degree also makes it easier to get a US work visa if you’re not from the US.
- Doing internships. If you can find internships, ideally at your target employers (whether big tech companies or nonprofits), you’ll gain practical experience and the key skills you otherwise wouldn’t pick up from academic degrees (e.g. using version control systems and powerful text editors). Take a look at our list of software engineering (and machine learning) internships at top companies.
Getting your first job in software engineering
Larger companies will broadly advertise entry-level roles. For smaller companies, you may have to reach out directly and through your network. You can find startup positions on job boards such as AngelList, and many top venture capital firms have job boards for their portfolio companies.
Large software firms can have long and in-depth interview processes. You will be asked about general software knowledge, and later rounds of interviews are likely to give you problems around coding and algorithms, during which you will be asked to collaborate with the interviewer to solve the problem.
It’s worth practising software engineering interview questions in advance; often this means apply for companies you are less likely to want to work at first, and use these applications to get used to the process. This can be a stressful process (in part because you might face some early rejections, in part because it’s tricky to navigate applying if you don’t really want the job that much), so it’s important to take care of your mental health throughout the process.
It will also probably help to study the most popular interview guide, Cracking the Coding Interview. You can also practise by doing TopCoder problems.
We think that this guide to getting a software engineering job is particularly helpful. There are six rough steps:
- Send a company your resume. Make it as specific as possible to the job you’re applying for, and proofread it carefully. If you can get a referral from a friend, that will significantly increase your chances of success.
- Speak to a recruiter. Read up about the company in advance, and make sure you have questions. Be nice — it’s going to help if the recruiter is on your side.
- Have a technical phone interview. You’ll solve some problems together. Make sure you ask questions to clarify the problem, and strategise about the best possible approach before you start writing code. Finish by checking for bugs and make sure you’re handling errors correctly. When you’re done, ask the interviewer some questions!
- Have a three- to six-hour on-site interview. It’s key to talk out loud as you work through a problem. And again, ask your interviewer some questions about them and the company.
- Get an offer from the recruiter. You should make sure they think you are seriously considering the company or you may not get an offer. If you don’t get an offer, ask for feedback (though it’s not always possible for companies to give detailed feedback). If you need more time to think (or to apply elsewhere), tell them in advance, and they may choose to wait to give you details when you’re more ready to go through with an offer.
- Accept the offer!
Want one-on-one advice on pursuing this path?
If you think software engineering might be a great option for you, but you need help deciding or thinking about what to do next, our team might be able to help.
We can help you compare options, make connections, and possibly even help you find jobs or funding opportunities.
Learn more
Top recommendations
- The 80,000 Hours Podcast on Artificial Intelligence (a collection of 10 key AI episodes from our podcast)
- Our review of careers in information security
- Our review of being an early employee at a startup
Further recommendations
- Our problem profile on the importance of shaping the development of artificial intelligence
- Our problem profile on reducing the risk of future pandemics, and other global catastrophic biological risks
- Our review of working in a top AI lab
- Our review of earning to give
- Our review of being a technical researcher in AI safety
- Our review of founding tech startups
- Our review of founding high-impact organisations focusing on particularly pressing problems
- Our review of careers in data science
- Why AI Safety Needs Great Engineers
- This post on the importance of learning the basics of programming
- This post on why confidence and conviction helps, especially at smaller organisations and startups
- Automate the Boring Stuff with Python by Al Sweigart, an introduction to programming for complete beginners
- Things I Wish Someone Had Told Me When I Was Learning How to Code
- This post on the 10x developer, and whether and how you can be much better at software development than the average
- The Missing Semester of Your CS Education, on practical topics you won’t necessarily have learnt at university
- Cracking the Coding Interview by Gayle Laakmann McDowell
- This guide to getting a high-paying software engineering job
Find a job in this path
If you think you might be a good fit for this path and you’re ready to start looking for jobs, see our curated list of opportunities:
Read next: Learn about other high-impact careers
Want to consider more paths? See our list of the highest-impact career paths according to our research.
Notes and references
- Even if you’re not working at an organisation focused on a particularly pressing problem, there may still be opportunities to have direct impact as a software developer. We argue elsewhere that improving institutional decision-making could be an effective way of preventing costly mistakes. Many important institutions — such as governments, international organisations like the United Nations, and the World Bank — rely, as we all do, on software. Improving this software and its use could be a reasonable way of improving their decisions.↩
- Source: StaffEng↩
- Bureau of Labor Statistics, US Department of Labor, Occupational Employment Statistics (visited Jan 12, 2022).↩
- Data from Salary.com, rounded to the nearest $1,000 (visited Jan 12, 2022).↩
- Bureau of Labor Statistics, US Department of Labor, Occupational Employment Statistics (visited Jan 12, 2022).
“Silicon Valley” is the San Jose-Sunnyvale-Santa Clara, CA metropolitan area.
“San Francisco” is the San Francisco-Oakland-Hayward, CA metropolitan area.
“Seattle” is the Seattle-Tacoma-Bellevue, WA metropolitan area.↩ - Data from Levels.fyi (visited Jan 27, 2022).↩
- Its cost of living index is 148.3 (100 = US national average), according to the Council for Community and Economic Research via Wolfram Alpha.↩
- UK Office for National Statistics Annual Survey of Hours and Earnings, 2020.↩
- Zürich’s cost of living index is 184.2 (100 = US national average), Tel Aviv’s is 172.9 and Silicon Valley’s is 148.3, according to the Council for Community and Economic Research via Wolfram Alpha.↩