In a nutshell: Programming is just instructing computers to do novel things. It’s an in-demand skill set that can be used to directly help solve some of our top problems — and it’s also a great option for earning to give. You can apply (as well as continue to develop) your programming skills by specialising in a related area, such as technical AI safety research, software engineering, or information security.
Key facts on fit
There’s no single profile for being great at programming, and it’s also particularly cheap and easy to try out via classes online or in school, so we’d suggest just doing that. But if you’re someone who enjoys thinking systematically, building things, or has good quantitative skills, those are all good signs.
Why is a programming skill set valuable?
When investigating the world’s most pressing problems, we’ve found that in many cases there are programming-related bottlenecks.
For example, programming is a core skill needed to contribute to AI safety technical research. And experts in information security are crucial to reducing the risks of engineered pandemics, as well as other risks.
Moreover, 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.
What does building a programming skill set involve?
This skill set involves a few steps:
- Build your programming skills — perhaps starting with a university course or self-study and then finding positions where you can get great mentorship. (Read more about how to get started programming.)
- Apply your programming skills to helping solve a pressing global problem. (Read more about how to have an impact with programming.)
When applying your skills, you might be able to do so as a generalist. For example, software engineering roles are fairly broad.
Alternatively, you might specialise, for example, by building skills in machine learning or information security.
There’s no general answer about when to switch from a focus on learning to a focus on impact. Once you have some basic programming skills, you should look for positions that both further improve your skills and have an impact, and then decide based on which specific opportunities seem best at the time.
Programming can also be helpful in other, less directly-related career paths, like being an expert in AI hardware (for which you’ll also need a specialist knowledge skill set) or founding a tech startup (for which you’ll also need an organisation-building skill set).
Programming also tends to come in handy in a wide variety of situations and jobs; there will be other great career paths that will use this skill set that we haven’t written about.
How to evaluate your fit
How to predict your fit in advance
Some indications you’ll be a great fit include:
- The ability to break down problems into logical parts and generate and test hypotheses
- Willingness to try out many different solutions
- High attention to detail
- Broadly good quantitative skills
The best way to gauge your fit is just to try it out.
It seems likely that some software engineers are significantly better than average. These very best software engineers are often people who spend huge amounts of time practicing. 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 tell if you’re on track
If you’re at university or in a bootcamp, it’s especially easy to tell if you’re on track. Good signs are that you’re succeeding at your assigned projects or getting good marks. An especially good sign is that you’re progressing faster than many of your peers.
In general, a great indicator of your success is that the people you work with most closely are enthusiastic about you and your work, especially if those people are themselves impressive!
If you’re building this skill set at an organisation, signs you’re on track might include:
- You get job offers at organisations you’d like to work for.
- You’re promoted within your first two years.
- You receive excellent performance reviews.
- You’re asked to take on progressively more responsibility over time.
- Your manager / colleagues suggest you might take on more senior roles in the future.
- You ask your superiors for their honest assessment of your fit and they are positive (e.g. they tell you you’re in the top 10% of people they can imagine doing your role).
How to get started building a programming skill set
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.
A great way to learn the very basics is by working through a free beginner course like Automate the Boring Stuff with Python by Al Seigart.
Once you know the fundamentals, you could try taking an intro to computer science and programming course. If you’re not at university, there are plenty of courses online, such as:
Don’t be discouraged if your code doesn’t work the first time — that’s what normally happens when people code!
A great next step is to try out doing 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.
Once you have some more experience, contributing to open-source projects in particular lets you work with very large existing codebases.
Attending a coding bootcamp
We’ve advised many people who managed to get junior software engineer jobs in less than a year by 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 as if you studied at university or in a particularly thorough way independently 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 at university
Studying computer science at university (or another subject involving lots of programming) is a great option because it allows you to learn programming in an especially structured way and while the opportunity cost of your time is lower.
It will also give you a better theoretical understanding of computing than a bootcamp (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 computer science degree also makes it easier to get a US work visa if you’re not from the US.
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 wouldn’t otherwise pick up from academic degrees (e.g. using version control systems and powerful text editors).
As you’re getting started, it’s probably worth thinking about how developments in AI are going to affect programming in the future — and getting used to AI-assisted coding.
We’d recommend trying out using GitHub CoPilot, which writes code for you based on your comments.
You can also just ask AI chat assistants for help. ChatGPT is particularly helpful (although only if you use the paid version).
We think it’s reasonably likely that many programming jobs in the future will be heavily based on using tools like these.
Building a specialty
Depending on how you’re going to use a programming skill set, it may be useful to build up your skills in a particular area. Here’s how to get started in a few relevant areas:
If you’re currently at university, it’s worth checking if you can take an ML course (even if you’re not majoring in computer science).
But if that’s not possible, here are some suggestions of places you might start if you want to self-study the basics:
PyTorch is a very common package used for implementing neural networks, and probably worth learning! When I was first learning about ML, my first neural network was a 3-layer convolutional neural network with L2 regularisation classifying characters from the MNIST database. This is a pretty common first challenge and a good way to learn PyTorch.
You may also need to learn some maths.
The maths of deep learning relies heavily on calculus and linear algebra, and statistics can be useful too — although generally learning the maths is much less important than programming and basic, practical ML.
Again, if you’re still at university we’d generally recommend studying a quantitative degree (like maths, computer science, or engineering), most of which will cover all three areas pretty well.
If you want to actually get good at maths, you have to be solving problems. So, generally, the most useful thing that textbooks and online courses provide isn’t their explanations — it’s a set of exercises to try to solve in order, with some help if you get stuck.
If you want to self-study (especially if you don’t have a quantitative degree) here are some possible resources:
You might be able to find resources that cover all these areas, like Imperial College’s Mathematics for Machine Learning.
Data science combines programming with statistics.
One way to get started is by doing a bootcamp. The bootcamps are a similar deal to programming, although they tend to mainly recruit science PhDs. If you’ve just done a science PhD and don’t want to continue with academia, this is a good option to consider (although you should probably consider other ways of using the programming skill set first). Similarly you can learn data analysis, statistics, and modelling by taking the right graduate programme.
Data scientists are well paid — offering the potential to earn to give — and have high job satisfaction.
To learn more, see our full career review of data science.
Depending on how you’re aiming to have an impact with this skill set (see the next section), you may also need to develop other skill sets. We’ve written about some other relevant skill sets:
For more, see our full list of impactful skill sets.
Once you have this skill set, how can you best apply it to have an impact?
The problem you work on is probably the biggest driver of your impact. The first step is to make an initial assessment of which problems you think are most pressing (even if you change your mind over time, you’ll need to decide where to start working).
Once you’ve done that, the next step is to identify the highest-potential ways to use programming to help solve your top problems.
There are five broad categories here:
- Use programming in research. Lots of technical research relevant to the world’s most pressing problems makes heavy use of a programming skill set — most notably, AI safety technical research. To be successful, you might also need a research skill set, which we’ve written about separately. For some paths, you’ll also need specialist knowledge in an area related to a pressing problem — e.g. hardware for becoming an expert in AI hardware.
- ML engineering for AI safety research. Most AI safety researchers work closely with engineers (and in many organisations, no clear distinction is made). This is a particularly high-impact way of using programming because we think risks from AI is one of the world’s most pressing problems.
- Build software for organisations working on pressing problems. Most organisations working on everything from global health to reducing the risk of nuclear war need software engineers to manage computer systems, apps, and websites. The key feature that draws this work together is that you’ll be building a product for others to use. Read more about software engineering careers and an organisation-building skill set.
- Protect dangerous information. Some organisations need help protecting information that could be hugely dangerous if it was known more widely, such as harmful genetic sequences or powerful AI technology. Breaches in areas like these could have disastrous consequences — which makes information security a great option for people who want to have a high-impact career. Read more about information security.
- Earn to give. Most jobs that use programming, whether software engineering, information security, data science, or something else entirely, command high salaries (particularly in the US) — and so they offer a great option for earning to give. Skilled software engineers can earn $300,000 a year or more at big tech companies. Probably the highest-paying routes are trading in quantitative hedge funds or founding a tech startup.
While some of these options (like protecting dangerous information) will require building up some more specialised skills, being a great programmer will let you move around most of these categories relatively easily, and the earning to give options means you’ll always have a pretty good back-up plan.
Find jobs that use a programming skill set
See our curated list of job opportunities for this path, which you can filter by ‘software engineering’ to find opportunities in this category (though there will also be jobs outside those filters where you can apply programming skills).
View all opportunities
Career paths we’ve reviewed that use this skill set
Want to consider more paths? See our list of the highest-impact career paths according to our research.
Plus, join our newsletter and we’ll mail you a free book
Join our newsletter and we’ll send you a free copy of The Precipice — a book by philosopher Toby Ord about how to tackle the greatest threats facing humanity.