Software and tech skills
Table of Contents
- 1 Why are software and tech skills valuable?
- 2 What does a career using software and tech skills involve?
- 3 How to evaluate your fit
- 4 How to get started building software and tech skills
- 5 Once you have these skills, how can you best apply them to have an impact?
- 6 Career paths we’ve reviewed that use these skills
In a nutshell:
You can start building software and tech skills by trying out learning to code, and then doing some programming projects before applying for jobs. You can apply (as well as continue to develop) your software and tech skills by specialising in a related area, such as technical AI safety research, software engineering, or information security. You can also earn to give, and this in-demand skill set has great backup options.
Key facts on fit
There’s no single profile for being great at software and tech skills. It’s particularly cheap and easy to try out programming (which is a core part of this skill set) via classes online or in school, so we’d suggest doing that. But if you’re someone who enjoys thinking systematically, building things, or has good quantitative skills, those are all good signs.
Why are software and tech skills valuable?
By “software and tech” skills we basically mean what your grandma would call “being good at computers.”
When investigating the world’s most pressing problems, we’ve found that in many cases there are software-related bottlenecks.
For example, machine learning (ML) engineering is a core skill needed to contribute to AI safety technical research. Experts in information security are crucial to reducing the risks of engineered pandemics, as well as other risks. And software engineers are often needed by nonprofits, whether they’re working on reducing poverty or mitigating the risks of climate change.
Also, having skills in this area means you’ll likely be highly paid, offering excellent options to earn to give.
Moreover, basic 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 a career using software and tech skills involve?
A career using these skills typically involves three steps:
- Learn to code with a university course or self-study and then find positions where you can get great mentorship. (Read more about how to get started.)
- Optionally, specialise in a particular area, for example, by building skills in machine learning or information security.
- Apply your skills to helping solve a pressing global problem. (Read more about how to have an impact with software and tech.)
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.
Software and tech skills 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). Being good with computers is also often part of the skills required for quantitative trading.
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 these skills 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 out programming.
It seems likely that some software engineers are significantly better than average — and we’d guess this is also true for other technical roles using software. In particular, 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 these skills 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.
- After some time, you’re becoming someone in your team who people look to solve their problems, and people want you to teach them how to do things.
- You’re building things that others are able to use successfully without your input.
- 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 software and tech skills
Independently learning to 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.
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 or intro to programming course. If you’re not at university, there are plenty of courses online, such as:
- Udacity’s Intro to Theoretical Computer Science
- MIT’s Introduction to Computer Science and Programming
- 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!
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 to code 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.
Doing internships
If you can find internships, ideally at the sorts of organisations you might want to work for to build your skills (like big tech companies or startups), 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). Take a look at our our list of companies with software and machine learning internships.
AI-assisted coding
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. Cursor is a popular AI-assisted code editor based on VSCode.
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 software and tech jobs in the future will be heavily based on using tools like these.
Building a specialty
Depending on how you’re going to use software and tech skills, 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:
- 3blue1brown’s series on neural networks is a really great place to start for beginners.
- When I was learning, I used Neural Networks and Deep Learning — it’s an online textbook, good if you’re familiar with the maths, with some helpful exercises as well.
- You can do online intro courses like fast.ai (focused on practical applications), Full Stack Deep Learning, and the various courses at deeplearning.ai.
- For more detail, see university courses like MIT’s Introduction to Machine Learning, and NYU’s Deep Learning for even more detail. We’d also recommend Google DeepMind’s lecture series.
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:
- Calculus: 3blue1brown’s video series on calculus could be a good place to start. You may also be able to follow recorded university courses: MIT’s single variable calculus (which requires only high school algebra and trigonometry) followed by MIT’s course in vector and multivariable calculus.
- Linear algebra: Again, we’d suggest 3blue1brown’s video series on linear algebra as a place to start. In his post about technical alignment careers, Rogers-Smith recommends Linear Algebra Done Right by Sheldon Axler. Finally, if you prefer lectures, try MIT’s undergraduate course in linear algebra (although note that this course assumes knowledge of multivariate calculus).
- Probability: Take a look at MIT’s undergraduate course in probability and random variables.
You might be able to find resources that cover all these areas, like Imperial College’s Mathematics for Machine Learning.
Most people get started in information security by studying computer science (or similar) at a university, and taking some cybersecurity courses — although this is by no means necessary to be successful.
You can get an introduction through the Google Foundations of Cybersecurity course. The full Google Cybersecurity Professional Certificate series is also worth watching to learn more on relevant technical topics.
For more, take a look at how to try out and get started in information security.
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 software and tech skills 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 these skills (see the next section), you may also need to develop other skills. We’ve written about some other relevant skill sets:
- How to get started building research skills
- How to get started building specialist knowledge relevant to a pressing problem
- How to get started building skills for communicating ideas
For more, see our full list of impactful skills.
Once you have these skills, how can you best apply them 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 software and tech skills to help solve your top problems.
There are five broad categories here:
- Use software and tech skills in research. Lots of technical research relevant to the world’s most pressing problems makes heavy use of software and tech skills — 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 software and tech skills 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 organisation-building skills.
- Protect sensitive 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 software and tech skills, 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 backup plan.
Find jobs that use software and tech skills
See our curated list of job opportunities for this path.
Career paths we’ve reviewed that use these skills
- AI safety technical research
- Information security in high-impact areas
- Expert in AI hardware
- Forecasting and related research and implementation
- Data collection for AI alignment
- Software engineering
- Found a tech startup
- Earning to give in quantitative trading
- Machine learning PhDs
- Early-stage startup employee
- Working at a leading AI lab
- Computer science PhD
- Data science
- Product manager in tech
- Web designer
Read next: Explore other useful skills
Want to learn more about the most useful skills for solving global problems, according to our research? See our list.