top | item 21904070

Programmers Should Plan for Lower Pay?

339 points| luu | 6 years ago |jefftk.com | reply

492 comments

order
[+] NewEntryHN|6 years ago|reply
Many programmers have a bias in thinking that what they're doing is easy or simple, because they truly enjoy it and, many times, have learnt it as a hobby. Their career choice have never been a masterplan on winning big, but it just happened to be so, so they feel like they're fraud.

Hobbyist programmers (who usually end up being the best ones) usually put great investment into their career by doing side projects on their free time. We're talking weekends and night of trying out stuff, hacking stuff, reading, learning, etc. It's often an invisible investment, because it's a hobby and it doesn't feel like work.

In the end, programmers don't really need to dig that far to reach a point where they're good at building stuff using enough layers of knowledge to make what they do absolutely obscure to others.

Nobody has a hobby of learning by heart the bones in the human body or the law texts on intellectual property; but programmers most likely know by heart a sizable bunch of Bash commands and their options, HTTP status codes, API interfaces, etc. It seems like highly advanced knowledge to be able to solve a health problem from a set of symptoms, but from the point of view of the layman, solving a computer problem from an error message is about as magic as it gets.

[+] _bxg1|6 years ago|reply
> Many programmers have a bias in thinking that what they're doing is easy or simple

In my experience it's exactly the opposite. People who do nothing but write glue code between major services think they're hot stuff.

One of my personal career goals is to stay as far away from simple glue code as I can. Unfortunately it makes up most of our field right now. But it seems like an especially precarious place to be.

[+] pixl97|6 years ago|reply
>Nobody has a hobby of learning by heart the bones in the human body or the law texts on intellectual property

You're making a lot of assumptions on the hobbies people have based upon your environment.

About the only thing the two fields you listed differ from programming is actual legal barriers of entry.

[+] ethn|6 years ago|reply
Wage isn’t based on the difficulty of the job.

Wage is based on the opportunity cost of the uncaptured labor value incurred due to employment. For software engineering, this is acute since with the same skills needed for employment one can make a competing enterprise to their employer and capture all the value.

Other professions require you to have large capital to do so, so the opportunity cost is either non-existent if you cannot access that capital or further discounted by the financing cost/risk.

Your end SWE wage ends up being the value you would otherwise be able to capture discounted to the expected value w.r.t your risk.

Companies profit on employment by having a lower risk in enterprising, thus a better EV, than their employees in the same enterprise for a given number of reasons—brand, preexisting customer base, speed, proprietary market analytics, etc.

[+] adrianN|6 years ago|reply
I think the skillset needed to successfully start a company is quite different from the skillset needed to be a good programmer. I consider myself to be a decent programmer, but I would never be a successful business owner
[+] everdev|6 years ago|reply
As a previous employer of SWEs, this is somewhat correct.

More accurately for me was salary was equivalent to the market price.

I needed to maintain a certain level of talent to be competitive, so I recruited and found developers at that level. After enough interviews and salary requests it's easy to ballpark the industry average for a certain level of talent and I'd hire the ones that were a good fit at a reasonable salary.

In my case supply was scarce but just available enough that prices were pretty stable.

As the supply of good developers increases it makes sense that the average salary request will drop.

This is economics 101 that no capitalist industry is immune to.

[+] cryptonector|6 years ago|reply
This is the right answer. Life isn't fair. Though, too, programming isn't as trivial as TFA makes it sound -- working with your mind is not backbreaking like manual labor, but it is still exhausting.

But TFA makes a good point: the level of compensation that programmers can demand may well fall more in line with that of other professions at some point. Thus one should not go into programming simply because current compensation levels make it attractive, nor should current programmers spend like drunken sailors. Caution is warranted here.

Software has been eating the world. We're probably far from peak software. Whether we're far from peak software developer compensation is another story -- I wouldn't know or make any predictions, informed or otherwise.

[+] GuiA|6 years ago|reply
Excellent comment. The killer feature of software is that it is utterly delocalized. Theoretically, you can capture the whole market whether you are based in SF, Berlin, or Calcutta. That has actually probably been somewhat reduced over time as governments have realized the benefits to protectionism (eg you can’t capture the Chinese or Russian market anymore if you’re a search engine), but it’ll likely remain generally true compared to other enterprises.

This effect is so powerful that even if your business has a strong physical component (Uber, Airbnb, etc) the scalability of software still puts you at a huge advantage.

As a doctor or lawyer, you tend to be limited to a radius around your immediate physical location.

Software is a weird beast that we haven’t really seen any equivalents to in human history.

[+] tspike|6 years ago|reply
This is actually a great argument in support of OP's conclusion. Once starting a software-based business achieves a sufficiently high cost to entry (at some point most of the profitable problems to solve will be out of reach of a handful of programmers), I would expect pay rates to plummet.
[+] austincheney|6 years ago|reply
Software is poorly explained by economics so I question the validity of economic considerations in hiring or paying developers.

The thing that makes software different is scale due to low reproduction costs. You can easily envision the costs of adding new labor, for example, in building a car and directly map those expenses to increased production quantity. In that case scale of labor to scale of product is not exactly 1 to 1, but it’s close. In software that 1 to 1 scaling does not exist.

Perhaps the big difference is that few people working a car assembly line are engineers. Most of the labor is produced by manual labor and robots. In software the actual engineering is equally as rare but the distinction between engineering and button pressing (the manual labor) is absent.

To really prove that point many developers adamantly fear and oppose producing any form of original code. If you are terrified at writing original solutions to a problem how could the work possibly be considered any form of engineering? https://news.ycombinator.com/item?id=21883670

[+] hyperbovine|6 years ago|reply
> Wage isn’t based on the difficulty of the job.

If by "difficulty" you mean "skill" then of course it is, in part. Why do baseball players make $30m and teachers make $30k? The demand for watching baseball is huge relative to the supply of people who can perform at a professional level.

[+] danesparza|6 years ago|reply
> Wage isn’t based on the difficulty of the job.

It is though, kind of. It comes down to supply and demand economics -- and the perceived difficulty of the job. People hire lawyers because they don't want to become one themselves. Lawyer wages come down when there is a glut of lawyers and not a corresponding glut of lawyer work.

I'm old enough to remember working in 2001 when the software market contracted. It was very hard to get a job, even for skilled developers because hardly anybody was hiring. It sucked. It also temporarily removed software developers who were just in it for the money -- they literally switched careers to something else.

Incidentally my salary is now higher than it ever has been -- so the market clearly recovered, it just took a few years.

[+] _bxg1|6 years ago|reply
You could say the same about Law. All you need to start a competing practice is an office, if that.
[+] mrfusion|6 years ago|reply
To simplify you can say wage is based on supply and demand.
[+] xwowsersx|6 years ago|reply
Exactly. Very, very well explained.
[+] pbecotte|6 years ago|reply
But... we understand EXACTLY why developers are paid so well. Economics (the same reason EVERY profession is paid the way they are). There are two factors that come into play for employee pay- 1. Supply/demand: When demand outstrips supply, prices rise. The demand for software so vastly outstrips the ability to produce it that salaries are being driven very high because 2. The marginal value that an employee can produce. This is a hard cap on the salary that any profession can charge, and is the primary driver for demand. So long as 2 is higher than the prevailing salary, demand will continue to rise, which will apply upwards pressure on salaries.

Of course, high salaries will attract more supply over time, which will put pressure back down on salaries. The current dynamic is SO out of whack though- there is a ton of slack in the system.

This isn't a boom/bust thing either. There is SO MUCH business value that could be had if there were programmers available to build the software. I don't think we're even scratching the surface of everything that could be profitably built yet. I think betting on a big bust in software engineer salaries would be a bad move.

[+] ThrustVectoring|6 years ago|reply
There are more factors than just supply/demand and use value. There's the sensitivity of productivity and employee turnover with respect to pay, and the replacement of costly performance quantification with a significantly cheaper rank-ordering system (usually informal via promoting your "best" few engineers).

The former leads to efficiency wages, and the latter to tournament theory.

Example of the first: there are two jobs with an identical market-clearing wage and expected net present value of productivity. The first is relatively unskilled labor - you train them for maybe a week, and they do pretty much average performance for however long they stay. The second requires a year of training during which they provide zero value, then stay an average of a year after that during which they provide double the value. A savvy employer would pay the market-clearing wage for the first role, and above that for the second. By doing so, employees of the second type would be unable to find a job that pays as well as what they have now (since the market isn't clearing), so they'll tend to stay longer and provide extra value.

Example of the second: corporations will pay CEOs much more than vice-presidents. The work that both jobs do is largely the same, and the disparity in value added between the two roles is much less than the salary difference. The spread is there to make sure that senior executives work really hard to be seen as a better choice than their competitors - now the board doesn't have to evaluate how well executives did in an absolute sense, but rather need only judge who the best candidate is for the top role.

[+] vonseel|6 years ago|reply
Of course, high salaries will attract more supply over time, which will put pressure back down on salaries. The current dynamic is SO out of whack though- there is a ton of slack in the system.

I understand all of this.

Are there any examples of industries where - for lack of better terminology - a salary "bubble" formed and later popped? For example, X job used to pay 100k and now it pays 50k? Probably better to exclude jobs that aren't around anymore because they were replaced by automation or don't make sense because of modern technology, at least for this question.

I guess I have an inkling that - ignoring things like economic downturns and lowering salaries due to high unemployment - employees will fight back against any downward pressure on pay, and once salaries go up, they tend to stay up. Sort of similar to what you see when an individual gets raises and jumps companies for an income boost - you rarely see someone take a job paying less than their current job.

All that reminds me of how people who graduate during recessions earn lower income over their careers[1].

[1] https://hbr.org/2018/09/people-who-graduate-during-recession...

[+] Gatsky|6 years ago|reply
This is a bit hand wavy... isn’t current comp due to a handful of tech companies that became very profitable very quickly, and a lot of venture capital money? Without either of these two factors I doubt wages would be at the same level.
[+] humanrebar|6 years ago|reply
> Of course, high salaries will attract more supply over time, which will put pressure back down on salaries.

It's not clear to me that there aren't soft and hard caps on supply, even if everyone wanted to be a programmer because the compensation was so great. There are certainly aspects of intelligence, temperament, and personality that are needed to crank through information, organization, and abstraction problems as part of a team for decades of one's life.

[+] honkycat|6 years ago|reply
I've worked with the overseas "talent" and if that is the best they can do, I'm not worried.

Hell, I've worked with a lot of people on the US side of the pond who have experience or are educatied and they can't rub two keyboards together to ship a product.

My observation has been the opposite: no matter how much you offer, a lot of companies STILL cannot hire enough engineering talent.

[+] f2000|6 years ago|reply
It turns out that being a good programmer isn't simple or easy. I've seen many teams where everyone on paper looks like they should be a good programmer, yet only a few team members are doing the heavy lifting and the majority are really just in supporting roles and sometimes not even doing that so well or even contributing negative marginal productivity by creating bugs, technical debt, and team dissension.
[+] corporateslave5|6 years ago|reply
Yeah but I think most of the time this happens because some senior developer edges all the other devs out. After a few months of this he’s so productive with the code base that the others look like bad programmers
[+] JDiculous|6 years ago|reply
Programmer salaries are only especially high in the U.S. and a few other countries. In most countries, programmers don't get paid anywhere close to what SV engineers make. In the U.K. for example, programmers start at ~$32k/yr.

I think the reason for high programmer salaries in the U.S. is due to:

1. Culture that values engineers

In Silicon Valley and in many tech companies, the culture is that high quality engineers are highly valued and respected, and thus command high salaries. Companies like Google, Facebook, and Microsoft were founded by ex-programmers / ex-CS majors, so they understand the value that high quality engineers bring to the table and are willing to pay for them. Whatsapp was bought for $20b and only had 50 employees, 70% of whom were engineers.

In non-tech companies where tech is seen merely as a cost center, programmers don't make that much (eg. fashion companies). For the record there's nothing wrong a non-tech company not wanting to pay top dollar for engineers, some random ecommerce store probably doesn't need world class engineers, just like a semiconductor manufacturer doesn't need the best graphic designers.

I'm not very familiar with the UK so I don't know firsthand why UK engineer salaries are so much lower than in the U.S., but if I were to guess I'd say it's largely because their culture just doesn't value engineering talent like in SV.

2. Tech companies have a lot of money.

The big tech companies have very high margins. Facebook's market cap is $20m/employee, profit is $684k/employee and has a profit margin over 40%. Apple's market cap is $9m/employee, revenue is $2m/employee, gross profit margin is 38%, and they have $245b in cash. Even unicorns that bleed money (eg. Uber) are flush with cheap capital from VCs, with Uber having raised $20b to date.

Looking at it from this metric, it would seem that engineers are underpaid relative to the value they create. Not only just engineers, but labor as a whole.

[+] perl4ever|6 years ago|reply
People on HN look at everything not just from a regional perspective, but that of a very small clique out of all of the professional programmers. FAANG companies have plenty of work that is beneath their SWEs, which they outsource, in some cases, to American companies that have a mix of American employees and offshore. They hire people in the US around $40-60K and increase pay very slowly. Nobody gets paid $100K, because (a) if you switch jobs, you only get an incremental bump in salary, due to not having the right kind of title and pedigree, and (b) you're competing with much lower paid offshore employees. Best case is $80-90K after ten years and/or relocating to a major metro area.
[+] viggity|6 years ago|reply
the UK thing blew my mind. I started at 53k/year in 2004, at lower than market rate because I loved the company and didn't negotiate harder. I'm at almost 4x that now and I live in a stupidly cheap metro with a scant half a million people. When I verified "Junior software dev" in london, jaw practically hit the floor.
[+] darekkay|6 years ago|reply
3rd reason: Difference in the net income, i.e., the money after taxes, the cost of living, different insurance structure per country. The 100k in the US is not comparable to the same amount in Germany, without taking everything into account.
[+] mcguire|6 years ago|reply
I suspect your number 2 is the most important factor. Outside of big tech companies and those who have to compete with them, salaries are much lower. Possibly not low enough, given the lack of barrier to entry as in the original article, but still.
[+] michaelmrose|6 years ago|reply
This isn't hard to understand at all. Programmers are paid well because you need a pretty smart person willing to work at a not very exciting job often offering few interesting challenges that will likely contribute nothing of note to society but has the potential to contribute substantially to the efficiency and profitability of your enterprise.

Most of the people that are smart enough to be good are likely to be either doing something more interesting, contributing more to society, or making even more money than you are willing to pay them to sit in a chair and write code.

It's not that most people aren't suitable. It's that most of the people that are suitable aren't available and thus you have to pay more money to compete to pay the ones that are to sit in a cubical and waste their life helping you sell more ads.

[+] sweeneyrod|6 years ago|reply
> a not very exciting job often offering few interesting challenges

I think the exact opposite is true. Maybe programming isn't as interesting as being a literal rockstar, but I think most programmers' second choice of job would be "real" engineering which is usually lower paid and in my opinion less interesting.

[+] twblalock|6 years ago|reply
No matter what happens, his basic advice is sound: spend a small portion of your income.

My advice is similar: live on your base salary, and save a lot of it, so you will be fine even if your bonuses/RSUs/options end up worth nothing.

In the worst case, you save up a lot of cash before programming compensation drops. But even if that doesn't happen, it's still better to build wealth, save for retirement, and perhaps have the ability to retire early if you choose to.

[+] tomohawk|6 years ago|reply
Managing your life is about balancing risk. Having 6 months in an emergency fund is golden when (not if) you get laid off or something bad happens like a car wreck or illness or whatever. During the course of your career, it will likely happen. When it does, not having monetary worry be part of it is golden.

You can also broaden your opportunities by paying off your house and not borrowing to pay for depreciating assets (cars and other things with wheels or propellers). Getting burned out and want to take some time off? It's a lot easier if you are not having to make a big debt payment or rent payment each month.

[+] akhilcacharya|6 years ago|reply
I'm curious - what percentage of pre-tax cash per year would you recommend saving? All of my friends are on my case for not "saving enough" because I'm living my best life, but I'm not sure what the appropriate number is if my net worth is increasing.
[+] aantix|6 years ago|reply
Why?

So you can be old and crippled finally going on the vacation you dreamed of? Barely able to walk out in to the ocean, much less surf like you dreamed of?

Nothing is guaranteed. Quit living off rehydrated beans and eggs like you’re winning a merit badge and start financially planning to see the things your heart desires.

If you have left over savings when you die, you did it wrong.

[+] woodpanel|6 years ago|reply
"we don't understand why programmers are paid so well"

I think we do: https://en.wikipedia.org/wiki/Software_crisis

Demand never stops (at least never did in the last 50 years). If some demand was met with programming supply it ends that specific demand, but creates new demands in return. AI won't change that btw.

Now if you excuse me, I have to copypaste stackoverflow answers into my code so I can sell that as senior architectural consultancy work...

[+] ohyes|6 years ago|reply
Programming is a lot less science and a lot more art.

You're trying to describe a problem in a way that can be easily interpreted by both an irrational human, and a computer, a creature of pure logic.

If you write for just the computer, you've got an un-maintainable mess. If you write for just the human, it doesn't work properly.

We really play up the importance of "computer science" skills when hiring software engineers because that's what's taught in schools, and it is the basic requirement to write a piece of software that at least works as intended.

But in reality, you need both. You need good human communication skills (personal and written) as well as an understanding of the computer.

And things are just getting more complicated. In the late 80s to mid 90s, there was a hell of a lot you could do with a single developer. Applications were simpler, you could write that single threaded application to run on a desktop, and it would be acceptable. One person hacking away in a dark room on a CRT could get the job done. The communication wasn't as important.

But now (and by 'now' I mean the last 15-20 years), most applications involve multiple servers communicating, almost anything involves at least a small team of developers, (and at bigger companies large teams of devs have been the case for a long time).

So the human communication is also becoming more important. You can't get away with hacking away at something and throwing it over the wall as much anymore. This is fine.

But the two skill-sets are diametrically opposed and people who can't do either type of communication eventually wash out. People who can do both of these things are incredibly rare, and our education system hasn't even explored what it takes to produce this type of person. (How many engineers have you worked with who couldn't write or spell to save their lives? Single letter variable names?)

Anecdotally, hiring someone competent is actually very difficult. You do a screen (to weed out the candidates who know absolutely nothing), and they come in and they still can't do basic stuff like recursion and loops. Or they can't explain what they did.

[+] zuhayeer|6 years ago|reply
> Compensation appears to be proportional to the level of sacrifice (e.g., investment bankers are paid better, but work even longer hours than lawyers).

The idea that the amount of sacrifice you make will be proportional to the monetary reward you receive seems very phony to me (especially in terms of time spent not productivity achieved). It implies you'll have to enjoy the things you do less to become rich.

I'm also one of the founders of http://levels.fyi, a compensation transparency tool for software engineers where you can get an idea of market rates today at different levels / companies. Stock compensation is a huge part of software engineer wages which means as long as there is economic progress and growth, salaries will grow. Competition also plays in the favor of software engineers – as it is a very horizontally transferable skill (generally), it provides software engineers a ton of leverage, giving companies no choice but to pay market competitive wages for top talent in the industry.

[+] vosper|6 years ago|reply
Programmers in first world countries (and triply so the Bay Area) should plan for lower pay because there are increasing numbers of foreign (and some domestic-but-rural!) workers out there who’re skilled and will take less pay than you and be happy about it and will be able maintain a high quality of life in their area. I don’t mean the outsourcing/body shops (though some good ones exist) so much as individuals in Argentina or Mexico or the Philippines. They’re out there, they’re good engineers, they fluent in English, and as more companies become remote friendly these people are going to start taking some jobs. The market is slowly, but surely, going global.

And if you think you’re safe in Ukraine or Bulgaria give it 20 years until a bunch of Africans in nearly the same timezone come in and undercut you, too.

[+] yowlingcat|6 years ago|reply
What a poorly written blog post. This is proto-apocalyptic in the same way that Zerohedge is. The author may not understand why the software industry has high compensation, but Wall Street does. High margins, low op-ex, data moats, often winner take all dynamics, broad applicability, capability of cannibalizing incumbent industries, ease of deploying investment capital...even accounting for the dot com bubble, technology is the product and acceleration of industrialization, which in and of itself produced some of the highest concentrations of wealth in history.

The industry is not immune to bubble effects nor to catastrophic meltdowns (WeWork was obviously a huge, recent cautionary tale and very likely not the last), but to pretend not to understand where the compensation comes from is either lazy, wilfully ignorant, or both.

[+] ThrustVectoring|6 years ago|reply
Programming is a field where quantifying worker output is prohibitively difficult, but ranking workers is relatively easy. As such, it's a prime candidate for Tournament Theory - instead of measuring worker output, do some kind of informal rank-ordering and hand out larger prizes to the winners.

Being employed as a professional programmer in any capacity is winning the first round of such tournament. The compensation spread between this and the next-best non-tech option has to be high enough to induce people to invest in learning the difficult skills and risk the ordeal-based hiring tournament.

Efficiency wages also come into play here. When wages are higher than what's necessary to clear the market, people struggle to find new jobs, which both reduces turnover and makes employees more willing to put in discretionary effort.

Some combination of the two is likely responsible for outsized wages in the field. Efficiency wages is probably more the case for entry-level FAANG salary, tournament for the large jump over the first couple major promotions.

[+] dilyevsky|6 years ago|reply
Programmers are paid well because businesses that depend on their labor are making ridiculous amount of money. It’s a skill that not everyone is cut out for despite what nyt wants you to believe just like not everyone can be a professional writer.

If you look at skilled blue collar rates (eg plumber etc) the difference isn’t even that big when you consider barriers for entry.

[+] erosenbe0|6 years ago|reply
In your average rust belt type city, your average cardiologist is making 400-450k at 50-60 hours a week.

Senior developers in those same cities make 90-150k at 40-50 hours a week.

The doctor, once established, also has the advantage of generally not needing to consider moving cities for career advancement or to do more interesting work. This type of security is also quite valuable.

[+] angarg12|6 years ago|reply
Are programmers overpaid in the first place?

When we look at eye popping salaries, they usually belong to senior+ engineers in top tech companies in selected geographies. I know far more programmers making just above average wages rather than 1% type level of income. And considering some of the points made by other comments, it doesn't seem unreasonable that they should be paid well.

Only those lucky enough to get most of their income via stock grants should prepare for most of that value evaporating in case of a market crash.

[+] Pfhreak|6 years ago|reply
> Are programmers overpaid in the first place?

Seems unlikely. Companies don't typically pay someone at a loss -- they hire folks because they expect to make a profit. Wages, almost by definition, are less than the value of the worker.

Programmers are like any other wage laborer, and should be pushing to own more of the value they produce.

[+] tspike|6 years ago|reply
So much kneejerk reaction to this perspective - it's understandable, I suppose. If you are leveraging your lifestyle against your skillset to the fullest extent possible, the idea that it could be unsustainable would be extremely threatening.

Think of it this way- if he's right, you've insulated yourself from catastrophe. If he's wrong, you have given yourself a trajectory for permanent independence from employment.

For people so good at optimization problems, this seems a no-brainer to me!

[+] mattlondon|6 years ago|reply
I think it needs to be a "simple" supply and demand thing.

Even in the same FAANG-companies, I am aware that there are people doing the same roles at the same level (and even sometimes in the same team) in London (a city was equivalent living costs as SF) who are paid significantly less than their Silicon Valley based colleagues.

I.e. all things being equal (same employer, same job, same level, same teams), people in SV get significantly more than people in other major cities (and it is not just like an extra couple of thousand, it is often like $150-200k vs $300-350k etc). I knew of someone who simply moved from SV to London (same team, same manager, same role, same level etc - just an office location change) who told me they got a 60% pay cut - i.e. the only variable that changed was location, everything else was the same.

The explanation given for these "discrepancies" are that the lower salary outside of SV is due to "market rate", i.e. that there are not enough other companies in e.g. London competing for talent to support higher market rates, and that the FAANG pays "at the top of the market rate", so that is why salaries are lower in London despite living costs being the same as SanFran.

$150-200k is still a fairly respectable salary in London by the way (London average is approx £39K/$51K), but you still have a near-zero chance of buying a nice house on that salary (you might afford an apartment out in the outskirts that is 40-60 minutes away by train from the office in center of the city)

A lot of commentators here are talking about the profitability-to-the-company of a single dev, or the opportunity cost a dev is missing when taking a full-time position vs starting their own business. I think if that were true, there wouldn't be such a wild variance based entirely on location. The simple reality for me is that companies just pay the smallest amount they can get away with, and it just happens that in SV that needs to be high because there are a lot of competing companies looking for staff.

I.e. supply and demand.

[+] csomar|6 years ago|reply
> we don't understand why programmers are paid so well.

I think the problem is that programming is more complicated than other jobs. Your value as a doctor is pretty much equal to the other doctor next door. That's not true for software developers.

One thing I noticed about open source software, is that most of the projects (even the big one) are mainly run by 1-2 guys. There can be a hundred contributors, but the heavy lifting is done by a single person or maybe a couple. This is different than say a hospital, where you can't have a single doctor doing all the heavy lifting.

Most software developers are paid shit (outside the USA and Silicon Valley) and are barely equivalent to other engineers or university educated folks.

> Consulting, investment banking, etc., are similar. Compensation appears to be proportional to the level of sacrifice

Yes, because you open a consulting shop and work starts following. It has been mentioned here, before, that consulting in tech is more about building a reputation and managing clients than the technical skills. So not really that much different. If you are highly talented and have no network, you'll make exactly 0 as a consultant.

> but the combination of medical school and residency is still incredibly brutal compared to most jobs at places like Facebook and Google

What the OP misses is that Facebook/Google do not represent your average US engineer; let alone the average global one. Whether they are talented or lucky, they are the minority.

> big companies need to compete with programmers choosing to go off and start companies, which is harder to do in many fields.

Maybe they are going to startup route because the compensation for a skilled software developer is very low.

Writing software is like writing novels (not exactly but close). A few good writers are going to make most of the $$ while the rest are going to barely survive. My guess is that in the future will see more of this trend where you either go big or go home.