
Is developer compensation becoming bimodal? - signa11
https://danluu.com/bimodal-compensation/
======
foamflower
One (semi-pedantic) quibble with the article: there absolutely are barriers to
entry for programming. Programming is hard! These barriers may not be
artificial, but they are real.

To use a non-software example, there are barriers to entry to chip
manufacturers and power companies even under anarchy. Fabs are tremendously
hard to build. Power plants are extremely hard to build. Building up knowledge
and skills about computers is also very hard, especially when our genes don't
seem to guide us toward thinking highly logically.

And programming is hard because it requires us to understand a bunch of
modular systems and then the systems they're built on, all the way down, and
in some cases, all the way up. Then, we have to understand the whole
integrated system of the individual modules. Not all programming problems
require this level of difficulty, but these problems do exist. I've been on
teams where I'm the only one who understands what the OS is doing or the CPU
is doing or what the network is doing or why some other distributed component
might have stopped working. Most of my teammates in these cases seemed to
enjoy programming, but didn't care to become overall experts in computers as a
whole.

I once had a top-tier business school grad friend claim that programming
really isn't that hard and that we're all whiners. He is a genuinely smart
person. Today, he himself is trying to code in JavaScript on the client side.
He's a friend so I help him, but the problems he has are junior-level or even
entry-level. Suffice it to say, I haven't heard much more about how
programmers are "whiners" when we say programming is hard.

~~~
namelost
If you want to know just _how_ hard programming is, try teaching it to
someone.

Programmers have to remember a vast amount of domain knowledge. Consider the
basic task of choosing where you are going to store some data, well first you
need to know _which_ options exist and there's dozens of them (do you want
Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths
and weaknesses of each. And I hope you have been keeping your knowledge up-to-
date because the answer in 2018 is very different to the answer in 2008.

The lack of barriers to entry actually makes it harder. There are "law
schools" and "med schools" to teach you all the knowledge required to become a
lawyer or a doctor. There is no "programming school", every programmer is
self-taught. A computer science degree hardly scratches the surface.

While there are specialisms, such as game development or embedded development,
most programmers are expected to be generalists. You may find yourself needing
to write networking code, and there's a whole bunch of knowledge that goes
along with that. Or, many programmers end up having a working knowledge of
cryptography.

Sure, almost anybody can learn JavaScript or Python, and _write code_ , but
learning a programming language is only 1% of the job.

~~~
giobox
> There are "law schools" and "med schools" to teach you all the knowledge
> required to become a lawyer or a doctor.

Programmer now, gained a law degree in a previous life. Know lots of folks who
studied medicine.

The idea that med school or law school teach you "all the knowledge required
to become a lawyer or a doctor" is laughable and a truly absurd statement. The
sheer size of the problem domains these subjects cover alone renders this
impossible, and furthermore I'd argue it's pretty insulting to insinuate that
Computer Science is somehow more difficult in this regard.

While I can't speak fully for medics, a law degree "hardly scratches the
surface" as you put it either.

~~~
laythea
I don't think that is what he/she meant. I don't know what your professional
software experience has been like, but software is applied and required to
some extent in all industries nowadays, and therefore there is a broader scope
required. It is also more of a moving target. I'm a contractor providing
software engineering services. One contract I might be doing Subsea control
systems, the next OpenGL graphics hardware programming sprinkled with Java and
Eclipse, the next contract may be embedded assembly language for turbine
control systems etc. Law/Medicine maybe moving, but I am fairly certain a
doctor or lawyer does not "move as fast". They tend to stay specialised in
maybe an area or two. In fact, for a serious medical condition, from a
patients point of view, I would be quite alarmed to be seen by a doctor that
has not "specialised" in my condition. Ideally, one that does nothing but my
condition. I think it is easier for a doctor/lawyer to fall into the trap of
becoming specialised _in one or two areas alone_ than a software engineer,
simply for the fact that if I did not constantly have to become specialised in
a new area, usually for every contract), then I would not be able to pay the
bills. So I imagine that is what he/she meant.

~~~
hobbyjogger
Your point is a good one, but to me it confirms the comment you are responding
to.

> The idea that med school or law school teach you "all the knowledge required
> to become a lawyer or a doctor" is laughable and a truly absurd statement.
> The sheer size of the problem domains these subjects cover alone renders
> this impossible

You seem to be an example of a programmer that can be good and proficient in
many different fields, languages, and scopes. You don't really see that in law
or medicine. Doctors can't jump around from orthopedic surgeon to psychiatrist
to dermatologist. And it's very uncommon (at least for lawyers under 60 or so)
to be both a corporate lawyer and a litigator.

As giobox mentioned, the sheer size of the domains of law and medicine all but
require doctors and lawyers to specialize. That's certainly true to some
extent with computer science but it doesn't seem to be quite as strong in that
field.

~~~
laythea
I think you misinterpreted me a little. I think the reason that lawyers and
doctors cannot "jump around" is not because, for example, a lawyer cannot
absorb the information required to be both a good corporate lawyer and a good
litigator, due to it being too much. They can. It is that the system that they
choose to be in (law/medicine) _demands_ the individual to be certified and
_formally trained_ to such an extent that it cripples this kind of
professional mobility. This is not true in software. Not because of any other
reason other than society is catching up. Unlike the fields of law and
medicine, where those fields are growing "linearly" with society. It is also
the reason that I do not by law require to be a chartered engineer to perform
my job to the full extent.

~~~
ACow_Adonis
I have limited idea whether its fundamentally barriers in terms of the
subject-matter (because I do not know or practice in multiple fields of
medicine) or in terms of the social structure (where it is pretty obvious the
highly structured/time-based hierarchical regulated fields).

But I will say one of the MAJOR things that I LOVE about programming is its
relative lack of artificial and social barriers. In psyche, med, law, science:
even if i am good enough to pick something up in 6-12 months, or even if I
have already been studying or been experienced in said field (say because I
have a family member who has been surreptitiously teaching me or bringing me
along on the side), there is an inescapable time, money, and social barrier
that is effectively immutable.

I can't REALLY do law/medicine without running them in serial, paying the
fixed costs of time/money for both (which almost no one has), and I can't
fast-track through either or leap-frog students or peers of lesser ability.
And god help you if, half-way through, you then think that something in
chem/physics might be interesting and applicable. Or if you have the
insight/ability to say: i think i'd learn more over there (well too bad, these
are the requirements for the program and this is the course structure and this
is what you need to do to get your practicing certificate...and except in
exceptional circumstances, that's even if you had someone in a position of
authority who would agree with you).

Those barriers have not yet been established effectively in programming. Sure,
some people tried earlier to establish things like certification and
structure, and we're now starting to see the germination of university degrees
in arbitrary specializations, and that force will always be there, but few
people take them comparatively seriously. The barriers to entry are low (you
could almost always even just pirate some software to get started and install
it on relatively cheap generic hardware). And if you want to apply it to
different fields, you quickly find the barriers aren't generally from the
computing/programming side, but from the social/structural barriers inherent
in those fields in our society.

Now to be sure, we get the downside of this too: cranks, frauds, used-car-
salesmen, agile coaches, wannabes, fads, marketing, etc.

But they don't stop me learning for my own ends, and if i ignore them they
have no effect on what I can learn for myself once I pass the relatively low
barrier of stable employment and income and basic hardware. And my knowledge
makes me more employable and more attractive.

Whereas there is no way I can participate or do the same with engineering,
medicine, or law etc without effectively cancelling my life and/or desires in
other fields.

And whereas my knowledge and self-direction make me immediately more
employable and desirable NOW and at all times in the future in programming, i
have huge sunk, upfront, and opportunity costs for several years to
participate formally in each of those other fields.

~~~
laythea
Yep. Except I would consider what I do as mostly engineering, and what I said
above still applies. Subsea oil/gas control systems, gas turbine control
systems, etc, but then sometime just desktop applications, eg OpenGL/Java etc.
All need software. But all engineering, although I would say the desktop
application contracts are less engineering, more programming. But then we
would have to start talking about the whether programming is actually
engineering so don't want to go there :)

------
jandrewrogers
Yes, it is. And the example used in the article of chemical engineering
reinforces the point. It ties into computer science quite nicely.

To become a chemical engineer, you first have to complete the course work for
a degree in chemistry. Chemistry as chemistry is an extremely modular subject
matter; you can solve most problems in discrete steps in isolation. In a
computer science sense, chemistry is about pure functions. Very easy to
analyze, as material side effects (like spontaneous detonation) are rare.

Chemical engineering, on the other hand, is about analyzing systems that leak
their state everywhere and have effects that feedback into other parts of the
system. But it needs to be extremely efficient nonetheless. There is no
isolation because it doesn't exist in real-world complex systems. I have seen
excellent chemists absolutely fail to grok chemical engineering even though it
is literally the same subject matter. The only difference is that chemical
engineers are required to reason about complex distributed systems; as with
computer science, only a minority of practitioners ever seem to grok it
despite their best efforts. Same problem, different domain. And chemical
engineers are paid on a different scale than chemists as a result.

In engineering, bimodal distributions are the sorting of people that naturally
have the ability to easily reason about complex distributed systems with many
concurrent moving parts and people that cannot. Increasingly, the market is
discriminating on this characteristic and it is reflected in wages.

Anecdotally, it is somewhat well-known that people competent at chemical
engineering find advanced software engineering to be intuitive; it is a very
easy second "language" to pick up. An inordinate number of chemical engineers
end up in high paying software engineering careers -- it comes very naturally
and lends itself to the abstract analytical toolset you develop as a chemical
engineer.

~~~
tomwphillips
>To become a chemical engineer, you first have to complete the course work for
a degree in chemistry.

That is incorrect.

Look at the programme of study for a chemical engineering undergraduate degree
[1]. It doesn't cover anywhere near the same content as an undergraduate
chemistry degree [2].

[1]: [http://www.imperial.ac.uk/study/ug/courses/chemical-
engineer...](http://www.imperial.ac.uk/study/ug/courses/chemical-engineering-
department/chemical-engineering/)

[2]: [https://www.imperial.ac.uk/study/ug/courses/chemistry-
depart...](https://www.imperial.ac.uk/study/ug/courses/chemistry-
department/chemistry-bsc/#structure)

~~~
zelos
I was typing a similar response. I did a 4-year MEng in ChemEng and there were
only a few non-elective courses in organic and physical chemistry. The bulk of
the content is fluid mechanics, thermodynamics, vessel design, safety, control
systems, mathematics etc.

~~~
LanceH
To quote a Chem eng friend, "I don't know chemistry, all I know are flow
rates."

------
yuzulicious
Almost all professional and semi-professional salaries are becoming bimodal.

I'm too tired at the moment to look this up, but the NY Times had a piece
sometime in the last couple of years where they were discussing income
distributions, and had an interactive, and what they looked like, almost
across the board, was a bigger lower mode, and then a second, smaller, more
spiked mode much higher.

What struck me about that piece was that it was framed in terms of skewed
incomes, but the bimodality of it didn't get discussed much at all, nor the
fact it was so widespread across different disciplines.

To me it was very disturbing, because it suggested that there was a growth,
across disciplines, of two "classes", one established, with a relatively large
income, and another, larger class, with a much smaller income.

I was very curious about this, and have wondered what the groups are--if it's
because of older, senior individuals and younger, junior individuals. Maybe
the latter are trainees? Maybe the latter came into the labor market at a less
favorable time? Maybe there's just a kind of winner-takes-all sort of
phenomenon?

It was really disturbing to me, and seems difficult to explain in terms of any
specific features of any field, because it was so, so widespread across labor
areas. It was partially disturbing that it was sitting right here in these
graphs at a major news outlet about income distributions, and was not being
acknowledged even then. It was probably more disturbing to me than the general
long-tailed skewed income distribution that gets discussed, because it
suggested (at least to me) very unnatural about how incomes were being
allocated, even more so than the stereotypical long-tailed but unimodal curve.

~~~
jgtrosh
I can imagine a simple explanation where one mode of gratification aims to pay
as low as possible to keep the workforce willing to work at all, and another
mode is to use pay amount to avoid talent from going away. Pay is thought
about and used differently in both modes, and it's a simple enough management
pattern that it could translate to every field. This is an over simplistic
hypothesis and it would need more info to confirm but it seems potentially
reasonable to me.

~~~
tclancy
I think that's true from the management side. I also think it reflects
personalities on the employee side: you have to be able to risk rejection and
possibly worse to ask for a significant raise which means you either need to
be very risk tolerant or in a situation where you can afford to fail.

------
aphextron
>Another possibility is that U.S. immigration laws act as a protectionist
barrier to prop up programmer compensation. It seems impossible for this to
last (why shouldn’t there by really valuable non-U.S. companies), but it does
appear to be somewhat true for now.

I feel like this is the real issue here. The reason that the US has great
companies is simply from the availability of large amounts of capital. And if
the millions and millions of Indian, Chinese, and Eastern European programmers
who are inifinitely more talented/driven/intelligent/educated than myself were
able to simply move here and seek employment with no immigration restraints, I
know that I would be out of a job instantly. In that sense it feels perversly
exploitative and priveleged to make so much more money than practically anyone
else on earth due to nothing but the physical location I was born.

~~~
yAnonymous
Where's all the great Indian, Chinese and Eastern European software? Seriously
wondering, because most software I saw from these regions was mediocre at
best.

The whole world uses operating systems, browsers and development tools made in
western countries.

~~~
yomly
My experience is that culturally, places outside of North America and West
Europe have lagged in attitudes to software development. Tech is still
referred to as "IT" and engineers are still seen as code-monkeys or a cost-
centre.

This is very much changing, especially in China, but I presume there is still
some lag. The other thing worth bearing in mind is that Chinese products are
very insular. They are slow to get localized if ever so unless you have a
reason to be going out to download them, you are unlikely to ever be using
them.

~~~
falafel
> places outside of North America and West Europe have lagged in attitudes to
> software development.

This is right. From my experience working with an offshore team in India, the
main problem is cultural. A large majority of the developers in India I've
worked with have no interest in furthering their development carrier, but see
it simply as a way to transition into management as fast as possible. In
practice, this means that you can go from a junior developer to a project
manager in the span of 2 years or so. 2 years is not enough time to solidify
your knowledge and become the t-shaped programmer that this industry requires.
I think one needs at least 5 years of work and experimentation in this field
to reach the level where you can contribute positively to a company, without
creating huge amounts of technical debt.

------
athenot
I think the reason for high compensations is that software is the enabling
factor for capital.

If software can automate, reduce inefficiencies and generally be the means to
accomplish the business goal, then it makes sense for the business side to
invest heavily into what is essentially a competitive differentiator.

The bimodal compensation reflects a growing split between software activities
that are seen as an necessary operational burden, and those which are the
"secret sauce" of the business. That's why fintech has traditionally been the
highest paying field, as the return on investment is the most obvious for
them.

Edit: typo (thanks tzahola!)

~~~
meri_dian
This seems like a key component of the answer.

Of course, salaries are largely determined by the industry one is in. If you
can position yourself at a place in the economy that attracts large amounts of
money (per person) then you will be able to siphon off a relatively large
amount for yourself.

As software embeds itself in everything we do, developer earning potential
will reflect the industry one is in.

High tech firms like Apple and Google make huge amounts of money per employee,
so people that work for them make huge amounts of money too. Not just software
developers, but also people in sales and strategy, etc. Same for people in
finance.

------
salmonfamine
I think the explanation for bimodal dev salaries is pretty clear, and is
similar to the explanation for the bi-modality in Lawyer salaries.

Google, Facebook, Amazon, and whatever other big name you want to throw in the
pot, are competing for developers. However, they are not competing for the
same developers as Epic Systems, for example. FAANG (or whatever) are
competing for a highly skilled subset of devs that can meet their demanding
hiring criteria. Similarly, top law firms are only competing for a subset of
all law grads -- those that meet their demanding hiring criteria.

The difference here is that, in law, that criteria is focused around a
prestigious degree. Presumably, this is because it is hard to thoroughly test
a lawyer's competency as a lawyer in an interview setting. However, in
programming, many top companies, apparently, find that a series of intense
whiteboard interviews are sufficient to determine whether or not a dev meets
their high standard.

However, we also have a shortage of devs across the board, for all companies.
If CS enrollment increased by 100%, then presumably the "lower" distribution
of salaries would stabilize at a lower number -- probably close to what
traditional engineers make nowadays. However, the salaries of the GooBooks of
the world will only be affected if a sufficiently high proportion of those
grads can meet a very difficult hiring criteria.

Similarly, law schools have seen a dramatic increase in enrollment over the
past few decades. Lower salaries have stabilized, since the market is now
saturated. However, the salaries for top law firms remain high, because a
similarly low number of candidates meet their difficult hiring criteria:
Harvard, Yale, and etc. are producing more or less the same number of law
grads as before, with respect to demand.

This is why Google can open an office across the street from Epic and yet
still pay devs twice as much. This is also why I don't think immigration is a
huge factor. Sure, if companies were able to immigrate significantly more
workers, then salaries at top companies might drop to a degree. But the real
drop would be seen in the salaries of devs at typical companies.

EDIT: grammar

~~~
JamesBarney
Lawyer salaries are bimodal for a very specific reason. No law firms really
believe that a graduate in the top 9% is worth 160k/year, but a graduate in
the 11th percentile is only worth 60k.

But they all have to pay the same because it's a signal to their clients that
they are the best. If they paid less than their clients would consider their
firm second tier not top tier.

And Google is hiring the same devs as everyone else. Having worked in a large
company and seeing several people move to Google. They got some smart devs who
stood out on their team, but they also got mediocre devs. The average dev they
poached was definitely better than the average dev who worked there but it was
a moderate difference in degree not kind.

~~~
salmonfamine
Maybe, but top firms are still only hiring lawyers from top schools. And as
far as salaries go, that bottleneck is the only differentiating factor.

You could also argue that maybe Facebook doesn't need devs to be able to
independently produce Tarjan's algorithm while standing on their heads,
blindfolded. But for some reason, these companies believe that it is
essential. Maybe that's well-founded -- maybe not. But it remains the case.

------
kenhwang
I'm partial to the O-ring explanation. Software engineering is uniquely
multiplicative because it's possible for a software engineer to create
software that does software engineering.

Chemical/electrical/mechanical engineers can't use their field to automate
their field. Doctors and lawyers are almost exclusively service jobs, unlike
the manufacturing nature of engineering.

Automation is a force multiplier, and software engineering benefits from being
able to create automation, apply automation to others, as well as being able
to apply automation to itself.

~~~
gaius
_Chemical /electrical/mechanical engineers can't use their field to automate
their field._

A mechanical engineer designing a new manufacturing technique or robot is most
certainly using their field to automate their field. Most of computing exists
because electronic engineers used their field to automate their field.
Software is not unique in this respect.

~~~
Arwill
Every field is working to automate their field _with the help of software_.
For which you need software developers. The article raises the question of why
people are hired as software developers even if they don't have such a degree.
Its because companies see it as an automation problem and not as a software
engineering problem. That is also why quality or experience of the developer
is irrelevant most of the time, there is no one else to judge it, so if its
working then its working.

~~~
gaius
_Every field is working to automate their field with the help of software. For
which you need software developers._

Right, but let's be clear about our terminology here. Automation in
mechanical/manufacturing isn't being done by CS grads with skills in RoR
employed as software developers. It's being done by MechEng graduates armed
with FORTRAN compilers who write a lot of code but don't consider themselves
to be developers at all.

~~~
kenhwang
A rose by any other name would smell as sweet.

How different is a MechEng writing FORTRAN for mechanical engineering from a
MechEng writing RoR for trendy widget bean button SV startup?

I'd argue they're both programming, which is sufficient to reap some of the
benefits of automation. Software engineering can be described as applying
engineering to programming. Any company that benefits from programming would
also benefit from the increases in efficiency, reliability, performance, etc.
software engineering would bring to programming.

~~~
gaius
_How different is a MechEng writing FORTRAN for mechanical engineering from a
MechEng writing RoR for trendy widget bean button SV startup_

Because in scenario A the main skill being applied is mechanical engineering
and in scenario B the main skill being applied is RoR.

If everyone who ever writes a line of code is a "software developer" would you
include an Excel VBA 10-liner writer? Probably not, and nor would that person
include themselves, they're an accountant (or whatever).

~~~
stochastic_monk
I don’t typically think of web developers as software engineers.

I think of work like FFTW and the Tensor Algebra COmpiler (TACO) as software
engineering.

~~~
gaius
Whereas when I say "software engineering" I am referring to formal methods, or
software components of engineered systems e.g. avionics. Nevertheless - the
point is that lots of professions automate themselves. Now that I think about
it even a doctor who invents a more effective treatment lessening the workload
of other doctors is using medicine to automate medicine.

------
YPCrumble
A good answer to why software pays more than industries like law or medicine
is that profit per employee in software is enormous. Of the 12 American
companies on this chart of the highest profit per employee, 6 are software
companies: [http://www.businessinsider.com/apple-facebook-alphabet-
most-...](http://www.businessinsider.com/apple-facebook-alphabet-most-
profitable-companies-per-employee-2017-12)

I would love to hear an economist explain why this might or might not lead to
higher salaries. My hypothesis is there is an element of human nature: if
you're rolling in cash you don't have to be stingy.

~~~
TwoFactor
I'm not sure that list is a fair way to determine an industry's profit per
employee.

Law firms aren't allowed to form C corps, which limits their size and would
keep them off that list. I would expect top law firms to be in those ranges in
for profit per employee, but they're much smaller so it isn't a fair
comparison.

2 of the top 6 in that list are in medicine.

~~~
heedlessly2
at my university's law school, which is a T14, the average starting salary is
125-150k.

Which is a lot, but not as much when considering that most law grads have
mountains of debt plus the opportunity cost of not being the workforce for 3
years. Plus they average 55+ hours per week. And usually cannot work from
home.

You're better off doing CS undergrad and working for a Big 10. The hours are
on average and can be flexible if you're an efficient worker.

~~~
torstenvl
That's likely the mean salary. Median starting salary in that space is likely
$160k. Some market leaders have recently moved to $180k.

But yes. The debt burden is incredible. I am nine years out of school and -
albeit primarily due to working in the public sector - I still have six
figures in federal student loan debt. And 55 hours/week is on the low end.
Most firms require around 2100 billable hours. If you figure 50 weeks worth of
working days, that's 42 hours of real, substantive work per week, which you
have to account for in six-minute increments, plus all of your normal basic
admin and staff meeting nonsense. During busy times, we were told to aim for
as much as 300 hours/month.

There's a reason burnout is so high among lawyers at large firms.

------
js8
Maybe the whole U.S. is becoming bimodal, geographically.

I also think that the software "productivity" is in fact "multiplicative".
That is, more software written means more complexity which takes more SW
engineers to maintain. I actually think that there might be too much software.
This is similar to lawyers, who can generate more work for other lawyers
(supply generates its own demand). Weapons also have this property.

~~~
dx034
> Maybe the whole U.S. is becoming bimodal, geographically.

That's been the case for at least a century. A lot of people at the coasts
with few in the middle.

------
meuk
IMHO, the title should be fixed to mention that it is only about developer
compensation _in the USA_.

I am always surprised at the salaries in the USA. I have two bachelor degrees
and two master degrees from two well established universities, and earn about
2k euro a month (before 20% tax deduction), which is considered fairly decent
for a starter. Even then, many corporations outsource software development to
Eastern-European countries.

~~~
foo232323
Europe is far beyond the US (regarding cs saleries, I mean), but in e.g.
Germany it's not that bad. I've a masters degree and about 3 years work
experience and am at around 6k a month (+ vacation bonus +christmas bonus
+personal performance bonus +company retirement plan) which is quite average
in southern germany at least for bigger company and engineering/technical
roles.

~~~
meuk
This seems more sane IMO. The pay in the US seems just crazy. Programming an
sich is absolutely _not_ something you need an extensive training for.

On the other hand, I spent a huge amount of time and effort on my eduation.
While I could not do this without financial support from my parents, I also
made a lot of sacrifices, and I am a little bit bitter that friends who
dropped out as undergraduate make more than I do. Makes you wonder why anybody
would like to work in IT _at all_.

~~~
josephagoss
What did you study?

------
ilaksh
Whether you were aware of it or not, there have always been programmers
working for elite companies making high salaries and programmers working for
medium or small companies making average salaries as well as programmers just
getting by working for unfunded startups or online bidding or whatever they
can get.

------
SkyPuncher
Perhaps anecdotal, but my opinion is this basically comes down to two general
types of workers: those who know what competitive salary rates are and those
who don't or don't care.

The first category knows exactly what they're worth and they'll push to get
that worth. They know that if their current company won't pay that, they'll
easily find another company that will. They end up switching jobs relatively
frequently and get a raise each time.

On the flip side, you have the people that simply don't pursue higher
salaries. They tend to get a job and stick with it for a long time. They'll
take the 2 to 3% COL adjustments and an occasional promotions, but typically
they'll stay with a company for years. While they certainly could find a
better paying position, they won't. Perhaps because they like the lifestyle,
the type of work, or even unaware that other companies are paying
significantly better.

~~~
duderific
That's pretty reductionist. There are more factors that go into choosing a job
than the salary. Commute time, work life balance, perks, liking the people you
work with, quality of the work, etc. It's a balance between all these aspects
and the salary.

------
CryoLogic
In Seattle, salaries are definitely bimodal (at least from my experience over
dozens of offers from me and fellow classmates).

Many mid/small corps are paying ~75-120k base with x stock which is of course
not worth anything yet.

Most large competitive firms are paying more around 115-150 with 15-75 in
stock.

So an explicit divide between the mid/small companies and the large tech
giants exists here.

~~~
banku_brougham
are those new-graduate salaries? what experience level?

~~~
Kephael
Those look like new grad compensation packages, I believe Amazon total comp is
~145k/yr for new grad SDE1s.

------
banku_brougham
To the puzzle about developer comp outstripping EE or other engineering
disciplines pay (ie Civil Engineering god help me), I agree that the student
in those fields could apply themselves to become able programmers. So why the
huge disparity in pay?

I have two ideas:

1\. Lots of technically able people still don’t enjoy plugging their mind into
a machine. Its probably hard to believe in the HN community but many people
don’t enjoy the work, I’ve met a few. Maybe its too abstract or boring, its a
mystery to me.

2\. What multiple is the market putting on the ‘tech industry’ vs
semiconductors or mineral extraction? We can actually look that up. AMZN 220;
MSFT 69; FB 33; SOXX 4.7; XOM 25. Investors are paying more to fund the work
of programmers than most other industries.

~~~
luckydata
Engineer turned product manager here: there is way too much yak shaving
involved in bring a software engineer. Dealing with all the poorly written
libraries, unpredictable bugs and shitty APIs made me realize it wasn't
something I wanted to do 12 hours per day for the rest of my life. I enjoy the
intellectual challenge but I enjoy less figuring out which version of which
package crashes my app

~~~
kamaal
But as a programmer wanting to getting into a management role of some sort.
Lets be frank here, the true reason most people want to do is because, the pay
as a manager is just way too good, the working hours are next to nothing. And
there is a default master-slave relation ship between a manager and a
programming, despite the skill, output and intellectual value of the
programming being many orders of magnitude more superior.

~~~
ryandrake
I’ll let the parent commenter correct me but being a product manager (or
project manager) does not mean you are in a management role. I have had both
titles and never had people report me. I probably make much less as a project
manager than I could as a software engineer.

The real money appears to be in _people management_ which is tougher to break
into.

------
cimmanom
Hypothesis: there _aren 't_ two clearly differently skilled populations of
_programmers_. There _are_ two different populations of _companies_ that are
willing to pay different amounts. Lower pay being at startups and large non-
technology companies in lower-cost-of-living markets; high being at the big
prestigious tech firms, banks, and the like.

~~~
Terr_
Yeah, I'm kind of disappointed to see this interpretation so far down. Bimodal
compensation probably says more about corporations than it does about innate
skill issues.

------
adultSwim
It has long been bifurcated.

Most of us are working shlubs making a fraction of what A-list companies pay.
Among us on the B-team are some (but certainly not all) very talented
engineers.

------
jtolmar
> The most common response I’ve gotten to this post is that we should expect
> programmers to be well-paid because software is everywhere and there will be
> at least as much software in the future. [...] Yet electrical engineering
> comp isn’t in the same league as programmer comp, [...] and there are more
> processors sold than ever before.

What drives the demand for engineers isn't the number of things sold, but
rather the number of kinds of that thing. The variety of chips is still
growing, but not proportionate to chips sold, because the numbers are mostly
coming from the handful of chips used in servers and mobile devices.

> What is it about some software companies that make a similar amount of money
> that prevents them from funneling virtually all of the wealth they generate
> up to the top?

We don't have a union, so the only way a company can be punished for low
compensation is if developers leave for higher-compensation companies.
Salaries in the games industry are much lower for longer hours, because
developers are unwilling to leave the industry to go work on something boring.
I don't know the specific case with Epic Systems, but if their employees are
older (have families) they might be less willing to relocate. I also know
(being from there) that people from Wisconsin have a specific aversion to
leaving the state, and it could be that Epic is exploiting that fact.

~~~
badpun
>> The most common response I’ve gotten to this post is that we should expect
programmers to be well-paid because software is everywhere and there will be
at least as much software in the future. [...] Yet electrical engineering comp
isn’t in the same league as programmer comp, [...] and there are more
processors sold than ever before.

> What drives the demand for engineers isn't the number of things sold, but
> rather the number of kinds of that thing. The variety of chips is still
> growing, but not proportionate to chips sold, because the numbers are mostly
> coming from the handful of chips used in servers and mobile devices.

This. What matters here is not ubiquitousness of software, but rather it's
bespoke nature. Every major corporation is employing thousands of developers
(either in house or via some outsourcing arrangement) to write and maintain
software according to the company's unique needs. This is the most important
driver of demand for developers, and what differentiates us from other
technical fields.

------
coldtea
> _Another possibility is that U.S. immigration laws act as a protectionist
> barrier to prop up programmer compensation_

So, US operating as a country (an entity with citizens, which it prioritizes
other foreigners) rather than some arbitrary free-for-all geographical space?

------
eksemplar
As a manager I’d probably advice against picking programming unless you love
it. In our educational system the increase in short-length programming classes
at academy level has exploded and I doubt the market will keep up.

Really great comp science or engineering students won’t ever have a problem,
but I fully expect the short-length, autodidact or mediocre students to be
entering a saturated market within the next five years.

~~~
gaius
_As a manager I’d probably advice against picking programming unless you love
it._

That is the dirty little secret of our industry. You need to do your day job
AND on your own time, keep your skills up to date, and/or work on open source
and/or write a blog or something. There was a post on there the other day on
how keeping up to date with k8s is a full-time job in and of itself, well you
need to do that - and a bunch of others - in your free time, in the full
knowledge that what's hot today might turn out to be worthless in a year or
two.

People on the outside, even those aspiring to get in, I don't think fully
realize the commitment of those making the headline salaries in this field.
Just as you won't make it as a banker unless you LOVE making deals, so much
that you'd even do it for free...

~~~
collyw
Yes, the occasional expectation that you should have a blog to make you a
decent developer annoys me. I am pretty poor at writing and don't have a lot
to say that I want to broadcast to the world. Answering Stak Overflow
questions suits me better as a way of demonstrating that I know something.

~~~
gaius
_a way of demonstrating that I know something_

It's the expectation that you need to demonstrate it at all, is the problem.
How many lawyers sue people for fun so they can blog about it, how many
doctors do surgery at home and stream "live cutting"?

We have created a treadmill that we can't step off

~~~
intro-b
to be fair, the bimodality in the population of lawyers/doctors is an "are you
in or out" system that comes from the generally outdated and arduous graduate
credentials for these careers administered by bureaucratic boards. medical
school, law school, and so on, are all extremely costly investments of time
and capital for a shot at attaining that professional certification, and
there's generally little recourse if you continually fail.

"software developer," as a label, doesn't signal that kind of credentialing
(although something like advanced degree might), so our labor to differentiate
ourselves goes elsewhere. i don't want to imply that this isn't a problem for
our profession, but the amount of "wow we software engineers have it so
difficult" sentiment in this thread seems high

~~~
gaius
_" software developer," as a label, doesn't signal that kind of credentialing
(although something like advanced degree might)_

A degree from a well-known school and a few years at one or more prestigious
companies is an equivalent. Let's imagine a hypothetical developer who
graduated from MIT then spent 3 years at Google. He or she would be as
"credentialled" in the sense of the piece of paper opening doors as someone
who'd gone the law school route and passed the Bar. That person will pass
every resume-screen and get invited to an interview for the rest of their
careers with just those two names listed.

------
lordnacho
O-ring sounds reasonable.

Also, consider what kinds of firms hire these professionals. For almost all
professions, there are firms that do what the profession is called. There are
accountancy firms that do specialist account. There are law firms that do
specialist law. And there are software firms that make software ordinary firms
don't make. But then there are also firms that happen to have a lawyer, and
accountant, and a software developer. They might be some industry firm like a
widget manufacturer. In these firms, the professional is not quite the most
important resource. Sure, you need some, but you don't think of widget factory
as requiring the top professionals. Often you'll hear the firm considered as a
sort of lifestyle choice: less stressful than the law/accountancy/software
house. And of course if you need specialist help you'll know which external
firm to get it from.

------
vinceguidry
The article gives as a potential reason for high developer compensation the
possibility of a shortage of talent. That seems obvious to me, but the author
goes on to suggest that if there was a shortage, you'd be seeing more people
go into development.

Does this actually happen? My understanding is that skill supply is simply not
elastic in this way. Kids generally pick what to do based on their aptitude
and what they like to do, remuneration is a distant secondary concern.
Changing careers is something people only do when they absolutely have to.

It appears altogether clear to me that supply and demand explains programming
compensation perfectly, and that these dynamics aren't going to go away any
time soon, for the same reason doctor and lawyer compensation stays healthy,
lawyers less so.

~~~
southphillyman
>My understanding is that skill supply is simply not elastic in this way. Kids
generally pick what to do based on their aptitude and what they like to do,

Right. You see this in 1st year CS major attrition rates and programming
related MOOC completion rates.

------
alkonaut
Isn't part of the bimodality here just a "Silicon Valley Effect", where a few
companies in a few very expensive areas compete for talent that has to pay
ever more for housing?

If one factors out the major tech hubs and only look at e.g. any random city,
is the bimodality there too?

~~~
workthrowaway27
This is the most perceptive comment in the thread. Based on moving from NYC to
a much smaller metro area without any major tech companies I think you're
right. Compensation here is roughly half of NYC compensation. The big tech
firms are driving the high salaries.

I'm sure you'd see the same pattern if you looked at finance grads. The top
ones who went to work for investment banks, hedge funds, etc. are pulling down
large salaries, the rest are making much less working for small to medium size
companies.

------
billysielu
Developer salaries in the UK are very modest. Companies don't even know how to
identify good developers, so they have no hope of competing over them.

~~~
fahadkhan
According to www.itjobswatch.co.uk a senior Java developer earns £70k. But can
command day rate of £575. That works out at about double. Suggestion it is
bimodal.

~~~
walshemj
It contractors and engineering contractors in the UK have always been able to
demand a decent multiplier for contract work 2-3x normaly.

Though some industries (advertising publishing marketing) that formerly did
not have to consider on technical excellence and where used to relaying of
cheap Oxbridge liberal arts students with a 1st seem to want to pay temp
technical roles at straight time instead of the real contractor day rate.

------
nullc
Goods distributed as software and, to a lesser degree, online services have
phenomenal scaling leverage arising from very low marginal costs.

I can write some software publish it and in a matter of months have it
improving the lives of hundreds of millions of people.

Engineering aptitude is rare, or at least we haven't learned how to mass
produce high end engineering aptitude. It's hard to argue that any other
domain of engineering has anywhere near the kind of leverage that software
does.

Automation has also radically improved the effectiveness of top software
performers. Even a one man 'team' with a moderate level of skill can have
pretty comprehensive set of automated tests. There is design automation in
other engineering fields, of course, but it's especially potent for software
because the automation can capture basically everything and because software
engineering is also the skill needed to improve the automation itself.

Some of the bimodality may be due to binning what really is functionally
separate fields under one name. I've known people who were great at wiring up
prefabricated functions to build UIs and simple processes, but wouldn't have
constructed a novel datastructure if their lives depended on it. It's hard to
draw bright lines because there is a bit of continuum and people grow and
change... but there seem to be some pretty distinct categories out there.

------
indubitable
There seem to be a couple of major similarities between software development
and other jobs with bimodal incomes:

\- You do a job that is, in many cases, a company itself. Lawyers, doctors,
and developers can all start independent operations since the product of their
work, or the service they provide, is monetizable in and of itself.

\- There is a very significant skill gap, often driven by enthusiasm at least
as much as intelligence, that people rarely transition between.

Compare these fields against something like electrical engineering. There the
skill itself is generally a part of a product, rather than a marketable skill
in and of itself making independent work difficult. And I don't know that many
electrical engineers, but I'm unsure how big of a skill gap there is and, more
importantly, what percent of engineers manage to transition upwards in it. If
one electrical engineer is, more or less, the same as another - then you're
going to see that reflected in income distributions which I would expect look
more bell curvy weighted mostly by just years of experience.

~~~
collyw
"There is a very significant skill gap, often driven by enthusiasm"

Honestly I think its more down to experience.

I know relatively inexperienced developers chasing every new tech on the hype
train. And I know others that have been around a while and recognise the new
tech as a rehash of something from 20 years ago, with some new marketing.

(To be fair I think you need _some_ enthusiasm as well as the experience
otherwise you get the "1 year of experience ten times" developers).

------
sjg007
It's probably a function of going to a brand name school + killing the Google
style interviews. If you do that and have multiple offers you probably get the
average up. SV in general is nuts wrt to housing and rent so that's going to
steadily push things up as well. Then certain markets are winner take all so
it makes some sense to "over" pay for talent. This would create a bimodal
distribution as well. If you work as a software eng in a biotech your pay will
probably be less than at Google on average b/c the biotech has less need for a
highly qualified say distributed systems engineer. So they will accept a
different candidate out of the talent pool. Also the talent may want to work
at the biotech for reasons other intangible reasons. H1B is just a guarantee
for some employees over some term. So H1B sets the bottom of the market
really. There is no reason to work a job or somewhere that pays less than an
H1B level wage unless you've got some crazy stock options or something.

------
notacoward
It would be interesting to see if compensation is bimodal _within a market_.
There's clearly a bimodal distribution between the US and the rest of the
world, and has been for a long time. I think we're also moving toward a
bimodal distribution between the top five or ten unicorns and everyone else
even in the US. Quite simply, the companies with billions to spend are bidding
up the price of talent willing to work there, while growth for everyone else
remains slow. While the same has happened with fintech for a while, that has
remained too small to show up on graphs. MAGA/FAANG/whatever, on the other
hand, are collectively large enough to create a very visible second peak.

There are effectively two markets now. People don't expect to carry their
compensation packages from one side of that fence to the other. I should know,
since I made such a transition myself within the past year. In terms of effect
on personal income, it's not that different than changing careers.

~~~
workthrowaway27
Yep, I switched from fintech to another industry (still software development)
and took roughly a 50% paycut to do so. It let me live in a much nicer part of
the country (given my non-work interests), but I might go back since the pay
is so much more.

------
SZJX
I think the simplest explanation is that the number of jobs has been exploding
but the number of people who really know their stuffs isn't keeping up. It
takes time for any population to adjust to a new situation. Surely it's hard
to master EE etc. as well but how many companies really need EE engineers
anyways. I've been keeping explaining to others that in EE etc. many probably
get a PhD before they apply for a job in a company like Intel or maybe at
least a second-rate OEM company which truly needs somebody to design/test
their hardware, while literally every company needs somebody who can program.
The talk of "not understanding" this thing just sounds like exaggerated
posturing. I don't think there's anything very hard to grasp about it. The
situation might well change in a few years with the maturation of AI-based
program generation technologies and the saturation of population. We'll just
have to see.

Also most foreign programmers actually already have to pay a fortune (many via
their rich parents) to study in the US in the first place before they get the
OPT/visa, so they already came from rich families and it's a kind of like the
situation with lawyers/consultants/financiers where such an elitist circle
gets elitist pay as well.

------
User23
Why do companies pay so much for computer programmers? Because on average they
make a massive net profit per programmer, that's why. There aren't many other
fields where one person can increase productivity by orders of magnitude. When
was the last time a clever doctor reduced the number of nurses required to
handle a fixed number of patients by a factor of a hundred? Good developers do
this routinely!

------
deorder
In the Netherlands the average salary for a senior developer is 40.000$
(~24.000 after taxes) while the cost of living is not that much different from
the UK and US, may be except for healthcare. What exactly justifies the
difference?

~~~
gota
I'd guess this is due to the million aspects that configure that purposefully
abstract 'Quality of life' metric.

In the end, it all comes down to: why are these people, who could do it, not
moving from the Netherlands to the UK or US?

They are probably 'comfortable' in the Netherlands, whatever that means.

------
krschultz
"One possibility is that we have a shortage of programmers. If that’s the
case, you’d expect more programmers to enter the field, bringing down
compensation."

This is true. I was a mechanical engineer professionally. I moved into
software engineering, and the increase in compensation was a dominant factor.
I know several other non-CS engineers that have made the same move. While it's
not driving down compensation per-say, the difference in demand between
disciplines is startling.

------
m3kw9
Yeah there things are starting g to be filtered down to just easy and very
hard in software. Easy is when all the high level apis helping us to a lot of
work on easy tasks. The hard part is when you really want to customize it and
have many different parts work together nicely and workable. So there is a big
gap in knowledge between those 2, hence we sometimes get bimodal payments.

------
mizzao
There's a difference between a bimodal and a distribution with a long tail
(like a lognormal). The new hire distribution doesn't really give a sense of
this because there's an implicit cap to how much companies are willing to pay
new hires.

------
nojvek
I just want to say I really love how simple his site is and how fast it
loaded.

Visual aesthetic not so much but UX is amazing. I definitely want to read more
sites like this focused on simplicity of the content.

------
__bjoernd
Quite a long piece of text for that he essentially says that he doesn't have
enough data to answer the question. Also: if your article is headed with a
question, the answer usually is no.

------
doktrin
I wonder if it's possible to put a $ value on how much impostor syndrome has
benefitted employers. I suspect it's in the billions, but that's little more
than a hunch.

------
stablemap
Lots of discussion in 2016:

[https://news.ycombinator.com/item?id=12588202](https://news.ycombinator.com/item?id=12588202)

------
jcadam
Yes, this is true. At some point which I seem to be unable to identify in
retrospect, I became too expensive for about 2/3 of the market. Ah well.

------
doktrin
Oddly,this is only even potentially true in the US. The rest of the world,
including Europe, pays devs at the low end of the distribution showed here.

~~~
adventured
I was curious which countries (out of the wealthier developed economies), for
programmers, are the most out of line vs the median income for that country
(based on a full-time job median wage).

The best are the US, Denmark, Israel.

Germany has a higher median income than the UK, but the UK pays better in
programming. Sweden's median income is quite a bit higher than both Germany
and the UK, but Germany and the UK pay close to what Sweden does.

Canada is at half the rate of the US, drastically below where it should be
based on median incomes.

The worst is France by a wide margin. The average software engineer salary
there is around $38,000. Almost one third that of the US.

Switzerland pays very high (still below the US), but their median income is
extremely high.

New Zealand has a considerably lower median income these days versus
Australia, but only pays about 15% less for programmers than what Australia
does.

~~~
egman_ekki
Would be interesting to hear what data sources you used. There was an article
on bloomberg about the same metric, but it's 404 now. Seems like the data has
been used in this map, though: [http://ramiro.org/map/world/income-software-
engineers-countr...](http://ramiro.org/map/world/income-software-engineers-
countries/)

(Results are quite different to yours, but this data is 4 yrs old)

------
mr_toad
‘Another possibility is that programming is uniquely hard in some way, but
that seems implausible to me.’

Seems to be the fatal flaw in the article.

------
masen
it is could because it is easy to build your own startup in software industry
in the US without the i18n for eu.

------
akhilcacharya
How do I know which mode I’m in?

~~~
zbentley
Try to make rent in the bay area. If it's easy, you're in the right-hand mode.

~/s

------
ataturk
The reasons underlying the bi-modality are pretty clear to me. There are a
couple of major factors at play:

1) Inflation. My starting salary out of college many years ago was $35K.
Today's starting salaries are double that. Double in less than 20 years. A
$50K salary in the early 1980s is equivalent to $120K today, not controlling
for geographic location--HCOL areas are actually far worse than that. Let that
sink in as you plan for retirement. My take is that you are never going to
save enough for retirement because inflation is insidious and never sleeps.

2) The mythology of the higher salary range. How do developers get past that
second mode? They start their own company! Only a few rarified corporate
people and independent consultants can pull down pay in the 200s. Again, I'm
not thinking about SV where the pay is so skewed due to the HCOL. So everyone
else works a number of years and ends up in the 120s-150s and they _think_
they are doing great, but they really aren't (me included) due to #1.

Any way you look at doing software development as a career you come to see
that it stinks. I'm not going to recommend it to my kids. I think it's
important to know how computers work and how code works and not to be afraid
of tinkering with those things or coming to believe that you have no control
over it, but as a business, it's nasty and getting nastier.

~~~
Kephael
> Only a few rarified corporate people and independent consultants can pull
> down pay in the 200s

New grads at Facebook who received a return offer as an intern get a bit over
200k/yr total comp. to start.

> Any way you look at doing software development as a career you come to see
> that it stinks.

I don't see how being able to make several hundred thousand dollars a year
with a few years of experience while working at a major company in a safe and
clean environment is a bad choice.

------
xstartup
1\. You do not need a degree - This puts more pressure on the developers who
are employed, now they've to face pressure from uncredentialed people who for
some reason fell in love with the software craft. So, quite a lot of people
feel inadequate and practice relentlessly to keep their skills sharp,
improving visibility. Some are practicing DS/Algo daily while contributing to
opensource, improving their GitHub. Boosting productivity, driving up revenue.

2\. Taught the wrong way - The CS degree way is bad outside of a few key
institutions. Everything which is taught sounds too abstract and complex. It's
simply not taught well.

The candidates from those key institutions will not take a low ball offer,
they'll prefer being unemployed or going into business chasing their dreams.
Most are from well off background. This keeps supply low.

3\. Greenfield - After working at a software compare, you'll realize that
making a new small business around software is not that hard. Afterall, the
dumb people who give you requirements are doing it, how difficult can it be?
So, after gaining bit some expertise, you are able to set yourself free. I
don't think this is possible in other professions without taking a massive hit
in compensation. With my new companies, I am always confident that we'll be
100% successful. I wouldn't have gone to pursue it if I didn't believe success
was evident. Lots of smart folks leave for their dream, leaving non-experts in
the workforce. So, the money is chasing very small pool of candidates.

4\. Robbers - After working at the small business, you'll quickly realize that
skill matter much less in business. To make a ton of money, you'll have to be
at the right place and at the right time, yea getting to that place does
require some skill. You'll find some guys have found a way to convince
millions of users to upload their pics on your website and you can sell their
data to advertisers making tons of money in the process. This is all new and
regulators have no idea what to do, there are no rules - so you rig auction in
your favor, yet winning more money from advertisers.

There is potential to do lot more evil in CS.

There are some companies who have built massive leverage. If you do not work
for them, you'll simply do not earn much regardless of your skills.

5\. Hire more coders what whatever cost - Once startup is growing is growing,
you'll find that you need to exploit faster and simplest way to to do is
leverage opensource, existing vendors, investment etc... You've no time to
reinvent the wheel, the reservoir of nearly infinite free money will not wait
for you. So, you'll hire plenty of smart coders at whatever price, you'll use
wizard level DS/Algo questions and experience in gluing tons of different
opensource technology/vendors etc... If still there are some holes, no
problem, contracting someone is the last resort.

Here is the biggest cost alone is time. So, companies are willing to bet as
high as possible or risk being unseated.

6\. Fast nearly free exponential distribution, creating a copy of iPhone still
need some labor, distributing same software to 100K people need much less
effort. The software scales faster. We design a system to scale 10x by
default. How many other manufacturing plants can scale 10x?

6\. Leverage ecosystem - Opensource technology/Vendors/Investors/ and internet
is the fastest medium to advertise.

The biggest thing -> Lack of regulation. No, one is verifying your code to
make sure that it's not doing anything evil or not extracting something from a
user which you didn't have a permit for.

~~~
e_b
>Fast nearly free exponential distribution

Just because you make an app and publish it to the App Store doesn't mean that
it is "distributed" to anyone at all. There are massive costs to marketing
apps because apps are commodities.

