Programmers Should Plan for Lower Pay?
jefftk.com
jefftk.com
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.
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.
Most lawyers are doing simple glue stuff and think they're hot shit. You think I couldn't refer that case to another law firm, or a machine?
Most businessmen are doing simple glue stuff and think they're hot shit. You think I couldn't randomly guess at the market, but not outperform it, nor a machine?
The issue of precarious is also a bit "the grass is greener" sort of view. In 5 or 10 years when the industry again looks different, bootcamp level web dev work may be as precarious as you project. But right now, what's more precarious, specializing for one company in a corner of the industry where there are only a small handful of companies, or working for a company that you the employee, could easily replace?
E.g. "software engineer", and "programmer" should be labels for different roles/capabilities, as should be "computer scientist". Using the terminology incorrectly should be frowned upon, similarly to how this goes in other disciplines.
Integration platforms are getting good. The API integrations that make up a lot of my work might be better done with them in not too long. It's already reached the point where some clients speak with me only after an integration platform hasn't met their use case.
Folks in the middle of the curve are blissfully unaware how much there is to know and how many difficult problems must be solved to put together those backend services they are gluing.
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.
I used to read all kinds of cases as a hobby even before that, for fun. I remember reading through much of Ross Ulbricht's trial documents and comparing it to what his advocates were claiming, which was enlightening.
It's possible that one programmer can bring generate and capture more economic value by doing one "not very complicated thing" that gets pushed to 1 billion instances[0] than a brain surgeon can by doing one extremely complicated thing on a few dozen or hundred people per year.
'curl' is not complicated, but it clearly has incredible economic value, and has an install base of over 1 billion devices.
[0] https://daniel.haxx.se/blog/2018/09/17/the-worlds-biggest-cu...
Speak for yourself buddy, i enjoy pulling up the Cornell law or my local jurisdictions legislative website to fully understand the laws around me. In college my hobby was reading the laws about public nuisances and noise violations (and none of our parties were ever shutdown!). I still do this today to fully educate myself. Along with other nonstandard hobbies like flying planes, studying neuroscience or genetics, and owning a server farm for fun..
> Many programmers have a bias in thinking
I think the odds of finding hobbies outside of software and hardware on HN is probably lower than the general public, but the very reason we have specialists in other fields is because of their dedication to their hobbies!
One other way would be to demonstrate true mastery, but with the breadth of computing and its ever changing nature it's borderline not possible.
I don't know anyone who likes learning about bones, but I have actually met a guy, who was really passionate about quirks of IP related laws (my company hired him as consultant to clarify some mundane and fuzzy issues we had with usage of fragments of published academic books). He could talk for hours about various cases he worked on and was citing paragraphs of some obscure laws, going with true passion into detailed analysis how a given case looks in view of local Polish, Romanian, EU and international regulations. I would compare him to Rust, Lisp advocates easily.
chmod's connected to, access permissions
(Maybe I'll come up with the whole song if I ever teach CS in grade school.)
Who’s to say those that went to school didn’t enjoy the learning process of their degree? They are by this definition giving up free time in order to learn something and are as well making a great investment in not only time but money as well.
I think that this needs to be reread as “Programmers who are passionate about what they do usually end up being the best at what they do” since if you think about it, they are dedicating ~40 hrs a week to their hobby. Who’s to say someone can’t excel in a hobby if they can’t dedicate more than that? What about people who have more than 1 hobby?
Not that the other work you do instead of programming, like problem decomposition, spec authoring, review, etc., isn’t useful for improving your programming skills, but not having to coordinate with anyone means you can just write code on a hobby project.
I recently lead a project and even with a tight schedule and trying to focus on implementing as much as possible I spent maybe 30% of my time programming.
Note further that I don’t really do any programming outside of work and don’t think it’s necessary or even useful to spend that much extra time programming. Iterating implementation ideas like a scientist is the only way I’ve improved and that’s fairly independent of time spent.
Cite?
Let me guess, you're a self-trained coder.
Instead they’re looking at your community contributions and work experience.
If John Carmack had a twin who wasn't so inclined and just did programming as a 9-5 career, there's no way they'd be as skilled as he is. Plus they'd probably wait until being taught how to program instead of starting to teach themselves as a kid.
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.
They would probably be odds-on to succeed if they were chasing a niche in an established market.
This doesn't apply to companies like Facebook, Google etc because they're protected by a network effect.
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.
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.
Plus, we will reach peak software eventually - likely decades out of course
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.
Localization in the sense that you mean is a function of a lot more than the software: language, culture and law all play major roles.
* I'd argue that as tools improve, the number of solvable problems of a given value increases exponentially e.g. if you have a capability A and you introduce capability B, you can now do things that require only B or A and B, and if you then introduce capability C, that opens up (C), (A, C), (B, C), and (A, B, C) as new problems that are possible to solve.
Edit: For a concrete example, with tools like Stripe you can do payments-related stuff without being an expert in handling credit cards, and with tools like EasyPost likewise for physical mail, and with the combination of the two a single developer can now do any of the things that require either of those individually plus things like taking online payments and managing shipping on the best-cost carrier without any in-house staff and only a couple months of dev work.
The key reason companies can and do pay SWEs relatively well is that these SWEs generate large profits for them.
That's the "opportunity cost" GP mentioned: yes, you'd have to pay the SWE $400k, but the cost of not employing them is several times that in lost profit.
Moreover, I'm not really seeing how the barrier of entry is going to increase substantially. In fact, it will probably decrease.
As software eats the world, there will be more and more "pure software" work, which means your only toolset is your knowledge. SWEs with large amounts of specialized knowledge and skills will increasingly be able to compete in these areas (security is a pretty good example). It doesn't have to be your typical company with a logo, brand, and office space - we're talking about consultancies and virtual businesses.
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
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.
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.
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.
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.
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...
Automotive factory work is another example, I think. Something like: there were high wages (with unions) in Detroit factories, and then competition first from overseas and from other US states led to a collapse in pay (along with a general collapse in Detroit).
I haven't looked into it, but I suspect that there was a time when some railroad workers were very well paid, which then went bust when one of the railroad bubbles popped.
Their number isn't declining, it's growing.
We're not guaranteed to have no bumps along the way of course but, over the long term, it's really hard to envision a case where demand for developers, and consequently comp, drops drastically before this global saturation occurs.
A lot of mid-sized businesses want to gain an edge over their competition via custom software solutions. (The optimistic part in my also thinks that it's still the early days there, where companies in each niche are trying to uncover software driven upsides with fewer resources, and once those are found everyone in the niche competes over squeezing out the most of that opportunity, which requires a lot more engineering resources).
On top of that even moderately complex websites (search function + data pipeline leading into that) that a lot of 100+ people companies have require regular attention from a somewhat skilled software engineer.
So in conclusion, I think that high compensations might be driven up by "a handful of tech companies", but a lot of the demand is mostly uncoupled from that.
A restricted supply means you have to play a higher price.
It doesn't matter what causes the lack of supply, its the lack of supply that causes price rises.
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.
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.
The first couple of jobs I had the interview process was a conversation with barely any technical content (let alone being asked to write a single line of code). Nowadays there is a generally a barrage of technical testing.
I think companies are realising the huge difference between having top 20%ile programmers versus the rest. Where I am currently although we get plenty of applicants we simply can't fill all of the spots.
Agree with the overseas talent comment as well. The amount of technical debt they create is massive, the overhead in communication is too high, and the people aren't invested in the products the code they are creating.
I've worked at 7 different silicon valley companies in my 35 years of employment, though the last 20 have been at two particularly high flying companies. Approximate half the staff is foreign born, some US educated and most foreign educated. I see no pattern to skill levels between US born and foreign born coworkers. Maybe it is because these companies draw top talent, and can afford to pay for it, I have this experience. You might be cynical and think I'm a "meh" level employee who is easily impressed, but my pay grade and annual reviews say otherwise.
Also, time and again we see posts here lamenting the hiring process in this industry and we haven't cracked it yet. This adds to the demand-supply gap.
Anecdote: I have interacted with some of the 'overseas talent' and they were excellent programmers but lacked communication and hadn't fully figured out the mechanics of working in teams. Others from the same background but who decided to get a higher education from US had better exposure and generally fared better.
If you pay the buck you can hire excellent engineers in India, China, Eastern Europe & other parts of the world. No wonder Amazon/Google/Microsoft have a large developer presence in these markets.
One of my coworkers is really good at churning out code in a short amount of time that will do the job. He's not so good at abstracting his code to make it more reusable, even when he has time.
Another coworker is a hard-working cleanup guy, he doesn't mind getting his hands dirty and spend several long days cleaning up a decade of cruft. But he doesn't always appreciate subtle differences in code, so sometimes introduces regressions.
Third guy we have has excellent domain knowledge which is invaluable, yet is an otherwise average programmer.
I've got my set of things that I'm really good at, and the things I'm not particularly great at.
We don't have a rock star dev, but we have people who are good at different things and we take that into account when planning and executing projects.
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.
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.
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.
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.
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.
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.
If you are assuming that you will always be able to work, making the wages you make today, then you will have a rude awakening the day that you cannot. Living below your means has been almost universally good advice since the dawn of civilization.
I do appreciate your sentiment however, in that there is a lot of advice from FIRE types who talk about even the most minor indulgence as some hedonistic waste of money. And it makes sense to remind those who go to that extreme, that spending money now can actually buy a little happiness. But I think you're being slightly disingenuous by taking the parent comment to the extreme of living off rehydrated beans when they're simply reiterating the idea of saving as a virtue.
I'm continually baffled by this kind of reaction.
I spend ~30k USD per year - more than the average american and more than 99% of the world. I live in a nice apartment with a garden, a 10 minute commute from the centre of one of the most expensive cities in the world. I buy organic food from the local supermarket and eat out multiple times per week. This year I vacationed in Tenerife, Greece, Italy, San Francisco and Vancouver.
This is, by any reasonable standards, a life of luxury. And on a typical FAANG salary it would take ~7 years to save for retirement - https://networthify.com/calculator/earlyretirement?income=13...
You would think most people would be interested to learn that their level of wealth opens up the option of complete financial independence in a comfortable middle class lifestyle before the age of 30, but instead it's always straight to yelling about dried beans.
> 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.
I never said you should live on beans and eggs and skip vacations. Most engineers are paid well enough to live well on their base salaries while saving a reasonable amount of money.
What I'm advising against is stuff like spending so much on your mortgage that you will go broke if your RSUs drop in value or your annual bonus is less than you expected; in other words, live a lifestyle you can afford with your base salary.
which would be a fine statement if we knew exactly what is going to happen.
As we have no idea if we are going to live till 100, and drop dead in the act of procreation with one's 50th life partner, or die at 32 of bone cancer after 5 years of off/on chemo and other invasive procedures. One has to build in slop to cope with all that life might throw at you.
The amount you save is entirely up to you. Some people might be willing to live off beans if they save enough to move to a pacific island in 5-10 years.
Other people are contented to live a bit larger, because they plan to stay where there are.
As with all things you need to figure out your goal and plan for that, and have enough slop to account likley occurrences (family, illness, recessions)
It’s about being intentional.
And have enough left over so your spouse can keep living comfortably after you're gone. Even if they were a SAHP and thus had a gap in their retirement savings.
And have enough left over so your kids and grandkids can get a head start in society.
It's not just about you in this very moment...
If you want to play it safe, then you're really just trying not to leverage your wage into insane debt. You could live a decent lifestyle while putting money away and be financially fine if wages went down. But if you get loans for a $1.5m home and a $200,000 car you might find yourself with payments too high.
No, so you can retire early, as in your 40s. It's stated clearly in the article and not easy to misinterpret.
I personally hope this kind of thinking isn’t the trend.
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...
Problem solved!
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.
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.
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.
If you're a programmer in a different country with a completely different culture you may simply not understand the reasoning behind why or how you are solving a customer's problem.
No amount of documenting and specing ahead of time can correct this to the same degree as having a programmer that truly understands the business problems they are solving.
Ten or even five years ago it was very rare to find companies that will pay well for remote talent and it created weird culture when your core senior engineer is paid less than out of school junior dev just because they are living in place with lower costs. At the end companies got what they paid for.
Nowadays I see new wave of companies that understand this better and treat remote workers as first class citizens: not just by amount of money they pay but also bringing these developers to the table and letting them to have stakes in the project not just handling assignments.
I don't know much about culture in India or Philippines, but after working years with developers in both SV and places like Germany, UK and Romania I don't see much difference.
Maybe this will eventually come to pass, but there are no signs that it's on the near horizon. Most U.S. companies are still uncomfortable with domestic remote engineers, let alone international remote engineers. It won't happen overnight.
As another example, there was a real-time city building/combat game a while back, made by an oriental developer and ported into English by a UK games company. You could set you flag to show your name — with a one character limit. That made sense if you’re thinking of “狐”, but English language players set their flags to “G” or “K”.
Right now, I’m a UK-born developer living and working in Berlin, and my B1-equivalent in German isn’t enough to read German-language design documents without resorting to machine translation. It just about works (office and dev language is English), but German-English is easy compared to Chinese-English.
Seamless remote work is also a prerequisite for levelling tech salaries even within single nations and time zones, but I don’t know enough psychology to argue how far or close that is.
Somewhat minus the timezone, a lot of these things apply to the Philippines, too.
I expect good communicators fluent in the same language working mostly the same hours every day to be in the same talent pool. I don't expect every employer is willing or able to take advantage of the entire talent pool. Many (apparently most!) are willing to pay a premium to have their team physically sitting in desks on site.
If management is so concerned over us working remotely a few more days a month, I can't imagine more of a push toward remote workers, particularly in other timezones, with people that have limited English skills.
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.
To try to end this on a bit more of a constructive note: think about the difference between the _firms_ that employ software engineers/marketers/salespeople and the _firms_ that employ highly paid folks in medicine and law. How do the unit economics breakdown? In what ways are certain aspects favorable and unfavorable to an investor?
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.
If you look at skilled blue collar rates (eg plumber etc) the difference isn’t even that big when you consider barriers for entry.
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.
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.
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.
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!
I have had fun with this thought of risk recently. It seems risk is hard to communicate between people, because sometimes people conflate the occurrence rate of the risk with the negative effects of the risk in question. So it's a low occurrence rate for an oil drill to spill, but the damage is the death of the ecosystem around it. You could argue the risk is both high and low for different reasons yet I don't often here people clarify that detail when talking about risk.
In the scenario of my wage dropping, I would say it's a low risk for me, both because of my location and the economy my wage is based on, and because the damage of my wages dropping is low because I haven't leveraged my earnings. Little damage is to be done, AND the likelihood of a drop is also low.
Do we? I find his reasoning perhaps a little incomplete but still compelling. We don't have to benefit of his presence to fill in gaps in his reasoning, but a lot of the supposed gaps have to do with a misunderstanding of Christian "belief" (pisteuō).
https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?t=n...
But this isn't analogous to Pascal's Wager anyway. That wager leans heavily on the concept of infinite positives and negatives. As great as being a successful programmer is, it's nowhere near infinitely better than alternative occupations and employment scenarios.
So we're really talking about cost/benefit analysis with incomplete information... which describes most important decisions in life.
Usually because people don’t think the probabilities are 50-50.
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.
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.
Doctors are definitely less interchangeable with each other than engineers.
Top surgeons probably make more money compared to median surgeons than top engineers to median engineers. So the idea that all, say, plastic surgeons are roughly the same is ridiculous, too.
Same thing goes for lawyers and marketers.
Engineering isn't uniquely complex, and top engineers aren't uniquely highly compensated either.
This is how it works in every industry, from sales to marketing.
If anything, top engineers seem to be uniquely surprised that they get paid so well. I've never met a salesperson who thinks he's overpaid. Almost every engineer I know thinks he's overpaid. If anything, that's suppressing our wages.
Agree - and to add to this, a big chunk of "software" jobs does not seem to actually involve writing software nowadays but rather consist of an endless set of chores like fixing shell scripts, running ETL jobs, handling pager duty at 3am etc
I have seen a number of fresh college graduates get stuck in these dead-end jobs and have helped them get out of these ruts by mentoring them. As you say, the vast majority of the software jobs are really bad.
If google finds a way to run itself with 5k developers instead of 30k, that's a scary change
If on the other hand we develop tons of cool hands-on automation technologies that deliver lots of value but require programmer-like people to run them, that may sustain the labor demand for a while
there's an argument gap between 'AI is taking developer jobs unless you can do ML' and 'basic app development, even when non-fancy, is like pulling teeth and requires experts if you don't want to deliver crap that fails all the time'
I think we're still living in the 'basics are hard and require experts' world for 18-36 months and then the tooling fills in and starts to make magic easy
My guess is it's only a lack of direct competition that is stopping this.
Google has a lot more than this, FWIW.
A lot of those engineers you describe are rich too, because engineering pay is not tied to skill as much as to being in the right company, e.g. FAANG companies pay large salaries to average engineers and startups pay low salaries to pretty much everyone.
1. Wages are dictated by supply and demand.
2. Software has no formal entry requirements, anyone who can demonstrate competence can get hired as a software engineer.
3. The same set of traits make someone good at software development and other branches of STEM.
4. An increasing, if not already majority, of young STEM graduates are also more than familiar with software development. Many do it as part of their non-tech day-to-day jobs. They may not be able to start working as a software dev on Monday, but given a relatively short amount of time (a couple of months) to prepare, they can switch to software just fine.
5. Pay for software jobs is multiple times higher than other SEM jobs.
I do not see this situation as steady. Here is my speculation: If the wage gap persists, more and more STEM graduates would seek careers in software. This will increase the supply of labour in software and decrease it in the rest of STEM, until the wage gaps closes or at least shrinks significantly. At this point, the new wages for all STEM would be lower than current tech salaries but higher than current SEM salaries. Since the number of tech graduates is much lower than the number of all other graduates, the equilibrium point would be closer to current SEM salaries than current tech salaries.*
* Note: I don't know the statistics, but I presume that universities take roughly the same number of students in each STEM major. So a university may have approximately 100 graduates per year in each of software, mechanical engineering, civil engineering, ..., biology, physics, ... If for every 100 software graduates, there are 900 SEM graduates, and if only 10% of each SEM major's graduates decide to seek work in software, supply of labour in each SEM category would decrease by 10%, but for software it will increase by 90%. The effect on software salaries would thus be more steep. I acknowledge that this is a very simplified model, but I think it effectively demonstrates my point.
I feel there is something similar to how many people get traumatized about Math in high and middle school that scares them into even believing they could learn about CS. But it's just what I've personally seen.
For instance a lot of STEM is biology, medicine, etc. Such people generally want to work on something at least vaguely people related, or at least in team-based academic settings. Working with logical machines all day, mostly on your own, is not their idea of a good time and their preferred working environment is worth a large salary drop to them.
Likewise classical/civil engineering doesn't teach any programming skills, normally.
The places where you do get crossover tends to be maths and physics, i.e. fields where you're frequently manipulating abstract symbols, where you're often needing to write simple programs to do your main job and so learn on the side, and which involves long stretches of concentrated, isolated thought. But not many people are studying maths and physics, and there's been a lot of bleed for a long time there. It isn't going to result in any major shifts.
> CS isn't a career. CS is part of all careers... [0]
It is true. It is also not novel. Students of different fields have been learning software on the side during their studies, some as a backup plan, some in order to make themselves more hireable in their primary field. Employers have started requesting some software development knowledge from new hires.
Graduate school of any STEM topic usually includes a non-significant amount of programming. I am a mechanical engineer, working in a very mechanical field, yet my colleagues and I spend a fair bit of time crafting and improving programs of various lengths and difficulties to help us do our mechanical calculations.
Some people go to STEM because they love their particular field of study; many do because they are pragmatic and STEM is a pragmatic field. They will have no qualms switching from civil engineering to tech if it means they will get paid 3 times as much. Many have, many more certainly will. Out of my graduating class, from those whom I have kept touch with, the number of people working in tech is just slightly lower than the number of people working as mechanical engineers.
Civil engineers make a lot less since there are so many of them, yet they are still crucial for expensive projects. You only need a few to make a $30 million bridge, where with programmers you need more design and we aren't such a mature field. If programmers worked with purely physical items (well, some of them do), then the salaries would be a smaller percentage of the total.
And now I'm in the situation, early 50's approaching, where I don't have a job lined up for the year, and am out there looking at the market again. I really, really don't like what I'm seeing - coders in their teens, making 1/3rd of what I used to make. Its really a saturated scene, so I'm thinking of other things I can do. Its long since past the point where I should've made myself wealthy by now - but long, long hours, over years, spent making wealth for others has really burned me out on the whole subject.
Nevertheless, I'll pick myself up after a bit of a break, and get back into it. I'll do what I always have done: look at the scene, determine what the new hot framework/language/environment is, learn it, use it, and get a job applying it towards other peoples wealth.
I probably should have been finishing my side projects in all these decades - and boy, do I have a lot of them. More than likely I wouldn't be in this situation now if I'd finished some of these things and brought them to market.
Its just so exhausting, making other people wealthy, you know? (Really: the works I've contributed to have made many, many millionaires over the years... I should be one of them by now. But hey, those high salaries sure paid for a lot of trinkets...)
A friend of mine works only with html and client-side js.
Another only with Java.
I currently work product but have worked with a whole host of languages.
Another friend of mine is an infrastructure engineer.
Another is a lawyer who codes.
We are all “programmers.” There is a lot to be said about why ”programmers” are well compensated, but let’s first discuss what it is that is being said.
What is the specific anxiety being voiced about what group? I’m assuming it’s software engineers. But then what is “well compensated”? I can’t reply to the author because of how vague it is, but, in summary - you should always plan for lower pay regardless of industry, but as long as you provide increasing value to a business, and are much better at it than other people, you will not see lower pay.
Alternately, going with the assumption the author is correct, I'll clip a phrase: the market can stay irrational longer than you.
On the other hand, I’ve been wondering the same thing for thirty years now.
I have been doing some semblance of programming since I was 8 years old (now 39). I think it’s one of those things you kind of have to have a passion for or you can easily get burned out.
But I also think it’s one of those things that are more in demand than ever. If I was laid off I’d have to question why I was working for the company in the first place and didn’t see it coming. There are quite literally 7-8 LinkedIn messages from recruiters almost daily. I’m not sure many attorneys or physicians can say that. And when you are in demand like that you’re constantly leveling up your salary every few years.
Finally, I know or very few professions where every 3-5 years you need to completely have learned something new to stay ahead of the game. When I was 8 I was doing q-basic. I’ve had to learn over 12 languages since then.
As someone who worked as a lawyer for 6 years before switching careers to software (after 4 years of self-teaching, mind), I can say that in the one year I've been professionally employed as a dev, I have already received several multiples of the number of recruiter messages during the totality of my time practicing law.
In the golden age of Disney animation, you'd be a fool to say any of their animators were bad artists, but there were definitely better among them. There are also perfectly mediocre comic book artists who still make a healthy living. There is art with quality that is entirely subjective. All of this applies to code. The best senior dev on the backend team of a small company is probably a garbage coder compared to the new guy at some Bay Area startup. Code that one team calls elegant and amazing may be called overly complex and unnecessarily clever by another.
At the end of the day, being a programmer is easy. Being a great programmer is hard. Like many things in life, you can get a lot better if you practice at it a lot more, +/- the "talent" modifier. But at the end of the day if you can do basic 8th grade pre-algebra, and speak english, you probably have the education needed to be able to program professionally, its just a matter of learning the syntax and patterns.
Just because someone shows up in the bay area it doesn't make them instantly good coders/developers/programmers. Just because a company is in the bay area it doesn't make the dev team good either. Usually the great devs are at fangs or working at a cool startup. There are a lot of companies with little hope and a lot of teams without solid experience.
The best dev at a small company could be the best in the world or the 5th worst. From what I have seen is a lot of good developers end up at a small places because of the challenge and/or lifestyle.
Programmers being highly paid must be an US thing.
Consultants can certainly be paid (way) more than average, but this is not something I've seen for regular employee positions.
The way programmers outside of these cities are paid so much less is another thing that doesn't seem very stable.
A software product can scale to hundreds of millions of customers with just a few employees (ex. WhatsApp). This increases revenue per employee.
Software companies have much higher margins compared to other industries. You can attribute this to network effects and stickiness from lack of easy data interop between different vendors. This limits competition that drive down margins.
Hardware engineers in chip design command decent salaries also from leverage but the ability for a company to switch vendors limits margins, unless you have IP like qualcomm.
Also, the blog post doesn’t claim the change in salaries will be linked to a recession at all —- it’s claiming the supply demand dynamics of the SWE labor marketplace will change somehow. It’s hard for me to reconcile that with the fact that PMs are paid quite well at technology firms that pay their engineers well, and they don’t have the same skill barriers to entry.
Maybe. Maybe not.
The difference between a doctor, lawyer vs a programmer is that a programmer emerges from a computer science program in a "larval stage". Most fresh graduates have very little experience in knowing how to structure code at the level of a senior software engineer. There are years ahead to, maybe, get to the point of mastery.
The professional fields, in particular Doctors, require that the residency graduate is more or less fully "baked" and can perform their role without error. That the residency is grueling is just an artifact of the way the profession organizes itself. Personally I think it is dangerous to require doctors to run long shifts. It is almost more of a test of physical fortitude.
There is the full gamut of intelligence and diligence in the medical community, just as in the software engineering community. Does a grueling qualification versus lifelong learning in other areas make one profession more valuable or not, I don't think so. As others have stated, economics has more to do with supply and demand.
I've seen plenty of open source code, proprietary startup code, corporate code and it is usually shit - full of premature assumptions and legacy mess. It's because writing good lasting code is super difficult even for great engineers. Moreover, running platforms usually need to be constant maintainance which drives up the demand even more.
Developers have an innate ability to keep creating more work for themselves by increasing the complexity of the solutions that they produce. Managers are completely obvious to this.
The monopolistic and highly profitable nature of software companies allows managers to keep hiring more developers, who keep creating more unnecessary complexity which requires more developers to maintain... A vicious cycle. There is no limit as to how much complexity can be created. Most managers still believe that the best way to speed things up is to hire more developers.
In reality, the best way to speed things up is to reduce the number of developers and to hire better developers. The problem is that managers, even highly technical ones are not capable of knowing what a very good developer is. A technical person cannot accurately rank other technical people who are better than them; they can only rank others who are at or below their own skill levels.
There is an old saying that the top experts in any field are those who know when and how far to bend the rules. This is especially true when it comes to software development but 99% of technical managers will disagree with that statement; they still believe in blanket one-size-fits-all approaches.
The spectrum of talent is extremely broad, much broader than everyone realizes. IMO, even the most talented, most acclaimed CTOs and project managers will fit somewhere in the middle of the technical talent spectrum so they will miss a lot of talent.
High wage: The high wage problem is simple and is only around specific regions of the world, Silicon Valley pays more comparatively higher than the other parts of the world. The data showing the salary median $140K seems to not include the salary median for other regions which I'm assuming is around only $20K. So, based on this assumption the median salary for SWE all around the world might fall somewhere around $20K-80K.
Cost of knowledge acquisition: This is also specific to region, the average cost to graduate from an ivy league school costs about $100K-200K, however if you compare this data to the other regions the average cost should be < $20K. This also impacts the salary one makes, after having graduated.
Layoffs: This is something everyone is concerned about, irrespective of their region or place of work, however since the market size is very huge and there are lot of opportunities around the world, getting a job is not that hard.
I wonder which medical residency is she at? My wife is a resident at a pretty busy hospital in NY metro area. She is in her first year as well and doesn't do more than two night floats a week and no more than 60-65 hours a week. I also know so many other doctors (friends/acquaintances of my wife and via my ex-landlord who owns multiple family houses which he rents out these up-and-coming/current medical residents in NY metro area) and NO ONE works even close to 80 hours a week.
This is not to mention that it gets much better after the first year, and by the third year, you're only supervising most of the first years and simply studying for Step 3 (board) exam (if you haven't taken it by then).
I wonder if people tend to exaggerate when it comes tho how much time they spend for work because it makes them feel good/justifiable to the amount of income that they (eventually) receive. Having quit medical school after second year in my home country (SE Asia) and having seen my wife (then fiance) studying for Step 2 and 3 exams, I personally believe that medical studies mostly requires memorization (a LOT of it) and we would be surprised how little critical thinking skills and scientific knowledge (not recent ones they've memorized off the books, but I'm talking about things like physics, math and even chemistry) your average doctor has. They forget it all in a year or two after med school for sure (I can't possibly recall more than 206 bones that I learned in Anatomy in 2nd year!)
What meaningful work is not happening with science or technology because of the cost of labor?
It is very hard to predict economic boom and bust cycles but even harder within industries and sectors.
STEM employment and mass layoffs are no exception. Those in the industry will remember the AI winter (over three decades even in sheltered academia and now going through a boom) and mass layoffs of programmers after the dot com crash.
The scar tissue extends further to those with memories of rocket scientists and engineers becoming New York cab drivers in the 1970s after the glut of engineers after JFKs call to put a man on the moon.
Key thing is adaptability. Only certainty in life is the compounded interest on your mortgage and bank loan.
Example article: https://spectrum.ieee.org/riskfactor/computing/it/the-changi...
Other jobs don't scale like this and therefore there is a limit to how much a single person can make.
That said, I read an article last week that mentioned 70K CS graduates a year in the US, a figure that surprised me that it was so low. I think it is an open question what the value is ofa CS graduate degree is, but an undergraduate degree seems like a great start to a career in software.
Restrictions like HIPAA and such make it difficult to outsource labor on the software side.
It’s clear engineers are overpaid in the US relative to developer salaries in other wealthy countries. That makes me uneasy, but we got here without a well defined union or cartel to restrict inflow of labor.
These factors mean that business can create investment cases, and investment cases provide pay.
If (real) Moore's law vanished today I believe that there would be 5-10 years more innovation before the train stopped. But real Moore's law isn't over yet so I don't think people need to worry.
The big Valley companies who own the $$ firehose that is the ads business hire like crazy and pay top salary not because they need the talent -- most of what they're building with all this talent isn't adding to their bottom line -- but because they can't afford for that talent to go elsewhere and then compete with them.
From my perspective its always a mistake to think you're safe and things will never change. The perceived rarity of any skill set should trend down over time if possessing the skill is valuable.
It is a lot of work to become a good programmer. It's just that most programmers are naturally interested in it and do it in their spare time.
> Then you have to win the grades lottery
Err... grades aren't assigned randomly.
If you cannot use a resource efficiently at all, wasting most of it, then it is not surprising that you end up with a shortage. When faced with this situation, management can: 1) admit that they are the problem, and get much better at allocating programmer effort wisely, a task that will be very difficult even once it's well understood (which it currently isn't). Or... 2) hire more programmers, paying whatever is required to get more
Doctor’s scale by spending less time with each patient giving a crappier experience for everyone
Software has very low design/reproduction cost vs chip manufacturers
That's a good advice regardless of your profession, the only good thing in this blog - rest was rubbish, to put it mildly.
Inventing new industries gets so crazy, we end up leaving things in legacy repos for decades. A complete normalization/standardization for the entire engineering spaces would be both wasteful and unnecessary (what, requiring everyone to know all of the industries and languages before they can get hired?)
Even if you get to the point of AI programmers who can replace people, you may run into a incentive problem because AI would have no use of money.
Also this line:
> Compensation appears to be proportional to the level of sacrifice
Is a doozy and not at all how modern economies work.
I do agree with the general sentiment though. The mechanisms controlling supply and demand of SDEs are not well understood and it is much easier to imagine a shock to SDE supply/demand than doctor supply/demand or lawyer supply/demand. That being said, this would result in a reduction of employment rather than a reduction of wages for those lucky enough to continue being employed.
This person appears to be spending half of their income on charitable donations every year, though, which is admirable but not a smart financial decision. (They've spent one million dollars on it! A million! With a standard savings rate, just throwing that into a bank account would ensure that you could just live off of the interest from that for the rest of your life in some countries.)
I'm not saying that you should be a scrooge with your dollars, but there's a reasonable amount to give and there's an amount that (while great!) means you should expect consequences from it.
Even if you're making far below FAANG rates, just by living within your means you'll be able to have a year or two's worth of padding saved up (especially if you're willing to move to a less expensive area while the theoretical crash happens) in no time at all.
To post an anecdote from a Hacker News comment:
Saw this happen in Houston in 2014. Engineers that had started their careers just after the housing crisis bounced back were sitting cozy on their 150k/year (in Houston that's gobs) roles, not really putting much into savings because "there's always Wells to drill."
When prices dropped from 90$ to 44$ a barrel, I saw candidates do some pretty stupid shit. Nuked the [remainder] of their savings on a new f150 was a classic drama played out over 2 weeks that my whole team was involved trying to talk him down in. Others had to move in with their parents, take roles in deer Park that were something like 2.5hr commutes one way, drop everything for a Saudi role and move out there... Their freedom of choice was essentially yanked away.
The only one that seemed to be handling it well was a fresh 3 years in engineer. No girlfriend, kids, house, and buckets of savings. He moved to Vietnam and weathered the storm on a beach, taking tiny sips of his savings.
https://news.ycombinator.com/item?id=19281509
If you're living within your means, you have nothing at all to worry about. It's really not that hard, and it'll save you a lot of stress when push comes to shove.
Edit: Changed a word because it came off too hostile. The line I changed is quoted by 'saagarjha below, if you're curious about what it originally said.
The number of people in the world without sufficient food, clean water, basic medical care, and other human necessities is far too high. As someone lucky enough to be paid as well as I am, if I didn't try to do something about this I don't think I could live with myself.
Donating 50% is clearly not the financial choice that will leave us with the most money, but that's not my main goal.
Here's what our spending looks like: https://www.jefftk.com/p/spending-update-2018
That's not the only freedom you don't have in Saudi Arabia.
Well, duh. Giving money away is always a dumb financial decision. Presumably they don’t particularly care and can survive without it.
A. It wasn't so much.
B. They weren't trying to police the habits of others.
This post is bizarre in the context of that: it's telling people to do the opposite of what the author does.
Giving money isn't even exclusively a bad financial decision. In a lot of cases, it makes sense. I don't think it does here.
This was written before a Facebook engineer committed suicide in September: https://www.cnbc.com/2019/09/27/facebook-employee-death-was-....
Also once machines smart enough to writing their code i'm sure we will have much bigger societal issues then just us programmers. I see that point written/said so much it's the biggest platitude of the decade.
The good ones, if they know their own value, get paid well.
I'm currently paid well. They went through 50 applicants before getting to me and now rely on me to keep multiple systems running smoothly that run a 100 million dollar company.
I do have a college education, but have been working on some sort of code almost every day since I was 13 years old (now I'm 40).
Many of the things I do for work are easy...mostly because I know the systems so well.
If you look at it from a value perspective the very best programmers are capable of generating an incredible amount. We’re dealing with a shortfall at least in part due to the rapid evolution of the industry, and the immaturity of the discipline.
I can see a future where there’s balance and incomes are lower but not in the near future.
It’s pretty simple. If programmers are easier for companies to find then pay would drop. If restrictions are applied making programmers more difficult to find such as limiting entry into the field like limiting H1B visas or requiring programmers to jump through the hoops of becoming a “licensed” programmer then pay would go up or stay the same. Nobody really cares how much “effort” is required to do your job.
productivity, supply/demand
Businesses can create and capture value faster with technology - they compete for the talent that will deliver that
People are paid well when what they do is in demand AND few people can (and want to) actually do it.
It's that simple.
Not that many people can be decent programmers. There's a matter of cognitive ability: quantitative i.e. IQ, but also probably probably qualitative in that it may take a particular mindset. There's also a matter of interest, which is probably why few women choose that career.
It's very likely that the next decade will be the decade of automation, with a boom in robotics and codification of most routine tasks. A shift to AR and speech based interfaces will also require much deeper expertise than hacking together CRUD apps.
If you get used to living on 1/2 of what you make, or 1/4 of what you make with a partner, you'll pretty much always be fine. Not having kids also helps.
Set the bar low, and plan for the worst. Planning for the worst is also a good practice in programming. :)
Every software project is bespoke at this point, custom made to fit the situation.
Also consider that the iPhone only came out in 2007. In 13 years smartphone penetration has reached billions of people. Which is a gigantic increase in the demand for software.
I think coding pays well because it requires constant learning. You might get off the ground with some technology, but you'd better be completely re-invented every 5 years or so.
We're not that far removed from active collusion between tech corporations to suppress wages and labor mobility.
There are ongoing efforts to pump up the labor supply to keep wages depressed; however software just doesn't scale, and throwing more mediocre labor at it doesn't produce positive results.
> Summary: we don't understand why programmers are paid so well
Who's "we"?
> Programmers are paid surprisingly well given how much work it is to become one
It's a lot of work to become a good software engineer, and also requires certain talents and traits that not everyone has (just like doctors and lawyers).
> 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.
I think this type of sentiment is toxic among engineers. You shouldn't feel embarrassed for charging market rates for the work you do, in fact you should be proud of yourself for making a good living with honest intellectual labor.
> I think we should treat collapse as a real possibility
I see exactly zero reasons in this text justifying this conclusion.
> Compensation appears to be proportional to the level of sacrifice
This is a simplistic and profoundly incorrect view of economics and world in general, this is not how the world works.
Is it? The chorus of HNers who say they didn't need to go to college to get software development jobs and telling others to skip college says otherwise. The significant quantity of bootcamp graduates also landing jobs does too. While both of those categories worked hard too, it's still an order of magnitude less than "doctors and lawyers".
Sure, it takes work to be a software engineer, but I don’t think it takes all that much. You can be a pretty decent one with a few years of work.
That has virtually no relationship to economic value. Economic value is mostly supply and demand driven.
The market isn't the only reason you might be paid less in the future.
Seems pretty well understood to me: we generate a lot of value through the work we do.
there are good arguments for why american companies can't outsource effectively for all roles, or the higher quality of a stanford grad, but they aren't simple arguments and they depend as much on low-quality managers as high-quality talent
even in a high-price city with a reasonable tech ecosystem like london, programmers aren't paid as much as SF or even NY.
comp is complicated
This is not about value created -- it's about the dynamics of the labor market. If there were a bunch of people who could create as much value as you, but demand a lower salary, companies would hire them instead and pay them less.
While that gap has opened for most Americans, it looks like the average progammers' wages are right in line with productivity growth (maybe not Silicon Valley wages, but I think those are pretty disconnected from the rest of the country anyway). So the question is not, "why are programmers' wages so inflated?" but instead, "what depressed everyone else's wages and will programmers remain immune?"
The "what" has been a noisy political argument in the last several years especially. Suspects include foreign competition, automation, changes in corporate management, lax antitrust enforcement, and the decline of unions.
Foreign competition is an obvious and much-discussed threat. My Job Went to India (And All I Got Was This Lousy Book) was the title of a real book in the wake of the dot-com crash. More recently that threat seems to have receded, if temporarily. Companies still employ offshore programmers where they can, but the consensus has emerged for now that some combination of language differences, cultural differences, quality of training, and the difficulty of coordinating across time zones holds them back from taking over the most complex tasks. I see this as a temporary reprieve. Foreign programmers' quality will improve, both sides will learn to cope with language and cultural differences, tools for remote work are rapidly improving, and perhaps most importantly, competitive companies are being founded outside the US. For those companies, there are no language, cultural, or timezone differences in hiring local talent.
I don't see automation as a threat. Or rather, programmers' jobs have been "automated away" on a regular basis, but you still need programmers to operate the automation! Assemblers replace machine code, compiled languages replace assembly, higher-level languages replace lower-level languages, off-the-shelf frameworks and middleware replace starting from scratch... After each change, programmers are more productive and more valuable, not less. This is unlike manufacturing, where the worker who is replaced by a robot may never learn to program that robot.
I don't see the last three (corporate management, antitrust, unions) as especially important changes but others may disagree. I certainly don't see any reason programmers should be immune, except that the above two factors give them a lot of leverage. Lax antitrust enforcement was obviously a factor when some of the big companies conspired to hold down wages, but again, it doesn't seem to be enough by itself to hold wages down. Programmers seem to have done okay without unions, but I do wonder what it would be like if programmers had a guild system the way physicians and lawyers do.
So as long as there’s awful work, there will be a market for high paid software engineers.
Gonna use this gem next time my wife asks when my hair will grow back.
The article literally states several reasons programmers are paid so well yet states "What makes me nervous, though, is that we don't really understand why programmers are paid this well".
It's very similar to the arc of professional athletes, as the mental abilities needed for programming degrade at a comparable rate to physical abilities.
In addition to saving, unionize if and when you can.
I'd rather negotiate with my employer/find another employer that would pay the same/more than unionize.
I hate to be a gatekeeper, but do people not realize that teaching a bunch of people to code and being a constant advocate for the "everyone should learn to code" thing will eventually flood the market with supply and lower salaries across the board?
You've gotta have some self-interest. It's possible to be an advocate for education without cutting off your own feet...
[1]: https://www.jefftk.com/p/programmers-should-plan-for-lower-p...
Isn't it just Jevon's Paradox but applied to labor?
I hope he realizes his experience is also a rather privileged one. Many people, in particular women and black people, have a much different experience.
If you think of privilege as something you have that makes you a bad person, if you know the word and know it applies to you but you try to hide and dismiss your privilege, to find axes along which you have less of it, that's only marginally more helpful than if you were to deny your privilege entirely and insist that all your accomplishments in life have been due to your efforts alone. Having privilege puts you in position where you have an outsized ability to effect change. The best response to privilege is to turn it to fixing the situation that led you to having these major advantages over others.
If I look at my situation, my race, class, and gender privilege have been helpful, but my nationality privilege is by far my biggest unearned advantage. Someone at the poverty line in the US earns more than 90% of people in the world, even after adjusting for money going farther in poorer countries. This is not to minimize the suffering of people in the US, along any dimension, but to illustrate the extent of the problem and the work required. With so much need, how could I possibly justify keeping my luck to myself?
So I earn to give. I can't reject my privilege, I can't give it back, the best I can do is use it to give back.
-- https://www.jefftk.com/p/the-privilege-of-earning-to-give
Similar things are going on in startups these days. Early employees are getting screwed even in cases where their startup is hugely successful. In those cases there’s opportunity for enormous increases in compensation for engineers if better bargaining means the founders and particularly the VCs take less.
Within the law, everyone acknowledges that the market is bimodal. The top new graduates make salaries pretty comparable to entry-level FAANG: just under 200k base to start, going up to the 300+change base toward the end of the "associate" period (7-8 years in), with bonuses adding between 15k at the low end and 100k at the high end.[1] And that's all cash, not stock. (At that level, student the difference in student loan burdens seems like rounding error to me.)
Super-senior lawyers at those firms (partners) make significantly more, and probably more than anyone except ultra-ultra-superstar software engineers (like ML people at DeepMind) or moderately successful founders make.[2] Although this conceals a lot of difference, because very successful partners at the richest firms make quite successful founder/NBA money. But it's probably not worth considering those, because it's very hard to make partner at a biglaw firm.
Just focusing on the first 7-8 years of biglaw career that gets lawyers to that 3-400k level, the real question is: what % of new law graduates get that kind of job, compared with what % of new CS graduates can get FAANG-level jobs? And how much worse are the outcomes for the non-FAANG-level software engineers vs lawyers?
For lawyers, about 15%, give or take, are getting those biglaw jobs---very much concentrated in the top 20 schools or so (basically, you go to Harvard, Yale, Stanford, etc., you can walk into those jobs; further down the rankings you have to be in some top % of your class). And the median for the others is around 55kish, which is your small firms, your public service jobs (public defender, legal aid, prosecutor, etc.).[3]
What does this comparison look for CS grads? Are CS grads at non-top schools mostly getting 60k/year jobs churning out wordpress extensions or are they still making 6 figures?
Also, where do CS salaries even for FAANG folks top out? When you're ten years in, are you still getting what you got at 6 years in, for e.g.?
[1] https://abovethelaw.com/2018/11/biglaw-firm-announces-bonuse... (this is one firm, but the high-fi firms tend to be all fairly lockstep with one another)
[2] all partner mean in 2016: 877k; equity partners (the real partners) 1.1m---it's probably higher now. Median is a bit lower, however, and there are tons of outliers to drag those means up. https://law.yale.edu/sites/default/files/area/department/cdo...
[3] https://abovethelaw.com/2018/06/the-most-important-chart-in-...
We really need an universal basic income (UBI) at some point, or there were will be billions of people but very few, livable wages jobs as the billionaires and potential trillionaires vacuum up an increasingly skewed power-law distribution of the new wealth created, while billions of people live in favelas.
See also: the TED talk on deep learning: https://www.ted.com/talks/jeremy_howard_the_wonderful_and_te...
For 'cookie cutter' business software development you don't need AI to write the software. Better frameworks or even just a respin of tools like MS Access would be much more impactful. Yet we see relatively little progress in the space of RAD tools, which were a big thing in the 1990s but have largely been killed off by the web. How many frontend devs even use a visual UI designer these days? Mostly they write HTML either by hand or using mashups of JavaScript and XML like in React. If anything dev productivity has gone backwards, and expecting AI to fix that doesn't make much sense.
To start with just one big problem - even the best AI can't really conceptually understand something like a business domain, and business customers often struggle to understand what software can do or articulate what they really want.
AI will contribute in some areas, probably with small workflow and performance optimisations. It isn't going to radically change anything.