Why do Software Engineers Get Paid so Much?

Software engineering can be a mysterious field. It’s still mysterious to me despite studying Computer Science in university and having several tech internship experience. It’s hard for me to imagine what software engineering looks like to people outside the field, but I’m confident in saying that it’s probably opaque and confusing (even if you consider yourself fairly informed or clever).

What do software engineers actually do? Yes we “make software,” but what does that actually mean? How much of our time is spent writing code? Why does updating buttons and moving around data take so much time? What other responsibilities do software engineers have?

Most importantly, why the f*ck do software engineers get paid 6 figures to stare at their screens for 8 hours a day? What separates these engineers from other professions?

What is Software Engineering? #

A lot of blogs I’ve read will say something along the lines of, “software engineering is applying the rigor of traditional engineering fields (e.g. civil engineering) to the building of software.” Which makes sense if you’ve built software or have worked on a team that builds software. And only confuses you more if you have no experience with building software.

How coding relates to software engineering

I want to throw in the aside that writing code =/= building software. Knowing how to code can be a really useful skill. Especially when using tools that provide most of their utility from either a command-line interface or by writing short programs (e.g. simulations in Matlab, Excel macros).

What the aforementioned definition hints at, though, is that there are quality controls in software engineering to make the code more "robust." In other words, to make the code that you've written useful for a long time by ensuring that it's easy to adapt for new situations and does not break when it encounters new situations.

And so, software engineering projects require additional skillsets on top of just being able to write code.

Really, what people want to know is what software engineers do, not what software engineering is.

And the answer to that is…it depends.

“Software Engineer” is a title that describes a lot of different roles in the Information Technology space. Some of these roles are well defined and have existed for decades. Other roles are really novel, and have only had formal titles for maybe 1-5 years (e.g. Developer Relationships Manager, ML Engineer).

It’s a cliché saying that the “tech industry moves fast.” And like most clichés, there’s some of truth to it.

What a lot of people take for granted (software engineers included) is that the kind of problems we are trying to solve with technology now are much more diverse than the kinds of problems we were trying to solve 30-40 years ago. 30-40 years ago, most software engineers and computer scientists were trying to build better computers. Limited memory, slower networks, and the rapid increase of computers in the world led to a lot of novel problems in those spaces. And so, there was a serious need for people who were experts in hardware, compilers, networking, operating systems, and so on.

Nowadays computers are relatively cheap. All modern smartphone models have more computing power than the computers that sent a spaceship to the moon. Think about that for a second.

As the capability of computers and tools increased, the amount of problems we wanted to solve with them increased as well.

We have the same old problems of building reliable networks, writing programs and software under strict hardware constraints, and so on, but now we also have a ton of novel problems too.

How do you build a visually engaging and attractive application? How do you handle billions of network calls at the same time? What do we do with exabytes (1 billion gigabytes) of data? What tools do software developers need to do their job better?

These are only a handful of questions that are now being taken seriously by more and more people in the technology community. Decades ago there were perhaps a few hundred technologists across industry and research institutions thinking about these problems. But now, there are tens of thousands of technologists who are actively building solutions to these problems.

This is all to say: software engineering is a lot. There are a lot of roles that software engineers can play, and as a title it serves as a catchall for people with potential expertise in a wide array of topics and fields. Coding plays a part in a software engineer’s day-to-day, but there are also many “software engineers” who don’t code at all.

Why do Software Engineers Make $$$$? #

Software engineers have some of the highest starting salaries for any college major.1 And it’s a bit of a curiosity as to why software engineers get paid so much.

Yes, software plays a huge part in the first-world professional’s day-to-day life, but does a fresh undergraduate really command 70k-120k salaries? Especially given that their peers in other engineering majors may be making 10k-60k less than them?2

What skills can they offer? And do all junior software engineers have the potential growth to make contributions that makes returns on those high salaries?

Based on my personal experience (both working as a junior engineer and working with other junior engineers) is no.

Engineering is hard, and being a good engineer even harder. Even as someone enamored in the tech world and who reads engineering blogs for fun, I still wouldn’t consider myself close to the worth of those insane 6-figure salaries that some junior engineers can get.

Yet here we are, in a world where some junior software engineers get paid 120k+ to stare at their screens for 8 hours a day. Why is that?

Scarcity? #

There’s a software developer survey3 that suggests there’s somewhere between 24-25 million software developers worldwide. About 4 million of these developers are located in the U.S.

One obvious thought to have is that software engineering is a (relative) rare skill. As we discussed before, even though there are tons of bootcamps and programs that teach people how to code, there are still relatively few people who know how to software engineer.

There’s even additional scarcity when we factor in expertise and technologies. Even within the subset of the 4 million developers in the U.S., how many of them will be working with the particular programming languages or technology that a company needs?

This scaracity drives up salaries for people who seem to demonstrate strong software engineering skills or the potential to become really strong software engineers. And salaries for average engineers who are working on niche, but critical technologies could also be raised (e.g. functional programming developers).

Zero Distribution Cost? #

One of the amazing things about software businesses is that it costs $0.00 to reproduce the product/service.

Unlike manufacturing a physical product, software can be downloaded across any Internet connection for (basically) free. There’s no need to invest in manufacturing equipment or distribution networks. All of the infrastructure required to deliver your product/service is being handled by other companies/industries (e.g. telecom industries are the ones who pay to set up 5G network towers and lay down fiber optic cables).

The caveat is that some distribution platforms come with a cost (e.g. getting an app on the Apple or Android market). Still, these costs are miniscule compared to how much money other industries have to pay to get a product/service into the hands of a customer.

What this all means is that a business has extra revenue to return to their employees (i.e. software engineers).

Scale? #

There are just a ton of computers that exist and many service industries that depend on software.

Hypothetically, let’s say YouTube was a paid subscription service of $1/month. According to this site, YouTube pulls in 2+ billion active users every month, translating to $2 billion dollars of revenue every month. YouTube, as a platform, only had to be built once. And the main monthly expense is paying for the computers that store and distribute videos. This means that YouTube now has a lot of extra cash to pay back as salaries to their employees.

This is oversimplified, but not a stretch from how some software companies operate today. And perhaps it points to another reason why software engineering salaries can get so high.

What Else? #

Aside from these three obvious ideas on why software engineering salaries can be so high, I’m not sure what else you could attribute to this phenomena.

Certain software products (e.g. Google in search, Amazon as a marketplace, Microsoft/Apple as technology ecosystems) command monopolies in their respective industries. As such, it’s obvious why software engineering salaries at those companies can be so high.

There’s also the curious dynamic of software engineering salaries based on geography. It’s known that software engineering salaries in places like India and Europe are much lower than salaries in the U.S. We also see disparities within the U.S. (software engineers in the midwest making much less than software engineers on the coast, for example).

If you have any interesting ideas and other anecdotes you’d like to share about this topic, feel free to DM me @tommy_b_nguyen.

Will These Salaries Last? #

It’s hard to say when software engineering salaries might come down to an average that’s closer to the salaries of other industries/fields. It’s also entirely possible that other industries/fields salaries are raised to be closer to software engineering salaries.

For the foreseeable future (2-5 years) software products will still play a large part in 21st-century lifestyles. To me, this signals that software engineering salaries, especially senior software engineering salaries, will maintain their insanely high numbers.

Good software engineering is a scarce skill, and I have yet to see programs that can cheaply pump out top tier software engineers.

But of course there’s a lot I don’t know. Maybe the bootcamp/program that creates top tier software engineers is right around the corner. Or maybe demand for software products plummets. Who knows ¯\_(ツ)_/¯.


  1. I don’t have any direct links for this but literally just Google “highest starting salaries by major” and you’ll usually find Computer Science/Computer Engineering in the top 10. 

  2. These numbers come from various blog posts and anecdotes from peers. An Indeed article about starting salaries based on major shows that engineering and business majors’ salaries typically start 10k-30k higher than various non-STEM majors. Factor in the extreme salaries that big tech companies give their junior engineers (which range from 100k-120k), and these numbers seem fairly reasonable. 

  3. A blog post referencing Evans Data Corporation data. Another blog referencing the same data. I’m using these blog posts because the data set and report itself are behind a paywall, and y’kno, I’m a broke college student.