I teach computer science at a well-known, large and mediocre university.
I see bimodal grade distributions all the time. The more technical a subject, the more bimodal the grades.
In fluff subjects like software engineering where grading relates to essay writing and group projects, grade distribution tends to be gaussian.
OTOH in technical subjects where I grade by automated test suits, basically students fail almost all tests or pass almost all tests.
These grade distributions have been constant, regardless of university, regardless of who teaches the course.
There really is a sharp threshold that separates those who get programming from those who don't. And those who get programming really are a lot more productive than those who don't get it. Moreover, once you get it, learning further parts of CS (e.g. new algorithms, new programming languages, new OSes etc) is much easier then if you don't get it, and learning new things makes you even more powerful. The mastery of doing great things is joyful and makes you want to learn more. The frustration of failure drives you away from the subject.
I find it plausible that grade distributions turn into similar income distributions later in life.
I've held this basic theory for a while, and it seems to explain a lot of things about the state of software engineering.
Most visibly, there's a wild disagreement about whether we have too many programmers, or not enough. Big tech companies consistently say that they struggle to find programmers, while contrarians at places like The Atlantic love writing pieces about how we're education way more programmers than we hire each year, and the bubble is going to burst.
The ultra-cynical take is that companies are trying to drive a crash to drop salaries. It fits with the wage-fixing collusion, but doesn't really explain things like paying massive referral bonuses for new hires.
The more interesting take is that it's about this bimodal distribution. "A degree in computer science" is a pretty amorphous thing, and thinkpiece writers who assume that every CS program produces employable CS-job-seekers aren't going to get decent data.
So I think the explanation might be that CS isn't harder than EE or chemical engineering, but rather less prescriptive. There's a huge range of programs producing "CS degrees", and jobs titled "software engineering", and they're not really describing the same things.
I don't think the conclusion follows from the data. It's not implausible that in computer science you need to "get" a whole bunch of things before it clicks and you start being productive, and a bimodal distribution of grades would then be indicative only of people who are further along in the learning process vs. those that have not yet reached that critical point, rather than any huge difference in intrinsic ability. This is just speculation, of course, but so is any other explanation and I prefer giving people the benefit of the doubt.
I had the same experience for the 3 years I was teaching assistant. Some people "clicked" very early and some didn't, but it's not set in stone. I've seen people succeed with only hard work and motivation. Once you've unlocked yourself there is not much differences between you and the ones who have unlocked themselves earlier.
I have a theory where the bimodal distributions comes from two sets of people: one set focused only passing the course/assignment/test, the other set focused on actually knowing the content. Appearance and substance.
> In fluff subjects like software engineering where grading relates to essay writing and group projects
How is SE a "fluff subject?" Why are they writing essays? When I took SE we had individual programming projects and a group project to write a compiler. Not fluff at all.
I suspect the bimodal distribution for programming and law have the same explanation: a group of highly profitable firms targeting a subset of the overall industry have imposed a de facto hiring floor that limits supply, raising wages.[1]
Why is Cravath raising salaries while 85% of legal grads are taking jobs making half or less of its old salary scale? Because it has a hiring floor. It won't hire lawyers that aren't at least one standard deviation, if not more, from the mean.[2] Their demand is high--each lawyer generates on average $1.3 million in revenue--and supply is limited to the 10-15% of the market that meets the hiring filter.
I suspect the same is true in the tech industry. Google, Facebook, etc. don't hire candidates who can "do the job." Like in law, there is this idea that it's important not just to have competent programmers, but programmers who are smarter than your competitors' programmers. These firms limit their pool of hires to those who, by their metrics, are one or even two standard deviations away from the mean.[3]
Meanwhile, everyone else is willing to hire the median programmer. They can do the job, and there isn't the same idea in that segment that it's worth paying much more to have people who can not only do the job, but do it faster/better than your competition.
[1] How this group of highly profitable firms continues to exist despite market competition is outside the scope of this post.
[2] Cravath measures that as a function of law school rank and class rank. No comment on the validity of this model.
[3] Again, no comment on whether going to CMU and acing interview puzzles makes you a top programmer. What matters is that these firms think it does.
If there's a pronounced bimodal distribution, it seems like the biggest driver of it would be the lumping of various programmer specialties into one giant bucket. It seems like the 2 sub-buckets would be:
1) $100k or less: backoffice programmers where software itself is not the product sold. Also known as enterprisey/LOB/CRUD developers working outside Silicon Valley. (E.g. programmer working on mortgage servicing software for a bank in Kansas earning $80k salary.)
2) $150k or greater: programmers for a "tech" company in Silicon Valley. (e.g. the programmers at Apple/Facebook/Google earning $150k+)
If you combine those 2 groups nationwide, you'd end up with 2 humps in your graph.
I really think it's location, location, location, not necessarily whether or not the software is the product.
I've worked for consulting companies, product companies, and right now I work for a sort-of back-office organization. The best I've been able to do, despite several years of experience, good references, inside connections, a graduate degree, and being pretty (I think, anyway) personable is...75k. And I don't know anyone doing much better unless they moved to SV or NYC.
My long-term plan is to see if somehow I can find the time to find a side-project or contribute to something open source, so my ability is out there and highly visible to anyone considering me, but that is going to be very difficult for where I am now. I'd love to make low six figures, it seems difficult to believe even in SV there are new grads making 150k, and it's frustrating to me because I know I perform at the level of people making that much money.
EDIT: In case anyone was curious, new grads hired for development in my area of the US get paid from about 35-45k.
You're the first person in this thread who I think has an ounce of reality about this situation. I looked at this article, saw the proposed income distribution, and immediately realized whoever was writing the article doesn't have any awareness of what things are like outside of the largest urban tech centers.
Isn't that pretty much the O-ring model from the article?
There are companies which value software engineering and those that don't. Eventually all the good developers migrate towards the former (where they are paid well) and the bad developers are stuck in the latter (where they are paid poorly).
I definitely think the bimodal distribution is between firms, not within them. That being said, it's not as simple as geography or sector. There are plenty of remote gigs which will pay 6 figures, and there are plenty of non-tech companies which value software enough to pay $150k+. And there are, amazingly, some "tech" companies who still pay relatively poorly.
The most important thing to remember about developer compensation, especially when comparing to more "traditional" roles, is scale.
A programmer working at a large internet company may be impacting millions upon millions of people.
Building a feature that lets you collect (or save) a penny from a user every month is worth $240K a year when spread out over 2 million users.
$120M when spread out over 1 billion users.
That's really my answer to the common question at the end of the post:
"I don’t understand this at all and would love to hear a compelling theory for why programming “should” pay more than other similar fields, or why it should pay as much as fields that have much higher barriers to entry."
Funny thing that I was having a discussion with one of my friend who is in the middle of salary negotiation. The company is pushing him hard to accept the offer well below than his expectations and he was expecting more hike as he was relocating to bay area. He was quite disappointed that he didn't get the salary figure he was expecting but still wanted to accept the offer as he didn't want to loose the opportunity. We discussed at length about how the salaries in software ended up like this. Why are they not transparent like finance guys, lawyers, doctors etc. This is also the standard structure across the world for all software industries irrespective of the country. The salaries are not transparent and the developers are kept in dark.
How did we end up like this? Is it not a bad thing for the company that employees are demotivated when their pay sucks? I feel it is a very basic thing. To make more profits you need to build better products and sell better. How much can you save on operating costs by paying employees less?
I feel the companies & HR needs to modernize itself. There was a time, you could get away by paying a particular employee less and he may never find out. This is an Information age!! Information freely flows. There are many sites like Glassdoor, Paysa where people can go and find out more about salaries that you are paying to your employees. It is no longer a well kept secret. What is required here is that companies and HR's understand this and make salaries open and relevant to the value produced/added to the company.
Since the early managers probably didn't understand the dynamics they went with what they could do best at their time. I feel this model of negotiating a salary based on previous salary should be deprecated. It should be replaced with a more open model.
It doesn't hurt much to know that the next guy is getting paid more than me, if that guy truly deserves it and produces much better code or is adding more value to the company than me. What hurts more is that to know that the company values the other guy more and pays him more just because he is straight out of college or gets lucky at salary negotiation.
I think it is time Developers & Engineers talk more freely about their salary.
Does anybody else think the salaries are a little high? Perhaps the sample size is skewed? I'm somewhat senior in software engineering, but I literally don't know a single person making over 200k. Nada. Not one. I also don't know any college grads who started making 150k. That seems absurd, unless you're only looking at certain companies and top performers or something.
I do know two people making over 200 k$/yr in base salary as pure programmers. They're very good at their jobs (Interestingly, as far as I can tell, neither of them are "brilliant" technically, merely "good". They just combine that with incredible work efficacy and solid communication skills.)
That said, I know bunches who will make over 200 k$ in total liquid comp this year. And before you pooh-pooh the equity part, if you've been at a public company for more than a year, equity's pretty much the same as cash (albeit a slightly unpredictable quantity thereof.)
Where do you live? The numbers you are mentioning sound sound very realistic in the Bay Area, if you are talking about total compensation (salary + bonus + equity).
I'm going to be pretty upset if these salaries aren't at least a little high, because I'm nowhere near that even after 25 years experience and a master's degree.
> Programming also doesn’t have a licensing body limiting the number of programers,
> nor is there the same prestige filter where you have to go to a top school to
> get a well paying job.
This is my favorite quote from this article. I went to a great school and even though it wasn't Berkley, Stanford, MIT, or CMU, that qualification has never limited my ability to get great opportunities.
While it's true that a prestigious degree is not strictly necessary for obtaining a good job, in my experience, it helps a lot in getting your resume nearer the top of the stack for those job openings.
However, there are reasons for this. It's quite difficult to gain admission to a top law school, but the people who apply tend to come from very low attrition majors like history or literature. Furthermore, attrition rates from elite law schools are vanishingly low - less than one half of one percent. Lastly, interviews in law firms are actually interviews, not a series of oral exams.
You don't need a degree to be a programmer, but it helps. Think about what you had to go through to get that degree. The curriculum is relatively standard and is highly rigorous at all "reputable" schools - and by that, I don't mean elite, I just mean real CS departments. Attrition rates for CS majors is very high. At the graduate level, attrition rates remain quite high - PhD programs have an attrition rate of 35%-50%, depending on the field - and that is true of elite programs. Athough MS attrition rates are lower and I've found less data on them, what I did find suggested about 30% - and keep in mind, you have to make it through a high attrition major to apply.
On to interviews. I actually did go to Berkeley for an MS, though not in CS (I did the MS in IEOR and as a cs-ish math major for undergrad), and maybe that was instrumental in getting an interview at Google, but it sure didn't exempt me from the same technical grilling everyone else goes through! It was about 5 hours of what I considered to be genuinely difficult whiteboard exams. I actually felt OK (not great) about my performance, though it was ultimately a no-hire.
This is why I don't agree that programming has a low barrier of entry, especially if we're going to talk about a bimodal distribution. Where you went to school is less important, but that's because getting through is so difficult - we don't have these vanishingly low attrition rates in our field, even at elite programs. And the interview process is very, very difficult.
Great analysis from this post, and very interesting data, but I think it does miss the mark when discussing why programmers are well paid at the elite level. The claim that "U.S. immigration laws act as a protectionistic barrier to prop up programmer compensation" is indisputably true, but I don't think it explains much - if this is true for programmers in the US, it's just as true for every other field. In fact, it may be the reverse - programming does have the H1B visa, so if anything I'd say programming is subjected to a higher level of international competition for jobs located in the US than other fields that require "current right to live and work in the US".
Ultimately, I think people confuse the absence of formal barriers backed with the force of law with the absence of barriers in general. Considering what I went through to get my degrees (in high attrition rate fields), and the kind of problem solving, math, programming chops, poise under pressure, and presentation ability it takes to get through google-style interviews - you know, I really don't think we face considerably lower barriers to entry than law. Different, more porous in many ways, more fluid. In law, you must (in general) attend a law school, whereas in programming, there are multiple paths toward getting that knowledge and those top jobs. But it's actually not at all easy to break into the elite level of this field. I'd say barriers to entry are actually quite high.
Developer compensation is high because developers produce more valuable work, and in the short term the labor market isn't that efficient. People don't make very efficient initial choices of career, and their initial choices are fairly sticky.
In the middle of a gold rush, how does it happen that people change their plans, and go out and mine the gold, sell the pick-axes etc? Dropping your plans generally sucks. All else being equal, you'd rather not. And you probably know less about the opportunity than the one you're pursuing. Because not everyone is going to drop everything and go mine gold, if the gold mining is profitable, the people who do pursue the opportunity are going to do very well. And that'll continue to be true for a long time — because people just don't respond to these opportunities that efficiently.
As a comparison: in Australia during the mining boom, the salaries available for work in the mining industry compared very favourably to other industries. And yet I knew lots of smart high-school grads starting degrees in fields like chemical engineering, aerospace engineering, computer engineering...Smart kids would eagerly enroll to study fields where there was no industry to speak of in Australia; even though a lot of them weren't planning to move overseas. In the meantime, salaries for mining-related fields were sky high.
My hand-wavey, empathic read on this is that following price signals into a field you don't have a particular affinity for feels somehow wrong. I think smart kids are very vulnerable to this sensation. They feel like simply going into the high-paying field is somehow too "obvious". It's an affront to their sense of individuality. I think the small/large company thing is in part a similar effect.
The discussion about bimodal pay distribution is interesting, but I think there's a much more parsimonious explanation to it. Most of the companies that are going to be paying software developers $150k+ are based in or around SV, where rent is abnormally high.
But what's even more interesting to me is another question the author discusses halfway through the article:
> How is it possible that programmers are paid so well without these other barriers to entry that similarly remunerative fields have?
The author posits three hypotheses: 1) supply of programmers is naturally low, 2) immigration laws keep the supply artificially low, and 3) the overall relative efficiency of American companies create a productivity force multiplier for everyone at the company, including programmers.
I want to introduce a fourth hypothesis, which is that programming skills are highly commoditized, which causes demand for those skills to increase.
If I work for OmniCorp using 100% proprietary OmniCorp technologies, they have no reason to pay me more than the bare minimum because I'm effectively married to them. If I work for OpenCorp on a 100% open-source stack, then the buzzwords listed on my resume prove I can be productive at thousands of other companies, giving them all incentive to compete for me.
But isn't OmniCorp married to their devs too? Those devs probably took a while to get up to speed on the proprietary stack, and outside devs would have a ramp up time. Not to mention outside devs would be hesitant to take the job seeing as they'd get stuck learning proprietary technology making them less mobile.
The assortive matching is very real, but whether that's related to salaries is another matter. I live in a far smaller tech market than the valley, and it's plain as day. We might have about 20 large employers that use the JVM. Out of those, it's so easy to see the good from the bad that many of the good places are skeptical about even giving an interview to someone working in one of the bad ones without a reference. Interestingly, places can transform by altering the way they hire and who they retain: I have worked for a place that was known as a terrible place to be, and changed their fate by building a very good interview process and laying off the weakest side of their staff.
I remember doing the climb from the bottom myself: Few places hired new grads, but the ones that did hired pretty much everyone. it only took a few weeks for teams to realize who knew how to program and who didn't: inter team communication quickly became a network of the people that could get things done. Eventually, as people came in and left, the high performers started taking other high performers with them to better companies, where similar sorting happened again, but with a higher floor.
What I have seen instead of big salary differences is that the best firms have better management and treat developers better: Given that outside of consulting, the market has relatively well defined maximums, the good developers congregate in places where the work is more rewarding and doesn't put high tolls on peoples' lives.
In the valley there are companies that get so much more value out of developers that they can pay more, but even that has a ceiling, and when we get to that ceiling, being good companies to work for becomes the next differentiatior.
Being a physician or attorney confers additional compensation in the form of social status and prestige which I think it's fair to say we don't get by virtue of working on code. I also think that as a general rule there is a fairly small percentage of people who like programming, and can sit in front of a computer and focus on code for hours at a time and consider that a fulfilling way to make a living. I doubt that percentage is ever going to be much higher than it is now.
Social status and prestige is all in our minds. You can code and be very respected in society if you act that way. The problem is that the type of work attracts (filters?) for introverted behavior. The folks that aren't going out and being flashy.
You can find salaries data by looking at Swedish IRS, the numbers are public, but may not be in digital form/easy API yet.
But you can order a catalogue from a redistributor, containing every persons income from work and income from capital and taxes payed, for previous year. Would not take much to scan it and analyze.
FTA: "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 imo a big part of why high-end salaries have skyrocketed, but the author's reasoning is total "let them eat cake."
It's not that there's a shortage of programmers overall. There are lots of programmers working non-industry jobs for relatively piddly salaries who would leap at the opportunity to double or triple their compensation at a big name tech company - if they were qualified to do so.
The problem is that there's a shortage of people who have the aptitude and skills to work in a big tech company with very high expectations for even their entry-level engineers. I don't doubt that there are intangibles at play: soft skills, "cultural fit" biases, to a lesser extent academic pedigree, but none of that trumps needing to be an actual honest-to-goodness engineer, rather than a "programmer".
Plenty of other pieces (citation needed) have been written about the growing chasm between the two classifications of development jobs - engineers who can create software, vs. programmers who can write code - and I think the salary differences are just an aspect of that.
My working hypothesis is that there's more programmers in the "very good" bucket that don't care all that much about monetary compensation than in other domains. As long as a certain X that is deemed fair is reached they are way more interested in interesting problems/an opportunity to learn new things/access to hardware or data they couldn't otherwise get etc.
Or in other words, (good) programmers care a lot more about motivating factors than hygiene factors than other employees.
I have no data to back this up, only a gut feeling.
I work for a large, well-known tech company and they just re-titled all of their front-end engineers to "Software Engineer" (probably to stop creating a pay divide between front-end and back-end engineers). If you have a "Software Engineer" doing basic wordpress stuff, another "Software Engineer" doing PHP/Zend framework stuff, another doing pure JS/React/Angular stuff, and another doing backend services (concurrency/spring boot/API, etc) - the pay scales of all these "Software Engineers" should be different.
Having been in the hiring and compensation path at a few companies both north and south of the boarder, this seems to only apply to the US, and in particular silicon valley.
Up in Canada, the compensation seems to be more of a normal distribution.
[+] [-] mafribe|9 years ago|reply
I see bimodal grade distributions all the time. The more technical a subject, the more bimodal the grades.
In fluff subjects like software engineering where grading relates to essay writing and group projects, grade distribution tends to be gaussian. OTOH in technical subjects where I grade by automated test suits, basically students fail almost all tests or pass almost all tests.
These grade distributions have been constant, regardless of university, regardless of who teaches the course.
There really is a sharp threshold that separates those who get programming from those who don't. And those who get programming really are a lot more productive than those who don't get it. Moreover, once you get it, learning further parts of CS (e.g. new algorithms, new programming languages, new OSes etc) is much easier then if you don't get it, and learning new things makes you even more powerful. The mastery of doing great things is joyful and makes you want to learn more. The frustration of failure drives you away from the subject.
I find it plausible that grade distributions turn into similar income distributions later in life.
[+] [-] Bartweiss|9 years ago|reply
Most visibly, there's a wild disagreement about whether we have too many programmers, or not enough. Big tech companies consistently say that they struggle to find programmers, while contrarians at places like The Atlantic love writing pieces about how we're education way more programmers than we hire each year, and the bubble is going to burst.
The ultra-cynical take is that companies are trying to drive a crash to drop salaries. It fits with the wage-fixing collusion, but doesn't really explain things like paying massive referral bonuses for new hires.
The more interesting take is that it's about this bimodal distribution. "A degree in computer science" is a pretty amorphous thing, and thinkpiece writers who assume that every CS program produces employable CS-job-seekers aren't going to get decent data.
So I think the explanation might be that CS isn't harder than EE or chemical engineering, but rather less prescriptive. There's a huge range of programs producing "CS degrees", and jobs titled "software engineering", and they're not really describing the same things.
[+] [-] stdbrouw|9 years ago|reply
[+] [-] lucasnemeth|9 years ago|reply
[+] [-] Fiahil|9 years ago|reply
[+] [-] deanCommie|9 years ago|reply
If everyone (roughly) either fails programming, or aces it, then the working professionals are the ones who passed AND excelled.
[+] [-] meric|9 years ago|reply
[+] [-] Alex3917|9 years ago|reply
Given that the people earning the most money aren't necessarily the ones with the most technical ability, why would this be the case?
[+] [-] driverdan|9 years ago|reply
How is SE a "fluff subject?" Why are they writing essays? When I took SE we had individual programming projects and a group project to write a compiler. Not fluff at all.
[+] [-] gotchange|9 years ago|reply
I am not really buying that this is some kind of a reflection of a natural or deterministic phenomenon.
[+] [-] jackmott|9 years ago|reply
[+] [-] rayiner|9 years ago|reply
Why is Cravath raising salaries while 85% of legal grads are taking jobs making half or less of its old salary scale? Because it has a hiring floor. It won't hire lawyers that aren't at least one standard deviation, if not more, from the mean.[2] Their demand is high--each lawyer generates on average $1.3 million in revenue--and supply is limited to the 10-15% of the market that meets the hiring filter.
I suspect the same is true in the tech industry. Google, Facebook, etc. don't hire candidates who can "do the job." Like in law, there is this idea that it's important not just to have competent programmers, but programmers who are smarter than your competitors' programmers. These firms limit their pool of hires to those who, by their metrics, are one or even two standard deviations away from the mean.[3]
Meanwhile, everyone else is willing to hire the median programmer. They can do the job, and there isn't the same idea in that segment that it's worth paying much more to have people who can not only do the job, but do it faster/better than your competition.
[1] How this group of highly profitable firms continues to exist despite market competition is outside the scope of this post.
[2] Cravath measures that as a function of law school rank and class rank. No comment on the validity of this model.
[3] Again, no comment on whether going to CMU and acing interview puzzles makes you a top programmer. What matters is that these firms think it does.
[+] [-] jasode|9 years ago|reply
1) $100k or less: backoffice programmers where software itself is not the product sold. Also known as enterprisey/LOB/CRUD developers working outside Silicon Valley. (E.g. programmer working on mortgage servicing software for a bank in Kansas earning $80k salary.)
2) $150k or greater: programmers for a "tech" company in Silicon Valley. (e.g. the programmers at Apple/Facebook/Google earning $150k+)
If you combine those 2 groups nationwide, you'd end up with 2 humps in your graph.
[+] [-] pmorici|9 years ago|reply
https://www.wolframalpha.com/input/?i=$80000+salary+Kansas+C...
[+] [-] Amezarak|9 years ago|reply
I've worked for consulting companies, product companies, and right now I work for a sort-of back-office organization. The best I've been able to do, despite several years of experience, good references, inside connections, a graduate degree, and being pretty (I think, anyway) personable is...75k. And I don't know anyone doing much better unless they moved to SV or NYC.
My long-term plan is to see if somehow I can find the time to find a side-project or contribute to something open source, so my ability is out there and highly visible to anyone considering me, but that is going to be very difficult for where I am now. I'd love to make low six figures, it seems difficult to believe even in SV there are new grads making 150k, and it's frustrating to me because I know I perform at the level of people making that much money.
EDIT: In case anyone was curious, new grads hired for development in my area of the US get paid from about 35-45k.
[+] [-] Glyptodon|9 years ago|reply
[+] [-] morgante|9 years ago|reply
There are companies which value software engineering and those that don't. Eventually all the good developers migrate towards the former (where they are paid well) and the bad developers are stuck in the latter (where they are paid poorly).
I definitely think the bimodal distribution is between firms, not within them. That being said, it's not as simple as geography or sector. There are plenty of remote gigs which will pay 6 figures, and there are plenty of non-tech companies which value software enough to pay $150k+. And there are, amazingly, some "tech" companies who still pay relatively poorly.
[+] [-] vonmoltke|9 years ago|reply
[+] [-] wodenokoto|9 years ago|reply
[+] [-] ffjffsfr|9 years ago|reply
> this is from about 100 data points, members of the “Hackathon Hackers” Facebook group, in 2015.
What's the point of analyzing data from such narrow and unusual sample?
RE: how to get data about programmers salaries, I'd say try to check job postings, they usually say how much company offers.
[+] [-] dkopi|9 years ago|reply
A programmer working at a large internet company may be impacting millions upon millions of people. Building a feature that lets you collect (or save) a penny from a user every month is worth $240K a year when spread out over 2 million users. $120M when spread out over 1 billion users.
That's really my answer to the common question at the end of the post: "I don’t understand this at all and would love to hear a compelling theory for why programming “should” pay more than other similar fields, or why it should pay as much as fields that have much higher barriers to entry."
[+] [-] rajeshp1986|9 years ago|reply
How did we end up like this? Is it not a bad thing for the company that employees are demotivated when their pay sucks? I feel it is a very basic thing. To make more profits you need to build better products and sell better. How much can you save on operating costs by paying employees less?
I feel the companies & HR needs to modernize itself. There was a time, you could get away by paying a particular employee less and he may never find out. This is an Information age!! Information freely flows. There are many sites like Glassdoor, Paysa where people can go and find out more about salaries that you are paying to your employees. It is no longer a well kept secret. What is required here is that companies and HR's understand this and make salaries open and relevant to the value produced/added to the company.
Since the early managers probably didn't understand the dynamics they went with what they could do best at their time. I feel this model of negotiating a salary based on previous salary should be deprecated. It should be replaced with a more open model.
It doesn't hurt much to know that the next guy is getting paid more than me, if that guy truly deserves it and produces much better code or is adding more value to the company than me. What hurts more is that to know that the company values the other guy more and pays him more just because he is straight out of college or gets lucky at salary negotiation.
I think it is time Developers & Engineers talk more freely about their salary.
[+] [-] asdf742|9 years ago|reply
[+] [-] Bahamut|9 years ago|reply
I think that is the point of the article commenting on the bimodal distribution of salaries.
[+] [-] akavi|9 years ago|reply
That said, I know bunches who will make over 200 k$ in total liquid comp this year. And before you pooh-pooh the equity part, if you've been at a public company for more than a year, equity's pretty much the same as cash (albeit a slightly unpredictable quantity thereof.)
[+] [-] surfmike|9 years ago|reply
[+] [-] curryhoward|9 years ago|reply
The numbers for programmers are total compensation, not just salary. The lawyer figures are actually salaries though.
[+] [-] humanrebar|9 years ago|reply
[+] [-] thesimpsons1022|9 years ago|reply
[+] [-] TulliusCicero|9 years ago|reply
[+] [-] clifanatic|9 years ago|reply
[+] [-] joeblau|9 years ago|reply
[+] [-] phd514|9 years ago|reply
[+] [-] clifanatic|9 years ago|reply
That you know of.
[+] [-] geebee|9 years ago|reply
However, there are reasons for this. It's quite difficult to gain admission to a top law school, but the people who apply tend to come from very low attrition majors like history or literature. Furthermore, attrition rates from elite law schools are vanishingly low - less than one half of one percent. Lastly, interviews in law firms are actually interviews, not a series of oral exams.
You don't need a degree to be a programmer, but it helps. Think about what you had to go through to get that degree. The curriculum is relatively standard and is highly rigorous at all "reputable" schools - and by that, I don't mean elite, I just mean real CS departments. Attrition rates for CS majors is very high. At the graduate level, attrition rates remain quite high - PhD programs have an attrition rate of 35%-50%, depending on the field - and that is true of elite programs. Athough MS attrition rates are lower and I've found less data on them, what I did find suggested about 30% - and keep in mind, you have to make it through a high attrition major to apply.
On to interviews. I actually did go to Berkeley for an MS, though not in CS (I did the MS in IEOR and as a cs-ish math major for undergrad), and maybe that was instrumental in getting an interview at Google, but it sure didn't exempt me from the same technical grilling everyone else goes through! It was about 5 hours of what I considered to be genuinely difficult whiteboard exams. I actually felt OK (not great) about my performance, though it was ultimately a no-hire.
This is why I don't agree that programming has a low barrier of entry, especially if we're going to talk about a bimodal distribution. Where you went to school is less important, but that's because getting through is so difficult - we don't have these vanishingly low attrition rates in our field, even at elite programs. And the interview process is very, very difficult.
Great analysis from this post, and very interesting data, but I think it does miss the mark when discussing why programmers are well paid at the elite level. The claim that "U.S. immigration laws act as a protectionistic barrier to prop up programmer compensation" is indisputably true, but I don't think it explains much - if this is true for programmers in the US, it's just as true for every other field. In fact, it may be the reverse - programming does have the H1B visa, so if anything I'd say programming is subjected to a higher level of international competition for jobs located in the US than other fields that require "current right to live and work in the US".
Ultimately, I think people confuse the absence of formal barriers backed with the force of law with the absence of barriers in general. Considering what I went through to get my degrees (in high attrition rate fields), and the kind of problem solving, math, programming chops, poise under pressure, and presentation ability it takes to get through google-style interviews - you know, I really don't think we face considerably lower barriers to entry than law. Different, more porous in many ways, more fluid. In law, you must (in general) attend a law school, whereas in programming, there are multiple paths toward getting that knowledge and those top jobs. But it's actually not at all easy to break into the elite level of this field. I'd say barriers to entry are actually quite high.
[+] [-] syllogism|9 years ago|reply
In the middle of a gold rush, how does it happen that people change their plans, and go out and mine the gold, sell the pick-axes etc? Dropping your plans generally sucks. All else being equal, you'd rather not. And you probably know less about the opportunity than the one you're pursuing. Because not everyone is going to drop everything and go mine gold, if the gold mining is profitable, the people who do pursue the opportunity are going to do very well. And that'll continue to be true for a long time — because people just don't respond to these opportunities that efficiently.
As a comparison: in Australia during the mining boom, the salaries available for work in the mining industry compared very favourably to other industries. And yet I knew lots of smart high-school grads starting degrees in fields like chemical engineering, aerospace engineering, computer engineering...Smart kids would eagerly enroll to study fields where there was no industry to speak of in Australia; even though a lot of them weren't planning to move overseas. In the meantime, salaries for mining-related fields were sky high.
My hand-wavey, empathic read on this is that following price signals into a field you don't have a particular affinity for feels somehow wrong. I think smart kids are very vulnerable to this sensation. They feel like simply going into the high-paying field is somehow too "obvious". It's an affront to their sense of individuality. I think the small/large company thing is in part a similar effect.
[+] [-] tboyd47|9 years ago|reply
But what's even more interesting to me is another question the author discusses halfway through the article:
> How is it possible that programmers are paid so well without these other barriers to entry that similarly remunerative fields have?
The author posits three hypotheses: 1) supply of programmers is naturally low, 2) immigration laws keep the supply artificially low, and 3) the overall relative efficiency of American companies create a productivity force multiplier for everyone at the company, including programmers.
I want to introduce a fourth hypothesis, which is that programming skills are highly commoditized, which causes demand for those skills to increase.
If I work for OmniCorp using 100% proprietary OmniCorp technologies, they have no reason to pay me more than the bare minimum because I'm effectively married to them. If I work for OpenCorp on a 100% open-source stack, then the buzzwords listed on my resume prove I can be productive at thousands of other companies, giving them all incentive to compete for me.
[+] [-] city41|9 years ago|reply
[+] [-] hibikir|9 years ago|reply
I remember doing the climb from the bottom myself: Few places hired new grads, but the ones that did hired pretty much everyone. it only took a few weeks for teams to realize who knew how to program and who didn't: inter team communication quickly became a network of the people that could get things done. Eventually, as people came in and left, the high performers started taking other high performers with them to better companies, where similar sorting happened again, but with a higher floor.
What I have seen instead of big salary differences is that the best firms have better management and treat developers better: Given that outside of consulting, the market has relatively well defined maximums, the good developers congregate in places where the work is more rewarding and doesn't put high tolls on peoples' lives.
In the valley there are companies that get so much more value out of developers that they can pay more, but even that has a ceiling, and when we get to that ceiling, being good companies to work for becomes the next differentiatior.
[+] [-] markbnj|9 years ago|reply
[+] [-] morenoh149|9 years ago|reply
[+] [-] ryuker16|9 years ago|reply
Plenty of broke ass lawyers running around like Better Call Saul.
[+] [-] antocv|9 years ago|reply
But you can order a catalogue from a redistributor, containing every persons income from work and income from capital and taxes payed, for previous year. Would not take much to scan it and analyze.
[+] [-] SloopJon|9 years ago|reply
[+] [-] AStellersSeaCow|9 years ago|reply
This is imo a big part of why high-end salaries have skyrocketed, but the author's reasoning is total "let them eat cake."
It's not that there's a shortage of programmers overall. There are lots of programmers working non-industry jobs for relatively piddly salaries who would leap at the opportunity to double or triple their compensation at a big name tech company - if they were qualified to do so.
The problem is that there's a shortage of people who have the aptitude and skills to work in a big tech company with very high expectations for even their entry-level engineers. I don't doubt that there are intangibles at play: soft skills, "cultural fit" biases, to a lesser extent academic pedigree, but none of that trumps needing to be an actual honest-to-goodness engineer, rather than a "programmer".
Plenty of other pieces (citation needed) have been written about the growing chasm between the two classifications of development jobs - engineers who can create software, vs. programmers who can write code - and I think the salary differences are just an aspect of that.
[+] [-] kriro|9 years ago|reply
Or in other words, (good) programmers care a lot more about motivating factors than hygiene factors than other employees.
I have no data to back this up, only a gut feeling.
[+] [-] alecco|9 years ago|reply
[+] [-] sev|9 years ago|reply
I work for a large, well-known tech company and they just re-titled all of their front-end engineers to "Software Engineer" (probably to stop creating a pay divide between front-end and back-end engineers). If you have a "Software Engineer" doing basic wordpress stuff, another "Software Engineer" doing PHP/Zend framework stuff, another doing pure JS/React/Angular stuff, and another doing backend services (concurrency/spring boot/API, etc) - the pay scales of all these "Software Engineers" should be different.
I'm surprised it's not trimodal.
[+] [-] yibg|9 years ago|reply
Up in Canada, the compensation seems to be more of a normal distribution.
[+] [-] faddat|9 years ago|reply
Tier 1: Those who solely re-implement. You can do a lot copying and pasting. It's just not worth as much money.
Tier 2: Those who re-implement while creating anew, typically in specialized areas or occasionally very well over a wide range of tasks.
Note the importance of re-implementation to both job tiers.