Summary: we don't understand why programmers are paid so well. If you're a programmer, there's enough of a chance that this is temporary that it's worth explicitly planning for a future in which you're laid off and unable to find similarly high-paying work.
Programmers are paid surprisingly well given how much work it is to become one. Here's Dan Luu comparing it to other high-paid careers:
If you look at law, you have to win the prestige lottery and get into a top school, which will cost hundreds of thousands of dollars. Then you have to win the grades lottery and get good enough grades to get into a top firm. And then you have to continue winning tournaments to avoid getting kicked out, which requires sacrificing any semblance of a personal life. Consulting, investment banking, etc., are similar. Compensation appears to be proportional to the level of sacrifice (e.g., investment bankers are paid better, but work even longer hours than lawyers).Medicine seems to be a bit better from the sacrifice standpoint because there's a cartel which limits entry into the field, but the combination of medical school and residency is still incredibly brutal compared to most jobs at places like Facebook and Google.
My sister is currently a second-year medical resident, and "incredibly brutal compared..." feels like a understatement to me. She works 80hr weeks, often nights, helping people with deeply personal and painful issues that are hard to leave behind when you go home. This is after four years in medical school, with still at least a year to go before starting to earn doctor-level money. When I compare it to how I started programming right out of college, making more money for 40hr weeks and no on-call, I feel embarrassed.
What makes me nervous, though, is that we don't really understand why programmers are paid this well, and especially why this has persisted. People have a bunch of guesses:
Demand: as software eats the world there are far more profitable things for programmers to do than people to do them.
Supply: it's hard to train people to be programmers, fewer people are suited for it than expected, and bootcamps haven't worked out as well as we'd hoped.
Startups: big companies need to compete with programmers choosing to go off and start companies, which is harder to do in many fields.
Novelty: the field is relatively new, and something about new fields leads to higher profits and higher pay, maybe via competition not being mature yet?
Something else: I'd be curious if people have other thoughts—leave comments!
Specifically, I'd recommend living on a small portion of your income and saving a multiple of your living expenses. It's far more painful to cut expenses back than it is to keep them from growing, and the more years of expenses you have saved the better a position you'll be in. If you take this approach and there's no bust, you're still in a good place: you can retire early or support things you believe in.
If being laid off and unable to find similarly high-paying work would be a disaster, figure out what you need to change so that it wouldn't be.
(This isn't really specific to programming, but I think the chances of a bust are higher in programming than in more mature fields.)
Comment via: facebook
It might be pretty straightforward.
GDP is 2x higher than in 2000Real GDP per capita is up 25% since 2000, so some category of workers must have gottenat least 2xmore productive in that timeframe, so their real income should be2xhigher. That seems like a plausible story for the software engineering career.This simplified model is consistent with my inside view. I can help sufficiently big companies save $millions/yr, or earn $millions/yr more, by writing software that streamlines some detail of their internal processes or external interactions. And my ability to do this is obviously much higher thanks to all the tools that exist today that didn’t exist in 2000: cloud computing, tons of third-party APIs, ubiquitous mobile phones with fast chips and internet connections, huge high-resolution monitors, Stack Overflow, etc.
The tech entrepreneur and investor Naval Ravikant talks a lot about how “leveraging yourself up” is the key to getting rich. E.g. these days Joe Rogan makes $1M for recording a 90-min podcast because he built a following. He has distribution as leverage.
Programming in the internet age is an unprecedentedly huge source of economic leverage on human capital. A doctor or lawyer sells an hour of their time with a limited impact multiplier - they benefit one patient or one party in one case. In contrast, it keeps getting more common throughout the economy for an hour of a programmer’s time to give value to thousands or millions of customers. Plus, the programmers are constantly getting better tools to get 10x more functionality built in that hour of time than was possible a few years ago. For example, building a basic form to accept a credit card payment has gone from taking days to minutes thanks to Stripe, a company that launched in 2010 and is now worth $30B. But they didn’t just make themselves rich, they added to the leverage that the rest of us have. It’s a real leveragefest.
It seems like software will continue to “eat the world” and add tons of economic value for a while. At the very least I’d confidently bet on another decade where supply increases much more slowly than demand, and the gap between career appeal of doctors/lawyers and software engineers will widen further in that time.
If you measure programmer productivity by the number of jobs replaced by their code, not lines of code, then programmer productivity is almost unlimited.