Hacker News new | past | comments | ask | show | jobs | submit login
Programmers Should Plan for Lower Pay? (jefftk.com)
339 points by luu on Dec 29, 2019 | hide | past | favorite | 492 comments



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.


> 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.


Most doctors are doing simple glue stuff and think they're hot shit. You think I couldn't diagnose that cold, or a machine?

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?


Doctors have physician assistants and registered nurses along with EHR medical databases the hospitals subscribe to for aiding in their patient diagnosis and medical workup via always up-to-date medical coding insurance industry practices (for billing patient health insurance $$$). Any exotic infections/diseases or surgery are farmed out to specialist doctors who are also following medical billing guidelines and a narrow workup to diagnose patients within their specialty.

Lawyers have paralegals that dig through the case studies and case law for them along with law databases like LexisNexis.


>You think I couldn't diagnose that cold

I think you'd get the 90% case due simply to the preponderance of people who have a cold instead of some other, more rare condition with similar symptoms. Problem is you'd cause harm to everyone who doesn't have a simple cold because you have no idea what you're doing.

Comparing the knowledge needed to be a good doctor to what is required to throw up some bloated SPA? C'mon, get over yourself.


Doctors make a lot of mistakes too, just like programmers. But with doctors, it's easy to blame it on the vagaries of the human body. So even when the "cure" doesn't, people expect that because of the differences between individual bodies. This gives them a pass of sorts when they screw up, the medicine doesn't work, the side-effects kill you, you get a fatal infection in the hospital, etc.

With programming, if you are designing the control system for an aircraft and it fails, people will be able to find out exactly what failed and why, and who to blame.

It's hard to compare doctors and programmers, because there are many levels of medical professionals, just like there are many levels of programming.


That's a funny comparison considering doctors must pay outrageous amounts of money for malpractice insurance, but engineers are never held personally responsible for a bug (legally, at least.)


I think you're grossing oversimplifying what goes into making each of these everyday decisions -- though they look simple. Misdiagnosing a cold when its ready a (deadly) brain/amoeba infection is easy to do particularly when the patient presents with vague descriptions of how they feel and 'where it hurts'.

The ability of an experienced professional to quickly decide these things comes after many years of hard-won skill building...


And you really believe your stressed, sick-of-you-already, doctor is going to even consider a brain amoeba when you present flu-like symptoms?

They either have a checklist, or they wing it. You give obscenely too much credit.

Medical mistakes are incredibly common. There are thousands of people who DIE from prescription accidents each year.


There aren't a lot of areas left in CS where "clever" solutions are warranted. If you're writing clever code, then chances are you're doing a disservice to anyone who has to maintain the mess you're creating. Code is mostly just plumbing. Boring code is better 99% of the time.


The flip side of this is that because digital plumbing is "boring", the industry is constantly seeking ways to avoid it. Writing assembly language was (usually) really boring, so we developed good compilers to do that for us.

I look forward to the day where I can send data from one place to another and not have to bother with file formats, text encodings, port numbers, network protocols, and so on. IP (and especially TCP/IP) is so prevalent today that we use "IP connection" and "network connection" interchangeably. Someday I hope we have that consistency at some other layers of the stack. I shouldn't have to say "send me that file -- what app did you use to make it?"


I've been thinking through this for a while now and I've come to the conclusion that the details keep getting more complicated faster than other things can automate them. For example, I remember a time when software served ascii and when the Canadian government asked to buy a version of some software we were writing for the Americans the reason the head of the company said no was because we'd have to support French and that meant non-ascii characters.

Now, UTF-8 is a given and there is a mess of potential issues. No longer are byte-by-byte comparisons reliable, especially in some languages like Vietnamese.

Your example of IP connection and network connection is true, but overall connections are more complicated. Some clients can't use HTTP2, some clients are behind firewalls, some clients need CORS support, etc.

And plus there is this accelerating wave of advancements everyone is trying to keep up with, but that come with real investment. Upgrading OSes, programming languages, frameworks, libraries. Figuring out how to keep data secure.

I really don't see things getting less complicated as time goes on. At least not until we have some real form of AI, but even there I have my doubts because there will always be tradeoffs.


That's why we have libraries and frameworks to do complicated, human-facing bits. If you're rolling your own dateTime, it's a bad idea, but fortunately other people have solutions for this. If you want to get into the nitty gritty you can but you do so at your own peril, similar to how the vast majority of people are not reinventing TCP/IP.

It'll take a bit of evolution to get there depending on how new the problem is, but it also took a bit of evolution to get where we are today, and nothing is ever perfect.


My argument is that, as a function of time, there are more things to consider, not less. Abstraction works to a point, but it doesn't keep up with the growing complexity.


Except by the time those libraries and frameworks become stable and well documented enough for serious use, we decide to reinvent the wheel and move on to something new.


In fact, that's already been solved for the most boring of digital plumbing. The data is JSON (which requires UTF-8), and the port number either 80 or 443 - the library automatically handles that depending on if the URL starts with http or https. `requests.get(URL).json()` will grab that data for you (Python). That only covers a very specific but very prevalent use case, just like TCP/IP covers the most prevalent use case for networking.

What are you doing where that can't covered by that use case? Actually, I can think of tons. What are you doing that can't be covered by that use case, but is still boring?


Something I find myself doing repeatedly is implementing arcane protocols that were created long before JSON. Bit-packed mainframe protocols. After the second or third time of working with another binary format, there's no new knowledge to gain, and it's not interesting work. But it requires meticulous attention to detail and can't be automated. Most industries don't require you to solve this specific problem but it's all variations of this. Shuffle data from one format to another format. Even if it's JSON, you're still moving it from one business domain to another, or one tech stack to another. Backend to frontend. Etc.


I think you are coming from a common perspective for people on HN and elsewhere in IT, where you can just install anything and provision any equipment to install it on and direct others to do the same.

A lot of people aren't in a position to do this. I think actual plumbers also have to deal with similar constraints.

It's nice to not be constrained, but it's also more impressive to do a good job under severe constraints, IMO.


There aren't a lot of areas left in CS where highly generic clever solutions are warranted. There are plenty of cases where a specific business has specific needs and the solution to those needs is more interesting than glue code.


Agree 100%. Programmers that love 'clever' code should think twice about using it. Writing code that can be maintained over a long time is many times more important than saving a few bits here and there by using clever coding.


Mostly it's not the clever code that is the problem, but the way people tend to use it. Instead of covering that clever piece code in a structure with an easy-to-understand interface and a lot of documentation explaining what things allow this to work properly, it's left without any clues what it is and how it works. Essentially a puzzle in the middle of code base to solve for everyone reading.


I don't think they're talking about clever code, more about challenging solutions. Plenty of problems that have challenging solutions, though they are not often easy to recognize.


The flip side of this is that our industry has a huge affection for laziness, incompetence and anti-intellectualism. The moment they get their first job, a lot of people seem to forget that this field is a profession, where learning things is actually a part of the job. Instead, they freeze their development at junior level and whine at anything that's beyond what they know. Often times when I see actual complaints about clever code, the code isn't really all that clever - it's the complainer who can't be bothered to take two hours off and read up on a feature of the language or library they're using 40 hours a week.

When seeing something one doesn't understand, the default reaction of an intelligent person should be to ask oneself what one should learn to comprehend it. It shouldn't be dismissing it as "clever".


I'm in the opposite opinion, CS is filled with clever things we taken for granted. A lot of stuff in this field are innovations or clever stuff already figured out. The remainder is a puzzle like approach to fit it all together alongside moments of novel innovation and puzzle solving.


"simple glue code" tends to be the part that has the most value added. We can keep building new frameworks and technologies over and over again but the real value is in using them to solve business problems.


Right. The problem is that it isn't terribly hard to do. It certainly doesn't require a CS degree. Any reasonably smart person can do it after a three-month boot camp. This is why there's a correction on the way.


This is largely true. However, I've been cleaning up and scaling those systems glued together by dilettantes for years. My salary has been increasing, on average, 10-12% yearly for quite a while. I'm in management now and my primary job is to find and manage 1) people who glue together APIs to solve business problems AND 2) people who can fix the problems created by group #1. There is very little overlap between the two.

I welcome more boot camp grads. The amount of work for both groups is growing. I don't see salaries for devs falling. They may flatten out for some business problems/areas, but new and/or underserved will always appear.


People have been saying there's a correction (or bubble burst) on the way for the last several years.

It's very much a "correctly predicted nine out of the last five recessions" kind of situation.


Having worked with people coming out of a three-month bootcamp, I strongly disagree. The havoc these people wreak on your codebase for the first 6 months to a year after their boot camp makes them completely counter productive to have around.

Incredibly thorough code reviews helps reduce this, but at that point it slows down the skilled members of the team too much for it to be worth it.


Completely agree. As a boot-camper myself, I would have been an absolute disaster for the first 6 months (really, longer) of my career. It was exactly working with experienced people who had the time to provide rigorous code reviews, and my own desire to learn from these people, that prevented me from totally messing up our codebase and eventually brought me up to speed. But even today, I acknowledge that my knowledge is very shallow compared to anyone with a four year degree. And I think the job security provided by that degree — which comes from the ability to do good work on things besides just web applications — is increasingly valuable as the number of developers increases (even though developers can work to overcome this knowledge gap).


Glueing together code gets complicated fast as you start adding more pieces to the system.

There is a reason why so many projects end up being a giant mess.

Most people aren't smart enough to make it through a bootcamp and those who do still need years of experience to be fully productive.


Sometimes it is very hard to do. I am now responsible of a platform that has over a thousand, unique configuration, servers and hundreds of database servers. Putting this together is so easy, it was done by a few guys with no CS degree (not that the degree matters) with a few months of on the job training. It is a mess, it will take about one year to clean up the mess and get it right (for example, just paying the licenses we need on the servers we need will save ~ 60% of the licensing costs). Try leaving a terabyte database on the capable hands of a 3-month boot camp graduate and see how long it will work and how.


There's a definite bubble at the junior level. I feel it will be self limiting as and when the bootcamps start failing to place people and people stop seeing it as a way to easy wealth.


That sounds good, but ultimately seems pithy. Going back to the recent "my business card runs Linux" post, board bring up and PCB design is far from "simple glue code" and far more niche than web dev. Except that pay rates for that segment of the industry are lower than a bootcamp graduate can make in SF,

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?


I think, therefore, we should try to use different labels for different kinds of developers as much as we can.

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.


As jefftk's comment says, the field is too .. protean and ill-defined to do that. We can barely agree on "frontend" and "backend". There used to be separate "analyst" and "programmer" jobs, enshrining that would have prevented a whole load of efficiencies.

It's also why there's so much difficulty in bringing wages down by just training more programmers: it's much harder than it looks. Teaching people to program is far more unreliable than other disciplines; the degree of self-starter on-demand continuous improvement required is very high. Other professions (e.g. actuary) may have a big hill to climb, but the requirements are written down and there is a clearly marked path up the hill. In software you may wake up to find that someone has moved the entire hill during the night and you have to make your own path, again.


I'm not sure the field is mature enough yet for us to be splitting things up like that. I've worked in performance critical code, research science code, website optimization, ads infrastructure, browser testing, experimentation frameworks, dumbphone mobile payments, and other things, in C, C++, Python, JS, Bash, and Java. Most of my coworkers have a similarly wide range of experience.

These have a lot of core skills in common, both hard and soft, but it's such a mishmash of things that trying to impose precision via labels doesn't seem helpful to me.


Perhaps this is due to the location where you work.


Similarly in the UK I have done bits of everything from IC design, IC design software, ARM assembly, webserver (Zeus), network engineering, sysadmin, web apps, Windows CE, and even some actual soldering. Small companies are great for this.


I'm in Boston, and more than half of the above were while working for a single company (Google)


This! I think Rob Pike said it best in his initial talk about Go: there are two kinds of developers...programmers, and engineers. programmers want to build things, engineers are constantly monitoring and maintaining existing structures. the terms "builder" and "gardener" are also used in this context, but I always felt that the classic usage of "engineer" was someone who would maintain, monitor, and keep systems alive...whereas a programmer is tasked with building that system in the first place. Not saying that programmers shouldn't be responsible for the correctness of their own work or anything, nor should engineers never build anything from scratch, it's more a matter of your preference and what you personally like to do in your job.

But what is a "computer scientist", really? Is it just some theorist who sits in an ivory tower and tells us all what to do? In my opinion, a "computer scientist" can actually be either a programmer or an engineer (or maybe have both in their blood? who knows). It's someone who is less concerned about building things for today, and more concerned about how computers are going to work tomorrow. It's a wholly separate role from us "construction workers" who have our boots on the ground and are actually building things...the scientists are concerned with how we're going to build things tomorrow. I don't know if Rob Pike, Robert Griesemer, Ken Thompson, or Russ Cox still work on actual systems code anymore or whether they just figure out how to improve the Go language, but assuming that they only work on Go full-time, that to me is the role of a "computer scientist", though for example Ken Thompson is also a "programmer" because he likes to build things.


...except that people tend to use there words with reversed meanings too :| If a programmer wants to sound fancies he/she uses the term "software engineer".

Also, separating "building" from "maintaining" (when "maintaining" means more than running / scaling / securing, and also includes adding features) is a a recipe for disasters! The builders/creators start creating unmaintainable messes because it's not their job to maintain them.

I don't think these kinds of distinctions help in software... we need different ways to look at the problem...

Also this lack of separation is kinda what makes software dev a cool field to work in... I love the hacker mentality and if it ever fully dries out I'm gonna quit working in this field and move to a fresher/younger one.


Most people with engineering titles are primarily busy creating whatever represents "glue code" for their particular field. Most white collar work is like the saying about dissertations in the humanities: The transfer of bones from one graveyard to another.


> 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.

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.


In my opinion if you can write glue code between major services, you're hot stuff.


One of the easiest assignments I ever had was to write code between two services. It was easy as hell but it looked impressive because both services did impressive and complicated things.

In fact, I think it helped me get my current job.


Or maybe it is impressive.

If I'm working on a blind, handicapped user's interface and someone figures out how to connect OK Google's speech recognition in a few lines of code, and it's legit and allowed by their terms, it's still impressive. Who cares if you don't know the first thing about speech recognition?


It's not impressive. The problem is, no one yet realizes that any person who can learn algebra can achieve this level of skill in less time then it took to pick up algebra. That's what I mean by "you can learn it at a bootcamp." You can hire a random homeless person off the street and in a couple months have him be a competent junior programmer. I'd be willing to pay minimum wage for that level of skill and like you said, that's probably all I need for "glue code."

What's going on right now is a bubble. People perceive these skills to be "hot stuff" when in fact it is just "average" or even "below average"

When the bubble bursts all programmer wages will go down after everyone realizes that programming is a skill akin to driving or algebra. Anyone can do this trivial work.


First of all, please don't use "random homeless person off the street" this way. It's insulting and also many homeless people are highly intelligent.

Try "random walmart shopper" (a box store that everyone visits.) or just random person.

As for your claim that a random person can learn to write glue code, well, we're going to disagree.


>First of all, please don't use "random homeless person off the street" this way. It's insulting and also many homeless people are highly intelligent.

>Try "random walmart shopper" (a box store that everyone visits.) or just random person.

Random Walmart shoppers are people too and they can be intelligent as well. I use the word homeless not to imply lack of intelligence or to insult, but to imply that even a person with no ability/capability/desire of getting a job can with minimal training gain those skills.

>As for your claim that a random person can learn to write glue code, well, we're going to disagree.

Can any person learn algebra? Can any person learn arithmetic? Can any person learn to read an english book? All of these things, seem trivial to learn, but they are not trivial at all. It is only because of the context in which we learn these things do we find it easy later in life, but fail to remember that at the time of learning, these concepts are just as hard as programming.

Programming is not easy to learn just like how reading english is not easy to learn at all. But make no mistake, just like how basically anyone can learn to read english, anyone can learn how to program. Some people have talent for learning languages others don't, but with time, everyone can learn it. That's how cheap this skill is.

The very existence of bootcamps hinges on this concept that anyone can learn. People walk out of a bootcamps thinking they have talent or were taught incredible skills. The reality is, everything they learned is available online for free. They paid money to learn because they lack the self control to do it themselves.


So do you think the average person off the street (the random walmart shopper) can go through a coding bootcamp successfully? I don't think so.

I think the people who can go through a coding boot camp successfully have great arithmetic skills, great reading skills, and can easily solve 2x-7=11 for x in their head in a moment 100% of the time. (Basic algebra 1.) And can read any generic software manual easily, if the manual doesn't assume too much prior knowledge and is written at a basic level.

I don't think the average walmart shopper can do it.

Do you disagree? What do you think the baseline skills are for people who go through a coding bootcamp successfully? Maybe you have more experience with those people than I do. I think of them as intelligent, educated people with above-average SAT scores but without specialized programming training, who decide to go through a boot camp. They're curious, motivated, smart. But they're not programmers.


>I think the people who can go through a coding boot camp successfully have great arithmetic skills, great reading skills, and can easily solve 2x-7=11 for x in their head in a moment 100% of the time. (Basic algebra 1.) And can read any generic software manual easily, if the manual doesn't assume too much prior knowledge and is written at a basic level.

Anybody can do what you just described with practice and training. The typical high school education along with programming is achievable by the typical person.

>I don't think the average walmart shopper can do it.

Stop insulting walmart shoppers.

>Do you disagree? What do you think the baseline skills are for people who go through a coding bootcamp successfully? Maybe you have more experience with those people than I do. I think of them as intelligent, educated people with above-average SAT scores but without specialized programming training, who decide to go through a boot camp. They're curious, motivated, smart. But they're not programmers.

I don't even think you need to go through a bootcamp to get the baseline skills needed for your typical "glue code" job.

Anybody can learn programming. People who go through a bootcamp typically have enough skills to do the job but they likely may not have enough skills to pass a coding interview. Coding interviews are, unfortunately, harder and unrelated to the job.


You said "stop insulting walmart shoppers", but we're talking about intellectual labor. It's not an insult: I don't think given pen and paper but no google, the average person can solve 2x-7=11 for x. (Algebra 1.) I do think the average person knows their multiplication table and can add and subtract small numbers.

Anyway we clearly view people's baselines differently. Maybe you're the one who's right.


It's a biased term. Why would a walmart shopper be stupid? There's no causative connection.

>I don't think given pen and paper but no google, the average person can solve 2x-7=11 for x.

I'm pretty sure everyone on can do this.

>Anyway we clearly view people's baselines differently. Maybe you're the one who's right.

I think you're way off. Check your baseline. There is not one person in my high school who couldn't solve that expression in their head.


I disagree, the fact that you can go to a bootcamp to learn this shows that you're not.


Isn't an alternative explanation that bootcamp actually makes a person hot stuff, despite not teaching much?

For example maybe if you went to bootcamp, you (crimsonalucard) would be hot stuff when you came out (even if you've been programming for 20 years), due to exposure to all the external services you'll be able to glue together.

The fact that your glue code will have runtime O(1) (a single call) instead of O(n^n), but only for up to 4, as the poor kids do something like have four different if statements for 1 to 4, and each one is a nested for loop, and over 4 it silently does nothing, is less relevant than the exposure to the API's at all.

In other words, maybe terrible programmers can be hot stuff writing the latest glue code - even if it's brittle and barely works.

With all the services huge companies are exposing, this wouldn't surprise me.


You're just redefining what being "hot stuff" is.

Under that definition, anyone on the face of the earth can be "hot stuff." You don't even need to go to bootcamp. Just read some online tutorials, make a website. Done. You're just calling the average person "hot stuff."

In my opinion, you're only hot when you know how to do something that is rare, very hard to learn and in demand.


I see a difference between a web site and a web site that exposes a service that on the backend connects API's of two different companies that do the heavy lifting.


There is a difference. But the difference is trivial. Making a backend or a frontend that connects to N amount of API's isn't impressive at all. Any fool can learn this concept.

In fact that's all a modern website is. The old way involved servers rendering pages. Now The frontend interfaces with an API. Efficiency at the cost of complexity.

You want to know what's impressive? Writing a compiler. Writing an OS. Nothing is simpler than interfacing with an API.

If writing glue code is your job and you're getting paid a lot of money to do this stuff then count your lucky stars because truly anyone can do that job.


Welcome to the wonderful world of Dunning-Kruger.

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.


>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.


s/nobody/insignificant minority/


"programmers most likely know by heart a sizable bunch of Bash commands and their options"

ha. case in point.


I happen to have a hobby of reading law cases on intellectual property that was sparked by my business being affected by IP issues.

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.


Yep. The SCO UNIX trial and the ongoing oracle v google cases are exceptionally fun reads. Other notable public narrative vs reality cases included OJ Simpson, the Zimmerman guy, and what’s happening right now with Trump (the treason word gets thrown around so often yet no one actually know what that means legally)


Treason against the United States shall consist in levying war against them or in adhering to their enemies, providing aid and comfort. It's in the Constitution.


undefined in that sentence: almost every word. "Levying"? "War" ? "Enemies"? This is why we have both a Constitution and a body of law. The Constitution uses words, the law defines what they mean.


Those words are not difficult to define or understand. Only a nihilist claims nothing is inherently knowable.

It's possible to understand what treason is, just as it's possible for something to skirt the edge of it and require more nuance and thought.


The words Paul Davis used are defined in the constitution, it’s a legal document. Everything has a legal definition. Legal texts are interpreted by the judicial branch which sets the limits of nuance and thought. As Paul Davis showed, however, not everyone reads legal texts as a hobby.. so one should really delegate that work to someone who does (just like I won’t ask my plumber to create some ML models for me)


that's a load of phooey.

Trump got elected by the people, he can be judged by the people.

This argument you're making is the same mindset that causes people to argue that since freedom of speech is only applicable to the government, we shouldn't strive for the ideal in every aspect of our society.

It's looking at the problem exactly backwards.


Excuse me? I didn’t say he couldn’t be judged, I’m saying people are saying he has committed treason when he literally has not. Which is the difference between public opinion vs reality. I don’t consider my plumber an expert in AI, so I won’t expect him to have the best insight into my job. Likewise, folks who don’t wish to take the time to read legal texts should probably defer to someone a bit more knowledge than them. So call trump crooked, ugly, whatever.. but if you say he’s the nicest and happiest president ever would be just as false as saying he committed treason.

Just like OJ being not guilty based on facts (reality) but everyone already judged him as guilty. Same with Zimmerman. Same with Ulbricht.

Please don’t mistake my post for support of any particular view.


So you believe OJ and Ulbricht were innocent, and the respective civil and criminal court cases finding the opposite were mistaken?


Let me reiterate my disclaimer

>Please don’t mistake my post for support of any particular view.

A lot of America did. A lot of America was going off what the general public was thinking rather than following the actual case[0]. This thread was spawned from the love and desire to read legal texts which includes outcomes of cases which could set case/common law. I read all of the case data against Ulbricht, OJ Simpson, Zimmerman etc. As more and more information came to light it was becoming quite obvious what a reasonable jury would respond with. The prosecution showed a clear connection between Ulbricht, his bitcoin wallet, and they caught him red-handed. The LAPD completely huffed up on their police duties with OJ. The star witness the prosecution brought against Zimmerman flopped on the stand. There is believing one is innocent and then there is the actual court judgement of not guilty based on the case presented. The latter is what matters to me as a legal hobbyist.

[0] PS this is why juries are instructed to avoid discussing the case outside of court, reading news on the case, and sometimes are sequestered if it's a high profile case where such communications can't be avoided


You are implying the amount of difficulty / effort put in by programmers is as great as for other highly paid professions. I just don’t think this is true for most cases. I’ve worked at 2 of the FANG companies where compensations is on par or higher than doctors / lawyers / consultants etc. Sure we all pulled some nights and weekends and did some reading and experimentation on the side, but for the most part it was off to the pub / go home at 6. My evenings and weekends were mostly spent doing “normal” things like playing games, hanging out with friends etc. outside of startups I don’t know any programmers pulling 80 hour weeks regularly, including side projects and self learning.


I don't know any lawyers or doctors pulling 80 hour weeks regularly without billing extra for it.


I know quite a few lawyers at the larger firms doing 70 - 80 hour weeks on a regular basis. The goal of course is making partner, but few will get there. Consultants and bankers ditto.


You don't know any doctors who have ever done a residency?


I wouldn’t say that “Regularly” means “only during the first 3 years of your career”


and 4 years of medical school. A programmer can earn enough to retire before a doctor finishes their training.


You are implying that effort should be correlated to pay. It isn't. The hardest job I ever had was being a bartender/barback at a very busy bar - it sure didn't pay much.

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...


I guess you need to get a job like game programming to see hours like that on a regular (career) basis.


> Nobody has a hobby of learning the law texts on intellectual property

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!


They were exaggerating, there are going to be counterexamples but their point still stands...


This is true, I had neighbor cringe hard when I didn't know how much to charge for assistance. The only way for me to somehow value what I do is to compare how much usual jobs charge even. I dont like this because it causes inflation and unworthy motives (and probably harms society). But it's how I manage to not die giving time for free.

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.


"Nobody has a hobby of learning by heart the bones in the human body or the law texts on intellectual property;"

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.


Wondering if I'm a fraud because I can name about as many bones as bash commands.

chmod's connected to, access permissions

(Maybe I'll come up with the whole song if I ever teach CS in grade school.)


sudo !!


> 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.

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?


the amount of programming/hour you get at a job vs on a hobby project is very different, though, and tends to go down as you get more responsibility.

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.


Most people do not have a habit of reading the law, however this is a path to becoming a lawyer in a few states, including California. http://www.abajournal.com/news/article/want_to_avoid_the_cos...


> Hobbyist programmers (who usually end up being the best ones)

Cite?

Let me guess, you're a self-trained coder.


There is a reason senior role hiring almost never cares about degrees on your resume.

Instead they’re looking at your community contributions and work experience.


This could be a temporary condition.

The principal value in my CS courses was access to systems and compilers (!) that I wouldn't be able to afford otherwise. Most of the people ostensibly hired to present the content didn't add much themselves (one was great, and we're still friends).

However, I've been really impressed with the depth and breadth of the coursework I've seen by way of close friends and younger relatives lately. A robotics class now seems like it might actually deliver on the promise of providing more knowledge in less time than designing/building/programming/etc a complex autonomous robot on your own (for example). You can still do it, but it's going to take a lot longer than just taking the bloody class, or you're going to miss out on a lot of depth/context.


Entirely temporary. I was rejected by google from 2006-2012 because I didn’t have a degree. Suddenly they need more programmers and they drop that requirement. Never mind I have formal CS training, they required a piece of paper.

I would not be surprised during the next recession that employers fall back to arbitrary demands like degrees or obscene amounts of experience.


Probably some. But competent employers will never fall back to degrees. They will always focus on... competence.


Not always true. For example, the AI/ML craze brought a lot of academics into industry and also brought a lot of their politics. For an AI/ML job at most places, prepare to be judged based on having the right credentials (good degree, school and publications) and looked down upon as scum if you don't have right ones.


Or again relevant experience. No one is gonna say no to a person coming out of e.g. Netflix’s search dept or Facebook or has decades of big data experience, regardless of their education.


What is “formal CS training”, if not a degree?


Possibly attending but not graduating (Bill Gates and Mark Zuckerberg come to mind).


I spent time going to college but never graduated. I finished all the required CS courses and a bunch of optional ones plus a few grad level CS courses then left to migrate a Fortune 500 bank off of COBOL. My resume after that was a who’s who of fortune 500s and deeply technical positions but google said no degree, no job. I believe that was the founders attitude towards hiring which has since changed


Have you seen the actual coursework or just the end result?

To borrow from my graphics programming class from ~2008, we didn't actually do much. Every assignment, we were given an almost-working program, and the assignment was just to fill in a single function - the one I remember offhand was a simple linear interpolation.

Granted on the flipside, with my information retrieval and data mining courses, we weren't given any code to start with and had to implement everything completely from scratch.


that was a shitty graphics programming class.

In mine, which was pre 2000 (I'm old), we were doing matrix multiplication by hand to ensure we understood how the underlying transformations worked, building our own renderer's, and so forth.


Yes and no. One of the big problems with coursework at the undergrad level is you aren't typically actually practicing idea and model genesis. This is an important skill, and one that those hobbyists have practiced a lot.


People who combine their natural interests with their work are intrinsically motivated. As such they tend to put in more hours and that has a compounding effect over time. Teaching oneself also has that effect.

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.


I mean it’s true. I’m honestly not even that good of a coder (I didn’t do CS in college and I tend to “hack” a lot) but I’ve been living and breathing code for hobby projects and then work for the last 25 years, and I’m 35. I spend entire days coding nonstop (working on a side project after my job) and I’m still constantly learning. Boot camps or even college degrees are no substitute for this experience.


I "self-trained" at coding before going to CS school. I don't have a citation for my claim (but it seems like a very reasonable theory to me).


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.


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


True but a development machine is a bit cheaper than a steel foundry or an automotive production line. The barrier to entry for a new software company is orders of magnitude lower than other industries.


Also, for the most part, isn't yet monopolized by lobbyists, corporatists and government working together to use regulatory capture to corner markets. It's pretty extreme in some industries, such as telecomm with natural monopolies, but also in markets without natural monopoloes. People even get arrested/fined for ridiculous things like braiding hair, giving haircuts (such as to homeless), selling hot dogs, selling cookies, or selling diet advice, etc.

So in accordance with OP's theory, if this were to happen the salaries for devs would go down.


> Also, for the most part, isn't yet monopolized by lobbyists, corporatists and government working together to use regulatory capture to corner markets

When your flawed government has its own stage in the product life cycle


I'm confused: normally occupational licensing and other barriers to entry are modeled as increasing pay by constraining labor supply. Why do you think I think the opposite?


I was just following a thought from the OP's theory. Although it makes some sense as follows:

Regulatory Capture involves not just occupational licensing, but artificial monopolies over products and services. For a current example, Facebook has been lobbying congress and even publicly stating that they want to work with them to regulate social media platforms and news media; and even though many can see some benefit to these regulatory laws, the trouble here is that critics argue these types of regulations tend to entrench large corporations who have the legal staff and dev bankrolls to deal with these rules. Actually, many industries, even historically cottage industries such as agriculture has been in modern time criticized in this way as having rules and subsidies written by large industrial, corporate entities which benefit large providers by creating barriers to entry for small competitors.

In short, they create legal barriers to entry to creating the next providers, such as the next Facebook. In accordance with OP's theory, as the opportunities diminish, the value of labor decreases.

But yes, traditionally occupational licensing increases cost and barriers to entry to providing a product or service and is modeled as to increase salaties and decrease jobs as labor supply is constrained.

This is an interesting comparison of orthodox economics as you have mentioned with a reasonable yet heterodox theory in the wild I've seen. I haven't seen OP's theory stated explicitly before. Have you? Unfortunately in economics, we are dealing with the science of studying human decisions and as such it is grossly impractical to create a true scientific experiment here to determine which theory makes better predictions. This is probably also partly why economics tends to be snobby, pretentious and inflammatory: it is ultimately a war of words and mathematical arguments when it comes down to it.


Uh, I am the OP, and that's not what I was saying?


What? You don't think you said something along the lines of the valuation of labor to a firm being tied to the opportunity cost of the product of that labor?


There is no such thing as local demand for software engineers, instead you get tend to get paid more the bigger the project you work in is. This means that you'd expect software engineer salaries to be the highest where you have the highest concentration of them, such as San Francisco or New York. If it becomes illegal to gather such high concentrations of developers in one place then all of those high paying jobs will have to move elsewhere, as you can't sustain them without high concentrations.


But that's because employees are the Factory Line in a way.


It's still probably a lot easier compared to other professions. Most need their employers to provide them with very expensive equipment to do their work. Programmers need little more than a laptop. That's a big difference, business-making skill notwithstanding.


"Successful business owner" doesn't mean creating Google, it could just mean having a 3-5 person IT consultancy and independent clients.


By that success measure basically any office worker can start a company just as easily as a programmer. The only advantage I can see for programmers is that a relatively small team can serve a very large number of customers, because software scales much better than other kinds of works.


>By that success measure basically any office worker can start a company just as easily as a programmer.

Yes, but nobody needs them. Companies can hire office workers by the ton, and office workers can't reach further than a small load of work. Software can.


That's a huge, huge advantage. Even doctors and lawyers can only serve a small number of clients. While software can be reused and enable large deployments. These margins make all the difference.


A good software developer paired with a talented marketer/salesperson together with a lot of work (400-800 hours each) have a decent chance.

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.


It's likely that your employer will support anything you ask for to be a better programmer, but will support nothing that helps you to be a better business owner.


Dev lead (actual lead, not just a title) and product manager roles would definitely help, and developers can move into those. Granted that’s not everything, but you’ll need some of both of those to make it, especially product management, even if you’re solo.


You never know until you try.


Not with that attitude.


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.


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.


> 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


> Plus, we will reach peak software eventually - likely decades out of course

I'm amused by people who think that some tech will erase their tech job. Take ops automation (Ansible, not robots); some people think that it's about cutting tech jobs. Obviously there's definitely not fewer SREs today than there were sysadmins 20 years ago, far from it.

Until a major paradigm shift occurs, the need for software / tech can only grow in every economic niche.

A crisis is coming, it's not going to be a problem for those with IT skills / abilities, but for those without.


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.


It hasn't been reduced over time - if anything it has increased. The early online commerce ventures were completely nationalistic in their scope, which is markedly different from today.

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.


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.


I think the surface area of "problems that are possible to solve with a handful of programmers" is so that enormous that even if the capabilities of a handful of programmers stagnated, it would take decades or more to run out of profitable problems. Additionally, the capabilities of "a handful of programmers" increases over time as the best tooling available gets more capable, so the surface area of what is possible expands* over time as well.

* 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.


First of all, the fact that any SWE you don't employ can start their own business, is just a boosting factor to SWE wage.

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 places I've worked have had revenue-per-employee in the $200-300k range. That's total employees, not just developers (so, sales, accounting, HR, as well). Doing some rough math, it's been more like $15-25mm per developer.


Yes, it's the same for FAANG as well. If you just divide total revenue by total headcount, you already get seven figure numbers. But if you divide revenue by the engineers who generate it, you get a big multiple of that.


If you divide the total revenue by the number of HR employees, you will also get a much larger number. (Total revenue / total number of employees) will always be less than (total revenue / subset of employees).

This is not a very good metric.


In a company like Facebook, who is directly responsible for the revenue? And who is working support roles?

If you laid off 90% of HR, how will that affect revenue? What about laying off 90% of the engineers?


HR, Accounting, etc. aren't directly revenue-producing. You could make a good argument that Sales headcount should be included, though.


Divide by number of product managers then, even higher per headcount.


I suspect that at least one cost to entry that might be coming down the pike is a legal requirement to design secure and resilient systems / software liability. This might start in sectors deemed “critical infrastructure” but that line is increasingly blurred.


Most software products must stay relevant, so they need countinous improvement.


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


A software engineer is more like a car designer (or more general the entire R&D of car manufacturers). The number of car designers is independent of the number of cars you are producing, but if you want to have more or higher quality models you have to hire more of them.


Research (R&D) suggests some amount of intentional documented knowledge expansion, not mere personal learning. Every job has personal learning including scrubbing toilets and digging ditches. A person mindlessly smashing buttons will eventually learn to smash them faster with fewer mistakes but that isn’t scientific progress increasing understanding of product use cases. There actually is real research that occurs, with white papers, to test opinions and that isn’t what most developers are doing.


In this context I understand R&D as Research and (product) Development. Sure, that includes actual scientific research (say material science for better break pads) but also the development of that research into actual products (making a new, attractive, profitable break assembly with that great new materials the scientists came up with), as well as mundane product development (let's make a new truck by making slight modifications to last years model).

Programming can fall anywhere on that spectrum.


Low reproduction costs seems like a 90s thing.

If you are building proprietary, not-for-sale software, then low reproduction costs have nothing to do with excess value. Ditto if you're building cloud-y/online services.

On the cost side, too, software comes with extremely high maintenance costs that are often not accounted for ahead of time. These are so high that there had better be enormous excess value in the production and use of software regardless of the relevance of reproduction costs.

The real value of software lies in making the impossible possible.

Automation -made possible in the extreme by software- is extremely valuable. Even beyond automation, there are things humans simply cannot do, and even things that mechanical devices alone simply cannot do as well as software-aided ones.

It's hard to put a price on making impossible things possible.


Software isn't magic. It is either a product or a service the value of which is either a typical business question of marketplace penetration or internal expense reduction. That's it, but that isn't what this thread is about.


> 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.


Yeah, but speed running Mario is also really hard but pays nothing.


Demand.


> 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.


You could say the same about Law. All you need to start a competing practice is an office, if that.


Its true. All you need is an office...and an very expensive degree...and clients. That's all


The parent comment's whole point was that an already-skilled worker can start a competing business with minimal up-front investment, and that the main benefit an existing company provides is its existing brand and customer relationships. Please read before weighing in.


To simplify you can say wage is based on supply and demand.


Supply and demand (SD) doesn’t tell you what the equilibrium price is, which is what we are concerned with. That’s what this analysis resolves, and in this context, the long term view of the wage; of which the wage reaches a state closer to the SD equilibrium. But you’re right that the direction of price is completely subsumed by SD theory.


Exactly. Very, very well explained.


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.


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.


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...


I've heard this basically happened with Law. 20 years ago lawyers were raking it in and everyone wanted to be a lawyer. Today an entry-level lawyer makes less the half what an entry-level programmer does, and with twice the student loans. There's a glut in the market. My girlfriend was a lawyer for a couple years before doing a bootcamp and she almost instantly started making three times what she used to. It's crazy.


I thought a lot of the pay changes with lawyers was due to tort reform and caps on punitive damages, but I am basing that purely on vague memory.

To be fair, first year lawyers at top firms do earn comparable pay to programmers at good companies, maybe not as much as a full compensation package with equity, I’m not sure. But those lawyers who consistently rank at the top of their class and among their peers and stick it out and eventually make partner - they will make much more money than the average software engineer. See this link for some details on what top Texas firms are paying associates [0]. Partners at the big firms make a lot more than 190-300k - probably 2-3x.

The catch is that with law or investment banking you need to be at the top of your class and pedigree matters if you want to get the best jobs. With software engineering these days, a degree is becoming less and less important.

I think at the end of the day the person who enjoys being a lawyer is a very different type than the person who enjoys being a software engineer / coder, and I’d be surprised if there’s much overlap between the two. I’m sure some people can be good at both, and certainly most good developers have the brains to get through law school and pass a test, but the work is so drastically different many people just won’t be happy in the job, and, like what possibly happened to your girlfriend, they move on.

[0] https://www.bizjournals.com/houston/news/2018/06/25/major-te...


For a long time, law was also a thing that a lot of liberal arts majors from good schools sort of fell into when they had trouble turning their English or History degrees into a decent living.

Big Law still pays pretty well--although I assume the associate work life is as punishing as ever--but it's probably not a great career path in general for someone who is mostly chasing the dollars.


We saw this with programmers and the dot-com bubble. There was briefly really high demand and high pay, and then when funding suddenly disappeared there were massive shutdowns and layoffs. Many devs couldn't find work for years, and the market wage was much lower because there were so many extra devs. (College CS enrollment also plummeted then, which is one hypothesis for why CS training has been slow to scale up to current demand.)

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.


I do feel that the dot com bubble was different. In that case, the whole industry was brought into doubt. "Maybe this whole internet thing isn't all it's cracked up to be." That notion is clearly ridiculous in 2019.

The much scarier "bubble" today is "actually most of this stuff isn't all that hard". There are probably also smaller bubbles to be had in AI, blockchain, venture capital, etc., but I don't think those will be nearly as broad-reaching as dot com.


The thing with dot-bomb was that there were cascading effects. All those startups were buying gear from the "Four Horsemen of the Internet" so their collapse brought down a bunch of the large firms as well. (And it was all mixed in with 9/11, etc.)

Today, even if there were a big ad-tech collapse, a bunch of highly paid Bay Area engineers might end up having to move back to Ohio but I'm not sure you have the same overall economic effects. (And, if it's mostly just a drying up of VC capital, the effects are even less.)


Airline pilots real wages have been decreasing for a long time. Starting pilot out of flight school makes like 28k for a lot of hours a week.


Yeah, I’m slightly familiar with that. Flying is a bit unusual since training is so much more expensive than other professions, and requires a lot of hours, so I guess you can consider the first few years like a medical residency. A low-paid training job.

http://www.aacadetacademy.com/CadetAcademy/career_progressio...

AA has an interesting program here, but I still think the best route for aspiring pilots, if you can get a pilot spot, is probably Air Force Academy. It’s very hard to get a pilot spot, though, and I don’t think it’s ever guaranteed unless you do the Army Street to Seat flight program, which does not require a college degree, but they mainly fly helicopters (maybe only?).

I often wish I had been a pilot... currently reading “Viper Pilot” by Dan Hampton which is a hell of a book.


Yes, and the consequence is that there is a shortage of pilots and prices are rising back up.


It's usually less exaggerated than that - stagnation while inflation or salary increases in other fields are higher.


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.


Those companies became very profitable because technology made them so. It wasn't some accident that is here today and gone tomorrow. Technology is at the core of companies like Google, Netflix, Amazon, Facebook. Without the technology, which is implemented by SWEs, none of these would exist.

Their number isn't declining, it's growing.


> Those companies became very profitable because technology made them so. It wasn't some accident that is here today and gone tomorrow. Technology is at the core of companies like Google, Netflix, Amazon, Facebook. Without the technology, which is implemented by SWEs, none of these would exist.

Yes but don't assume that people in india, africa, or eastern europe are too dumb to do the same work. Nor do the outposts of the companies you mentioned pay the same US levels in those countries. There must be another component of this.


> Yes but don't assume that people in india, africa, or eastern europe are too dumb to do the same work.

Where did I ever assume that?!

> Nor do the outposts of the companies you mentioned pay the same US levels in those countries. There must be another component of this.

How about "they pay what they have to"?

In India, if they pay $60k/yr, plenty of talented candidates would work for them. In the US, if they paid that much, nobody would apply.

Simple.


Plenty of talented candidates would work for that price, and some would emigrate for 3x the salary and a visa. It’s a complicated and moving system I don’t think we are modeling properly in this discussion.


Well the question is: why don't they replace the $370k/yr american employees by the $60k/yr indian ones? Why do they pay the premium for US employees? Except for defense projects, it doesn't matter where the code is made, US or India. The German software industry outsources heavily and tech wages don't reach the US levels. Why doesn't Google?


The answer would be: 1) they do, and 2) they can't

1) Google clearly hires plenty of people in India. Here's their new office in India, with allegedly ~10k employees: https://careers.google.com/locations/hyderabad/. The assumption that Google is only hiring "expensive american employees" vs "cheap indian employees" does not hold

2) Talking about "american" and "indian" employees is misleading. Your question could just as well be "Why not hire for $100k from <midwest> instead of $370k in CA?" At that level of salary, you're talking about attracting top talent from around the world, who are often happy to migrate. The salary is a reflection of an arms race between tech companies - the same person isn't going to opt for $60k to stay in India - they will either take a $350k job in Facebook, a $300k job in Amazon, or at worst, a $100k+ remote job to stay at home(numbers are illustrative). You simply cannot attract the same talent due to how global(and competitive) the top-end of the programming marketplace is.


> Why not hire for $100k from <midwest> instead of $370k in CA?

That's not a realistic comparison. That's a comparison of an average-ish salary in the midwest to a far above average salary in CA. Realistically, it's more like $100k in the midwest vs $130k in CA or $370k in CA vs not being able to hire anyone in the midwest because there isn't enough volume to be able to find someone who's that much of an outlier.


> The German software industry outsources heavily and tech wages don't reach the US levels.

German SWE work doesn't pay well domestically. It's also struggling to attract talent. Probably a reason why Germany isn't known for its many profitable software companies.

> Well the question is: why don't they replace the $370k/yr american employees by the $60k/yr indian ones?

In the case of an engineer making $400k in the US, I suggest this is a fairly exceptional individual, with a level of skills and abilities that are rare in _any_ country.

Since that individual produces large profits for their employers, employers struggle to hire them at any price that is lower than their productive yield.

Strong SWEs can make companies like Google and Facebook millions of dollars per year. So these companies will gladly pay any six figure salary for these individuals.

Of course, if they can get away with only paying them $60k in India, they will. It's not their goal to pay well; it's a necessity.


They try to but it's not always that easy. When you outsource you often need a lot more people to do the same work since there is more overhead. So the total cost may not be that much lower and the output is less.

Not saying this is always the case but it has been like that at my company several times. IMO IT and business need to work close together to efficiently produce quality stuff that the customers want. This is way harder if you are separated by a sucky phone line.


Additionally, businesses learn after being burned a few times that throwing distant resources at software problems tends to make a bigger mess than they started with (no matter how good their PM may be). Often one good developer embedded within a domain in a company is worth more than an entire outsourced team.

I'm sure there are exceptions, but it's what I've anecdotally observed over my career to date.


Google would have to become a remote management company for that to happen. But Google makes so much money that they're not really under pressure to do that.

Outsourcing is a strategy employed by companies who need software engineers on the cheap and are less concerned about the non-zero difficulty of remote work/management.


I wonder if lack of competition has made them lazy when it comes to driving down costs. Each of the FAANGS is a monopoly or near monopoly in its niche and American regulators seem reluctant to deal with that.


Except for defense projects, it doesn't matter where the code is made, US or India.

Actually, yes it does.


My point is that there are usually quite specific conditions and money flows leading to very good compensation for certain jobs, rather than a 'force' like 'Technology' which seems a bit magical to me. An example is when Ford starting offering higher wages to change the labour market dynamics [1]. Although yes, this was brought about by the industrial revolution, saying that doesn't really provide the crucial insight into why it happened and the effect it had.

[1] https://www.forbes.com/sites/timworstall/2012/03/04/the-stor...


Your initial comment talked about "tech companies that became very profitable very quickly" as if that's some sort of accident. I'm reminding you that it is not, but a direct result of their technological focus.

Technology is a force that makes employees more profitable. Work that used to require dozens of employees now requires just one engineer writing code for multiple computing devices. Nothing "magical" about it, it's the very nature and purpose of technology.


I didn't mean to say it was an accident, but at the same time surely you aren't claiming it was an inevitability?


It is inevitability. Increasing productivity is the goal of technology. Look at technology from the dawn of time, all it did was increase the productivity of labor, both individually and as a group.

Without getting into a huge topic - it also encourages a "winner takes all" set of conditions, in which companies with the right technology and the best employees control a disproportionate amount of the profits in their field.


Current comp is ultimately because computers and the internet are both the entertainment medium of choice (displacing film, radio, TV, and we know all of those industries and the supporting industries they spawned were huge) and a universal personal and business tool (with an impact as great or greater than the automobile did on both personal and business transportation and, as before, we know how big the auto industry and supporting industries became). Computing and the internet are so fundamental now that I do not expect this wave to stop until every person on the planet, no matter what their local standard of living is, has a personal smartphone within arm's reach 24/7.

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.


I guess that depends on if you're talking about bay area comp or high comp elsewhere, which are on two very different levels, but still high compared to other jobs in their respective regions. For the bay area it might indeed be coupled to extremely profitable tech companies, but elsewhere there is still a very high demand for software engineers from SMBs.

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.


Those handful of tech companies need a boat load of engineers, restricting the supply.

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.


> 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.


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.


Yeah this. I've been in the industry almost 20 years and over that time have noticed a massive shift in recuitment processes.

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.


> 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.

Technical debt: As an oversee talent, cleaning up the technical debt created by (now left) US employee, we can see that both yours and mine experiences are anecdotal.

Slack Communication Me: 1. Question A, 2. Question B, 3. Question C US employee: answers half of the question B, general ramblings about A and C

Zoom communication Me: Lets get on zoom and figure this out right now US employee: lets schedule the meeting on 2 days, throw a PM and two more developers in it, so they can waste time too

So, I guess, lets agree that generalizations are not ok.


You just made the parents point about the overhead in dealing with offshore devs is too high to be productive.

Perhaps you’d like to expand on this technical debt you’re cleaning up?


There is a flip side to this: check my other comment. "Overseas talent" is not invested in the product because most companies don't treat "overseas talent" as equals. My experience as "overseas talent" is that US companies bring their own technical debt which they are powerless to fix and they blame us for their incompetence.


Your experience is vastly different from mine.

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.


The comment suggested people who still lived overseas. The foreign born talent you work with lives in the US now. If anything it suggests the best talent moves to the US for the better salary and quality of life.


My company has significant teams in many countries. Daily I work with people from all over the world. I've certainly worked with some excellent people who worked in China and in India and had never set foot in the US. But you are right, the majority of the people I work most closely with are in the US and so I know their characteristics the best.


You are both making different points, because I agree with both of you. Some of the best engineers I’ve worked with have been foreign born, and I’ve also seen disasters happen due to outsourcing to foreign talent. These are two vastly different groups we are talking about. The best foreign engineers almost always end up working for well paying product companies. The other end of the spectrum, foreign or US, often end up at contracting companies that compete on price.


I think a lot of the good practices and skills necessary to ship good quality software are not documented well (or formalized). That's why working with good teams and learning from good devs (or profs) is what determines the quality of a developer.

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.


Totally agree. Successful software engineering has almost nothing to do with clever programming tricks and everything to do with writing software that's empathetic to being within a commercial and team environment. That means writing software that takes into account that it will be read by others, used by others, and inevitably changed by others.

Interview processes at so many software companies don't do a good job of selecting for it. They still look for algorithmic competence and next to nothing about teamwork and structuring software projects.


I’d argue that many of these practices and skills are in fact non documentable/teachable (see the oft cited problem of teaching recursion/pointers to CS students, and that’s just one of many fundamental required things that are way more formally defined compared to “leading a team to ship consistently good software”). I’m sure many of us have seen very motivated, well intentioned junior developers who struggle very hard to push and improve their skills and still get completely left in the dust compared to the engineers who just seem to have a knack for it.

In this way software engineering resembles traditional craftsmanship more than any other discipline.


Methinks this is a property of a new (~50 yrs) industry, rather than an inherent property of programming.

Whereas programming itself has somewhat solidified, most of the programmer management/learning/etc. state-of-the-art still deals in nasal demons, i.e. much is still seat-of-the-pants experimental.


I think if you play the game of finding the lowest bidder to do the job you'll definitely run into folks who aren't good on both sides of the pond.

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.


I've worked for US companies and I'm amazed how low quality their talent is in general compared to talent in Europe. Then I realized that US companies can afford to buy top 2% talent in the EU, but most of them can't afford to do the same in the US. So this leads to a very frustrating situation where you're smarter than most of your US colleagues, but they still tell you what to do because they hired you.


Just as in other fields, Europeans tend to outpace the U.S. when it comes to book smarts, but lag when it comes to things you can't/don't learn in school. They're great at building exactly to requirements, but less skilled at handling the unexpected or coming up with something novel. There's a place for both skill sets, fortunately.


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.


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


It's hardly a one dimensional thing though.

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.


Sometimes but usually I think the primary factor is the personality of the junior engineers. I think to be successful you have to like learning independently and have a good work ethic. Most places don't have strong mentoring programs and as you mentioned some programmers won't mentor for whatever reason


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.


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.


Interesting. Any examples of this kind of lower valued work?


I mean, it's not precisely lower valued. It's valued low enough by the in-house SWEs, that they aren't going to do a good enough job to prevent embarrassing headlines.[1] Therefore, the outsourcing company isn't going to charge much less.[2] At the same time, they provide insulation from responsibility if something does go wrong. So they can pay much less and capture the difference. The cultural gap[3] prevents their employees from working directly for companies like their clients so competition doesn't equalize wages.

[1]This is a reference to particular events of which I'm aware.

[2]e.g. an hourly rate equating to $250K/year, maybe more.

[3]I mean nerd culture, not "real" culture.


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.


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.


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.


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.


> 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.


Yeah, he’s saying I’m either not that smart, or that I’m wasting my life... I’m not sure what to be offended by here.


Maybe you are lucky enough to work on interesting things and don't need to be offended?


Some people like cross-words/sudoku; I don't understand it except I like my work too just for the sake of solving problems, which is basically the same thing. Some people find satisfaction in "uninteresting things".


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.


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.


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.


15% of your pre-tax salary saved for 40 years should get you enough to retire at a comfortable level compared to your current spending. Lots of tech workers do not get 40 year careers. If you plan on a 25 year career, you need to save more like 35%.


I save around 30 pretax...theoretically it’ll get easier with a TC increase. Don’t know how to save more without drastically reducing quality of life though.


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.


No. So you can be old and crippled and still live.

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.


> old and crippled finally going on the vacation you dreamed of > living off rehydrated beans and eggs

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.


The last 10 years of life gets incredible expensive unless you children who want to be full time caregivers... $30K per year + social security likely will not cut it. $30K today will maybe just cover the in home assistance in a medium to low cost city. Unsure how inflation will affect things.

You'd need much more than that....


> 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.

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.


> My advice is similar: live on your base salary, and save a lot of it

To be fair, that comment doesn't exactly align with advising someone against getting a mortgage they can't afford unless they receive a bonus.

I'm currently reading "Narrative Economics" by Shiller and it mentions propaganda historically being fed to the poor/middle classes in regards to saving as much money as possible (so banks could profit or earn commish off it)...I'm by no means against saving/investing money, but your original comment (and the multitude of others that are similar) makes me wonder how much of that propaganda is alive and well today.


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

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)


There’s a middle ground which is to spend intentionally so that you’re not wasting money. You can set aside a percentage for purely fun stuff. But a lot of us waste money — we spend on stuff we don’t need, things with diminishing marginal utility. How many dinners out a month are really necessary to improve happiness — and at what point does it cease to move the needle? That’s subjective, and will vary from person to person.

It’s about being intentional.


Or retire at 40-50 and live the good life doing all the things you didn't have time for when you were working, without being crippled like people working regular jobs are when they retire.

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...


This is an extreme, uncharitable interpretation of the parent comment.


I think on the types of salaries this article is referring to, you could happily do everything you want to reasonably do lifestyle wise while still save a safety net for the future. Travel, coffee and restaurant meals, expensive hobbies, nice neighbourhood. Should all be achievable.

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.


> So you can be old and crippled finally going on the vacation you dreamed of?

No, so you can retire early, as in your 40s. It's stated clearly in the article and not easy to misinterpret.


And if ageism in the industry is as bad as it seems to be, being able to retire in your 40s might be a pretty important consideration. If nothing else, it gives you a way to turn down work you don't like doing.


By this logic the eptiome of efficiency would require my children to die on the same day I die. I can't bring them with me after all.


I think there's a balance between what you and grandparent are suggesting, but it's hard to strike, and there seems to be a lot more advice about either retiring by 40 or yoloing it than striking that balance.


You seem to be fighting your own personal demon here. This is not what the parent commenter meant. If you can't meet basic needs, there is no point trying to save a lot of money. The advice becomes relevant as your income begins to rise above cost of basic needs.


This definitely flies in the face of what the economist Milton Friedman[1] perceived as our societal values.

I personally hope this kind of thinking isn’t the trend.

[1] https://youtu.be/km9OCw3f5w4


In my experience, people with this argument are often trying to rationalize exceptionally unaffordable hobbies, like leasing a top end Audi or Tesla every 3 years.


"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...


All we have to do to solve a software crisis is add few more frameworks and platforms. Then everything runs so slow that you can't implement anything new.

Problem solved!


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.


> 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.


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.


That song and dance has been preached for at least 20 years and I'm still waiting for it to happen. After working several jobs managing outsourced talent, the problem for me was never quality of engineer, it's proximity to the business requirements.

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.


As a developer in Eastern Europe I am in this game for almost 20 years and I feel like things are changing fast.

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.


> 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.

I'm working on a daily basis with colleagues in Eastern Europe as well as with India and Phillipines. There are vast differences in culture that is affecting workplace performance. Philippines are fairly americanized and function almost like Europeans, but they are also paid as much per hour so why suffer the distance and timezone disadvantages when you can stay in Europe.

Indians are still cheap per hour but have a vast national labour market which means they rarely stay in a job for more than a few months, perhaps a year. It means many won't stay for the duration of a large project, and changing team members frequently is a burden on any project. Countries also have very different leadership expectations and culturally-savvy leadership is in short supply.


I was told this twenty years ago when it was time to choose a college major. I believed the doomsayers then, and that derailed my programming career for a good decade.

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.


Not saying you're necessarily wrong, but there's been similar comments about India and China since the early 2000s. India alone has over 1.3bn people, and compensation there is still a fraction of what it is in the US. If it was all just a numbers game, there should not have been a single working developer in the US right now.


It definitely isn’t just numbers: language is also an issue, and, as I noted when someone asked about auto-translating programming languages, Chinese doesn’t seem to have the concept of lowercase/uppercase, so some things just wont work unless the developer really gets to know things that nobody will teach them because everyone else thinks it’s “common knowledge” and doesn’t realise it isn’t.

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.


I don’t think India and China are the threat to US software jobs. It’s Latin America: same timezone(s); shorter/easier flights (because of the timezones as well as the distance) with easier visa requirements; far greater cultural familiarity and/or similarity (in both directions); lots of people who speak excellent English (in Latin America) and a fair few people who speak Spanish now in the US; less fear of IP theft; no trade war.

Somewhat minus the timezone, a lot of these things apply to the Philippines, too.


Latin America is less of a threat simply because of population size. All of Latin America combined is half the size of just India or just China individually.


You also have to imagine that India and China have increasing quality of life, more demand for their own software and (eventually) higher salaries.


Generally the hard part about programming is communication, both with machines and with all sorts of stakeholders. That's why "naming" is one of the hardest problems in programming.

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.


Based on what I'm seeing living in Vietnam for the last 4 years, the tech salaries here are increasing YoY as developers realize they can make as much as those 'bay area' people. They increasingly have the same level of talents, or better, so why not? Not only that, but the cost of living is increasing in the larger cities like HCMC, so the argument that it is cheaper living is starting to lose weight.


I saw that a few years back when I was working with a company that had outsourced a lot of its operations to India because India was so cheap. Problem was, India had gotten more and more expensive every year to the point where it didn’t make economic sense any more... so they were looking into offshoring their operations to Africa.


I think you have it backwards. Most good programmers in non-first world countries should plan for much higher pay as remote friendly companies grow. The problem isn't that demand will diminish due to the larger pool, the problem is that the demand for good programmers outstrips the entire world supply by a lot.


US alone has 300+ mils so if it was so easy we’d have lots of local competition already but we don’t.


At my workplace, people work from home when their kid is ill or whatnot, but management has been pushing back against us having more work from home days, and there has been much Sturm und Drang over this.

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.


You don't want to put your software development in corrupt countries. I mean, do you really want to hire a team of people who are used to paying bribes to get ahead?


You’re tarring an awful lot of people with the same brush there, and also neglecting that people may be used to paying bribes aren’t necessarily people who want to pay bribes, and they may act differently when bribes aren’t something you essentially have to do.


It doesn't matter that not everyone is a problem, as long as we can't properly tell one from the other the problematic ones has to be a part of the equation when you deal with corrupt countries. This will usually eat everything you'd save in salaries, which is why efforts to move development to third world countries usually fail to reduce costs.


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.


None of what you write explains why more people haven't switched into the field, bringing wages down. Other fields work high wages have far larger barriers to entry.


So that's why this doesn't make sense to you. You're refusing to think like an investor, only like an employee. Comparing one field to another field from the perspective of a laborer is useless, because the job and career only exists in context of the business itself. Until you can talk about investibility, this will remain a mystery to you. You've unintentionally demonstrated the difference between a programmer and a product savvy software engineer.

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?


I'd always thought it was because the marginal cost of a developer is 0, right?

That is, developers build software, then they go to work on the next thing while company can sell existing software.

Each additional unit of software sale doesn't have a developer cost component (unlike for example, shoes, where the labor cost of the worker is factored into making each additional shoe).

Is that close to what you're saying?


I've seen a bunch of people switch into the field, realize that they HATE writing code and promptly leave the field. It's easy to forget on a site like this that very few people actually enjoy programming. You're translating human ideas and language into something a machine can understand. That's not most people's idea of a good time.


What makes you think people haven't switched?


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.


Quantifying worker output being prohibitively difficult means rankings are not easy at all. In big corps the top ranking is given based on things like knowing the right people and taking credit for other peoples work. At least there is some fairness in the industry via standardized leetcode interviews.


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.


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.


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.


> 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.


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!


That's also the premise of Pascal's wager. By their reasoning, believing in God has a low risk, and high reward. You pray a bit, go to church, and you could end up in heaven. Whereas not believing in God could either be inconsequential, or land you in hell, low reward, high risk. So a betting man should always choose to believe in god. Of course we know that's not how it plays out.

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.

https://en.wikipedia.org/wiki/Pascal%27s_wager


> Of course we know that's not how it plays out.

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.


Yes, the assumption that believing in a god that doesn't exist is only a minor negative in life is wrong and therefore the whole wager falls flat on its face. Of course, each person decides this on their own, but we know without any doubt that it's not a generalisation that can be made about everyone or even a significant percentage of people. We know this due to numerous counterexamples (myself included). In fact, it's purely opinion and conclusions simply cannot be based upon this assumption.


Your opinion is valid, but your reasoning is circular. You're basically saying there's no way there is a hell, so there isn't a good reason to avoid hell.

The argument is that a life fully wasted on false assumptions is still better than an eternal hell.

The same reasoning can be used to discount all sorts of black swan events, including programming becoming unviable some day, if we want to come back on topic. Pascal was basically arguing for respecting the ultimate black swan event, with the understanding that infinities skew any pragmatic calculations.


No, that's not my argument at all. I said nothing at all about hell. I have no idea where you got that from, but surely not from my post.

My argument is that believing in a god that doesn't exist is much more than the mere inconvenience that Pascal makes it out to me. It actually degrades life to the point where it might not be worth living. This is, of course, an evaluation that one can only make for themselves, but one that many have made.

I'm saying that believing in god simply on the off-chance that he might exist, is vengeful, wrathful, and a piece of shit (as described in the bible) and will judge you on petty shit (as also described in the bible) in exchange for a life that's not worth living, where suicide is the best option, is not a wager any sane person would take. If it was as Pascal says, a minor inconvenience at worst, then Pascal's wager would make sense. Since it is a life-altering change that leads to one of the lowest possible qualities of life, then the wager no longer makes sense as the person faced with the wager now has to live a horrific life on the infinitesimally small, asymptotically to zero chance that said god above might exist.

And that's before you get to the possility that if a god might exist, other gods might exist. How do I know that believing in the Christian god (which Pascal's wager is based upon) won't send me to hell when the Islamic god judges me. Or Zeus. Or Mars. Or Aphrodite. Or the Jewish god. Is he the same? No one knows. Or maybe an Aztec god. Or one of the thousands of religions of the world that have gods. Or some other imaginary deity. So which one should I believe in when I can only choose one out of thousands? Pascal and the entire church don't make a case for their god being the one in over two thousand pages of ranting.

Pascal's wager is beyond fucking absurd. Then again, the idea of god itself is beyond fucking absurd as well. Especially for someone sane who wants to live their life as best as they can, not based on some imaginary wager and imaginary forces.


> Of course we know that's not how it plays out.

Usually because people don’t think the probabilities are 50-50.


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.


If employed under UK law then your London friend will also have massively improved employment rights. UK is not fire at will like the US. To contrast US-UK salaries you need to compare to the London contractor market where SV salaries are possible - but with zero employment rights like the US.


> 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.


Uh, maybe you mean one radiologist is interchangeable with another. And one pediatrician is interchangeable with another.

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.


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

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.


To back this up, if you need a surgery, you want to go with the surgeon who has done at least 100 surgeries of the specific type you need and who has done a fair number of them recently. A skilled and experienced surgeon is key for best outcome in many surgeries. However, the comp from the insurer is going to be the same regardless of skill level.


On the same theme, if you need surgery and are a high skills athlete who can make millions off of that surgery you won’t pay the going insurer rate


I think it depends the 'how good, how fast' curve of automation

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


Considering most of their revenue still comes fom one area I would imagine they could shed a substantial portion of their workforce without any technical advances.

My guess is it's only a lack of direct competition that is stopping this.


> If google finds a way to run itself with 5k developers instead of 30k, that's a scary change

Google has a lot more than this, FWIW.


what's the actual number? I tried Googling it, and the first few results are giving me numbers from 5+ years ago (around 20k)


I’ve generally heard that Google is about half to two-thirds engineers, and they have around 100,000 employees. I’m fairly sure they have the most among FAANG.


Yeah, I can't see CRUD app development providing top-tier salaries for more than 5-10 more years.


What CRUD app companies pay top tier salaries currently? They all pay much less than GAFAM from what I have read.


Most engineers at GAFAM (or whatever the trendy acronym is) are doing CRUD work.


I prefer FMAGA.. because of the ambiguity.


The rules and regulations are changing. More big companies need people to make more ADA compliant and GDPR compliant CRUD apps now, all these web apps will either be maintained or die, and another take it's place. So until some major patterns are agreed upon by software vendors/browsers/frameworks or whatever, I don't think it will change much.


"How easy it is to become one" much to every talented engineer's chagrin. If I had a dollar for every engineer who writes unmaintainable, non-tested code that doesn't scale or even manage a company's current needs particularly well I'd be rich. I think we need to go in the opposite direction and I know I'm not alone in that thinking.


> If I had a dollar for every engineer who writes unmaintainable, non-tested code that doesn't scale or even manage a company's current needs particularly well I'd be rich.

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.


Yes and often startups are the ones taking a risk to solve more challenging problems with technology versus the FAANG like companies who operate in large or multiple markets that have predictable money in them for example ads or e-commerce. The pay and overall wealth in tech are tied to some ethically questionable problems and the fact startups can't pull top talent to solve hard problems that are still potentially vastly profitable is worrying. I expect things in the startup world to be even more uphill at least with tech talent in the next decade unless there is a major shift in incentives, this however, will require either restructuring the average equity agreements or early investments with larger money for larger salary for key early employees.


> "Yes and often startups are the ones taking a risk to solve more challenging problems with technology versus the FAANG like companies who operate in large or multiple markets that have predictable money in them for example ads or e-commerce."

Never worked a FAANG, I see. They have plenty of risky projects with challenging technology problems that they spin up to try to enter new markets. You don't hear about most of them because, like most startups, they often don't work out and die quietly.


A lot of FAANG engineers also work on infra, OS, security, private/public cloud, tooling, etc. which have impacts on the company bottom line but aren’t necessarily visible as external products.

It’s not just 100 people doing ads and 30,000 other people playing ping pong and trying to outsmart each other with Haskell.


That's nice, except the majority of FAANG engineers will never see one of those projects.


There is a kernel of truth in this article. Consider this:

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.


Anecdotally so not worth much, but I keep telling all of my acquaintances in SEM, law and other paths who struggle with making ends meet to try their hand at programming, even if it is not their preferred vocation, and so far none would get past very basics introductory tutorials without giving up, if ever giving it a chance at all.

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.


My experience is the opposite of yours. Could it be possibly a function of age? Because a significant number of young engineering graduates I know have gone into software development jobs.


The problem is "STEM" is a very vague category and has huge numbers of people in it with skills that are no more transferable to programming than an artist or historian would have.

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.


My experience has been different. Do you remember this highly upvoted comment on Ask HN: CS, still a good career in 3-5 years?:

> 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.

[0] https://news.ycombinator.com/item?id=21815428


The pay is a combination of difficulty hiring, value added to the enterprise by the work, shortage of engineers, and market rates.

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.


I've been programming since I was a teenager in the 80's, and have seen it all. Really. I went from being a god-like teenage computer genius, to an over-the-hill "old guru guy", with all the pay scales in between. I've done some big things, and I've done plenty that I'm not proud of.

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...)


#define PROGRAMMER

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.


Contrast to the examples given: Veterinarians, who basically do the med school thing but don't get anywhere near the pay output. Or the social status, it would seem.

Alternately, going with the assumption the author is correct, I'll clip a phrase: the market can stay irrational longer than you.


I often heard it as: “The market can stay irrational longer than you can stay solvent”


That's why I trimmed it where I did, as the author feels they have become rational. If -- if -- they are, no guarantee on timing for everyone else waking up.


On the one hand, I’ve been wondering the same thing for the past thirty years.

On the other hand, I’ve been wondering the same thing for thirty years now.


The best part is, that unlike medical or law you can also do it from virtually anywhere.

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.


> I'm not sure many attorneys or physicians can say that

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.


On Twitter, there are lots of validations about how easy it is to be a programmer. This all seems to be based on piecing together a few NPM packages.


Conversely, there are a lot of places on the internet that think that unless you have a BS in Comp Sci, and work in Silicon Valley, Bay Area, or NYC, you aren't a "real programmer", you're just some code monkey that can throw together a few npm packages. I think programming doesn't get compared to art as much as it should. There are certain metrics of "good" and "bad", but there is a lot of gray are and subjectivity.

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.


"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."

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.


And there is the problem that a lot of the 'good' coders generate code that cannot be read by mere mortals, i.e. the majority of devs.


The software industry has done a really poor job of separating button pressers from actual engineers. Just like in civil engineering not everyone is capable of being a good developer.


This is just the Dunning–Kruger effect in action.


Author is in a personal bubble and doesn't know it. Most of my European programmer friends make less than their sales department. I bet it must be the same in most of asia, india, etc.


Living in EU and having changed a few countries in the last decade, I can confirm this. Programmers are paid absolutely average salary, typically less than most other engineering professions.

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.


"Pay is low in Europe" isn't really true. It's a statement based on the (very frequent, deliberate and problematic) conflation of the EU with Europe. Wages for programmers are pretty high in parts of the UK, Switzerland, and some other places. In provincial Germany or French classical engineering firms, yes sure, wages are much lower. But then developer wages outside of California are nothing special in the USA either.


I'm not sure about California, but as I was interviewing for some positions in Zurich, the wage adjusted for cost of living in there, and excluding Google (which has a presence there), is also average. I lived in Paris for some years and the same was true. I have several friends scattered across Spain, Germany and France in several big cities and nobody is getting rich. Maybe I'm missing the cool working positions.

I never ran any estimate for London since I never had an opportunity to work there.


Indeed - you can make more driving a tube train, or being a pretty bog standard policeman than what many devs earn.


Sorry, yes, the article is aimed at US programmers in cities with high salaries: SF, NYC, Boston, etc. I should have clarified that.

The way programmers outside of these cities are paid so much less is another thing that doesn't seem very stable.


What a horrible argument. Other professions have guilds that demand sacrifice rather than focus on skills, and programmers get paid well without that... and? Most business managers are far smarter than this post assumes. People pay more and more money for software because they experience and measure the value that it provides. Until the world is saturated with software solutions we are unlikely to see a major drop. According to the department of labor the demand for software engineers has continued to grow, not fall. Sure, 4 week bootcamps won’t suffice for many tasks, but the fact that those folks are getting hired says there is still a lot of low hanging fruit.


The article doesn't mention two very important things working in the programmers favor - leverage and margin.

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.


This seems reasonable for the SF Bay Area. We're getting close to the next recession. The last two times (1999 and 2008) San Francisco and San Jose emptied out, foreclosures everywhere, traffic way down, layoffs.


I don’t see why this is reasonable, but for what it’s worth my recollection of those years does not align much with yours. Home price indexes in Cupertino were down 15% tops even when mortgages were nearly unavailable, and SF city population peaked in 2001 and bottomed in 2004 at a count equivalent to 1999 (a total loss of 11,000 people, ~10%). This is even with Silicon Gultch hysteria.

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.


A part of me can’t wait for this to happen. The pretenders and hucksters get cleared out. Good people and good ideas have a chance.


Good people and good ideas need funding, which dried up pretty bad during the last recession. The startup market got hit harder than any other part of tech. The established tech companies as of 2008 survived the downturn and IIRC most of them didn't even do layoffs.


> We're getting close to the next recession

Maybe. Maybe not.


I would argue that a good developer has spent many years learning and perfect their art, more so than any residency. Over the last 25 years have been continually learning, reading papers and journals from CS and mathematics, as well as online sources. I suspect most developers need to spend time at least reading and honing their skills across their career. To be fair many doctors read medical journals and may attend seminars.

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.


Demand for software folks is so incredible (anecdotal), it’s hard to see salaries falling anytime soon. As a mechanical guy, I envy the job selection. Software jobs outnumber mechanical 10:1


There seems to be a premise that a programming is actually easy and we are slowly realizing it. Who else finds it flawed?

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.


What company writes lasting software nowadays? Most of the consumer facing stuff i use gets rewritten (worse, but fancily) for no apparent reason every 2 years. I can name products


Programmers have their own cartel but instead of focusing on reducing the number of entrants in the field (e.g. by demanding special universities or certifications), it works through job creation.

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.


There are three different problems the post talks about: 1. High salary 2. Layoffs 3. Cost of knowledge acquisition

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.


> 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.

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!)


Every employment is in the benefit of the employer. They pay you money because you make them money. They aren't going to pay you 100k a year if they could fire you and only lose 50k in profit. You make them at least 100k a year. Also, not all coders are paid 65k a year out of college like this guy. I personally know coders only making 45-50k a year.


> They pay you money because you make them money.

What meaningful work is not happening with science or technology because of the cost of labor?


Basically everything? The reason most jobs are so hard to automate is the lack of dependencies having API's you can work against. If we had a billion engineers they could automate probably 90% of white collar jobs we have today simply by throwing human brute brain force at all edge cases. And you know, doing all that labor would definitely be worth it even though it sounds like a waste. That is why software engineers are paid well, and why they will continue to be paid well for a long time forward.


Not unhelpful to look at the history of STEM employment and unemployment.

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...


This is a pretty awful article. Programmers get paid a lot the same reason why managers get paid a lot. You can increase your productivity by increasing your node/headcount. While you're asleep you can still serve customers.

Other jobs don't scale like this and therefore there is a limit to how much a single person can make.


I think that the article is probably correct. I retired from a job managing a deep learning team and we usually had many undergraduate computer science and software engineering undergraduate interns working in our lab. Uniformly, they were highly motivated, knowledgeable, and did good work. Thirty years ago, I used to interview and hire computer science graduates from UCSD: we got some good people, but in comparison, the modern undergraduates seemed more experienced and prepared. Perhaps this is just showing a major improvement in computer science education.

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.


Someone recently recommended the book, “The Value of Everything.” I’m part of the way through, and it’s super relevant to this conversation. What this comes down to is, what is value, and how do we measure it? The author of this post throws their hands up and says, “we don’t know why wages are high for programmers.” That, however, doesn’t mean a reason doesn’t exist. But the point is an important one: if you don’t understand what your value is, you’re in the dark as to whether you’re over or underpaid, and unprepared for structural changes that could affect your lifestyle — because you’re unaware of what affects your value in the first place.


The comparison to doctors is an interesting one, but also a very poor one. Doctors run a cartel in the traditional economic sense. The AMA pushed to restrict the number of residency slots, and what’s more is that Medicare incentivizes teaching hospitals to prefer specialists over general practitioners. Doctors are certainly overpaid.

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.


In the article I'm saying it's surprising that programming pays so well, given that all of these other high-paying fields have high barriers to entry, unpleasant working conditions, or both.


Programmers have high wages because the value of new implementation is very high. This is driven by innovation in business applications and practice, but also by (the real sense) Moore's law - real sense in that the improvement in computing power effectively available creates available value.

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.


"We don't understand why the sky is blue, so you should prepare for it to suddenly become green"


You really should, a green sky means a tornado might be about to hit: https://news.wisc.edu/curiosities-why-does-the-sky-turn-gree...


My personal theory is that programmers are paid so well right now in order to _stop_ them being productive for other companies more than they are to harness their productivity.

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.


The market is bifurcated and similar to law. Most people make comparatively little but the best of the best make several times the average worker. The company I work for happily rejects > 99% of applicants and I am certain greater than 90% of people employed as software developers would never be able to solve the engineering challenges I solve in a manner as cost efficient and performant.


Google has $1.39M in revenue per employee, along with awesome profits. Apple has $2M revenue per employee. These companies are not typical. The public company I work for has revenue of $200K per employee, and almost zero profit. So, if you work for one of these outliers, you're probably safe. The rest of us are a different story.


Are janitors who work for Apple or other 2M/employee get super high wages ? If dev becomes as widespread to hire from, why would it be different ?


If a new janitorial shop opens up in your town it might drive down revenue for your janitor shop

If a new tech company is created they might compete with yours but they could also add more value (tools, products, technologies) to your tech company


I mean this is already true from my perspective, and not very surprising. Back in the early 90's when I was a C++ programmer I was making about what I make now in absolute numbers, but of course the dollars went a lot further back then. There were fewer gigs, but also fewer people qualified to do the work. Today most code is written at a significantly higher level of abstraction, there are more programmers and more projects, the money and perks are still good but the market is more competitive than it was back then. It's also _far_ more fragmented into tech silos, which should work against my theory I guess... but idk.

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.


Also, law and health industries are heavily regulated, so there is an artificial restriction of competition, sometimes quite ridiculous. For example, to provide telemedicine service in Russia you should certify your call center as a clinic, with all the stuff like clean rooms and so on :)


> Programmers are paid surprisingly well given how much work it is to become one.

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.


In addition to all the other reasons mentioned here, another idea: managers don't know how to use programmer talent very efficiently. Of all the things programmers are told to do, 90+% of them are useless or worse than useless, in that they simply make long-term maintenance worse without adding value.

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


Very true, all the managers and their managers.. and theirs, who's technical skills have since atrophied, live in these hierarchies and its a great place for good and bad programmers (mostly bad programmers), to hide, get paid, be lazy, nice pension and not talk to anyone much, project gets binned, move onto another one. The large non-tech companies usually have this issue.


True that, but even managers who were good programmers sometimes don't have a great ability to figure out which features, either user-facing or architectural, are a good idea and which are not really going to impact the bottom line. I saw it at tech companies as well. In at least some cases it was based on a need to impress VC's more than to get things done.


The answer is pretty straight forward: programming scales in a way none of the cited jobs do.


Surprised this wasn’t mentioned in either jefftk (doctors) or luu (electrical engineers) posts

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


Quote: "Specifically, I'd recommend living on a small portion of your income and saving a multiple of your living expenses."

That's a good advice regardless of your profession, the only good thing in this blog - rest was rubbish, to put it mildly.


Whenever anything gets streamlined in our industry (better work process/compiler/editor/language), successful company instead of letting go skilled workers end up branching out into more products and regions.

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.


A collapse in wages seems unreasonable. Wages are almost always sticky and so wages will go down at most at the rate of inflation.

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 article is basically just asking people to live responsibly, which is something everyone should understand intuitively.

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.


> 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.

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


I would find it challenging to make the same decisions you made. To place 10x the amount you spend on childcare in charitable donations is certainly your prerogative, but will your children feel similarly? How much have you saved to make sure they can go to college without debt? Perhaps start a business someday? How much of your charitable donation goes to direct aid of the end recipient, and how much is skimmed off the top in administrative overhead? Is the end organization subsidizing a wealthy individual minimizing tax exposure?


> will your children feel similarly?

I don't think we're neglecting our children at all. They have good childcare, plenty of time with their parents, and everything they need. I don't expect they will resent our choices here.

> How much have you saved to make sure they can go to college without debt?

Saving for college doesn't make much sense: the good schools have a price discrimination policy where the amount they charge is the amount you can pay. If you're not rich enough to pay the sticker price, each dollar you save is a dollar more you'll need to pay to the school.

> Perhaps start a business someday?

If they have good ideas they'll be able to convince people to fund them. Capital is far more accessible than it ever has been. I'm not worried.

> How much of your charitable donation goes to direct aid of the end recipient, and how much is skimmed off the top in administrative overhead?

It sounds like what you're getting at is, what are the actual effects of our donations? The majority of our donations have been to GiveWell's top charities (https://www.givewell.org/) and their recommendations are extremely well researched, and the money goes a long way (ex: https://www.givewell.org/charities/amf).

As an aside, the fraction of the donations that go to overhead vs directly to the recipient isn't a good way to measure the effectiveness of a charity. For example, imagine two charities:

A) Spends 95% of your money building wells, and 5% on administration.

B) Spends 80% of your money building wells, and 20% on administration.

Sounds like A is better, right? Except if B is using that administration spending on making sure they build wells out of materials that will stand up to heavy use over years, in places where the wells are most needed, and on checking up on past wells to make sure they're still in working order, a donation to B could easily result in far more benefit than a donation to A.

> Is the end organization subsidizing a wealthy individual minimizing tax exposure?

I'm not sure why you would think this, or what sort of mechanism you're imagining. The charity we've donated the most to, the Against Malaria Foundation, distributes long-lasting insecticide-treated bednets in areas with high levels of malaria.


> drop everything for a Saudi role and move out there... Their freedom of choice was essentially yanked away.

That's not the only freedom you don't have in Saudi Arabia.


> This person appears to be blowing half of their income on charitable donations every year, though, which is admirable but not a smart financial decision.

Well, duh. Giving money away is always a dumb financial decision. Presumably they don’t particularly care and can survive without it.


It wouldn't be worth pointing out if:

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.


I don't think the author is trying to police the habits of others. He's stating his prediction about how factors may change, and what one should do if they agree. Others can agree or not.

As to telling people to do the opposite of what the author does, do you have evidence that the author doesn't live on a fraction of what he takes home? By definition, he does. He lives on no more than 50%, since he donates the other half.

Per a recent post, he doesn't own a car, and has 19 lbs of butter, purchased on sale, in the freezer.

Even if he's living on a meagre $200k/yr after his donations, he's probably still able to save aggressively. And lead a fulfilling life with his wife, children, and hobbies.


You’ll notice they stopped donating when they couldn’t afford to. The author can clearly handle giving away half their income here.


> 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.

This was written before a Facebook engineer committed suicide in September: https://www.cnbc.com/2019/09/27/facebook-employee-death-was-....


Economy grows because of increasing productivity and programmers have been the forefront of increasing productivity. As long as this continues to be true, I think programmers will continue getting high pay


I... don't think that's true. There's more jobs being created and more and newer technologies, and not every skill is universally applicable. If anything students should be more prepared to learn and apply themselves because there are actually lucrative careers waiting for them (assuming they choose to go into this field). Once the machines start writing their own code and scripting their own automation and plugging in their own power cords... well, then we've got bigger problems


How "lucrative" it will be at the end only seems to play a small factor, it's all just too abstract for some people to understand how they can go from Hello World to 100k a year. Out of 2 college classes of pure cs and cs/business students 200 or so students (graduated 2017), I only think 25% (maybe less) went on to actually write build software/web/apps.

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.


Isn't that true of anything you don't understand? That is to say it's not always easy to connect a -> b -> c with only a cursory understanding of something. But trivially we can see that technical expertise is valuable - and surprisingly (still) increasingly so at that. Furthermore, knowing how to solve problems will always be valuable. As far as your statistic goes, that's quite a hand-wavy and unsupported assertion. To what population does this generalize? What is the source? And if only 25% are going on to careers as developers, does that not imply that the labor market isn't necessarily growing fast enough to outstrip available need and thus lower salaries?


I disagree. There is a large supply of programmers. There is a small supply of good programmers.

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.


Perhaps it’s elsewhere in the comments but these same programmers build models that are as capable as a person at diagnosing illness, or identifying relevant case law in litigation.

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.


This whole thread seems ridiculous... where has hacker news drifted?

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.


> we don't understand why programmers are paid so well

productivity, supply/demand

Businesses can create and capture value faster with technology - they compete for the talent that will deliver that


> Programmers are paid surprisingly well given how much work it is to become one

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.


Software is eating the world and will continue to do so for the foreseeable future. Chips are getting cheaper, 5G is coming and machine learning is opening up a ton of opportunities for automation.

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've ever tried to hire a developer its pretty clear why they're paid so well. Very good ones are a huge boost to your business and hard to find.


Whether or not programming salaries will go up or down in the next x years is anyone's guess. Everyone should plan for lower pay, regardless of what their profession is.

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. :)


Programming is a high value / very low social skill profession. (Bottom tier.) As such, it will continue to be exploited by apex social predators.


It's practically 2020 - the "nerds vs jocks" model of society is long dead. You're working with an outdated stereotype of programmers as social outcasts and loners that, even when it was relevant decades ago, was mostly reinforced by technical rather than social limitations. In modern reality, the web has been mainstream for decades, there are children's books about coding, and the apex social predator of the common developer is a developer with VC funding.


Diseconomies of scale are the biggest barrier to pay decreasing at this point. The more software you have the more engineers you need to build and maintain it.

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 don’t know if I’m overpaid, but I do know my tc has gone up a lot over the last decade and it wasn’t really anything I did. I consider this a bonus. If it stays this way, great, if not it was good while it lasted. I lived pretty well on 1/4 my current tc, and I don’t see any reason to up that. So worst case I get to save up a bunch of money while the gravy is flowing.


I imagine eventually the pay will go down, as the most useful software is already written and some aspects of automation creep into coding. (But I've been thinking that way for about 30 years now.)

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.


Not all devs, San Francisco/faang devs. Author works at google, its easy to do the math: google slurping a huge chunk of the advertising market and splitting it to a few thousand people. It s enormous pay, fueled by monopoly/gateway/cartel dynamics. No, developers dont offer the productivity boosts that they did in the 80s, lets not kid ourselves


Programmers are still wildly underpaid relative to the value they create.

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.


> Given how poorly we understand this

> 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.


> "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)."

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".


> The significant quantity of bootcamp graduates also landing jobs does too.

Bootcamp graduates aren't really "software engineers" yet, let alone good ones. They require close mentorship by a software engineer to get to a point they can do useful work unsupervised.

That guy who mentors them did take several years to learn his craft.

These bootcamp graduates may eventually become good engineers, but it will take a few years.

So either way, it takes several years to become a good software engineer, just like GP claims.

Also, I'm not even sure how many "bootcamp graduates" are landing good industry jobs. I mean no disrespect, but generally most jobs that can afford to be selective prefer experienced engineers or graduates of 4 year programs. Finally, I'd love to see some numbers, but I don't see a massive flood of bootcamp graduates landing jobs in the industry. They are relatively rare in all places I've worked at.


> While both of those categories worked hard too, it's still an order of magnitude less than "doctors and lawyers".

Having been to law school, I'd argue that's more about regulatory barriers than inherent complexity. Coming from a family of doctors, I also suspect that medicine is the same, though I couldn't say so first-hand.

That's not to say that regulation is unnecessary. If a bootcamp grad makes a snafu, a widget might not render correctly on a website. If it's a lawyer or a doctor, someone could die or get screwed out of their life-savings. Regulation is there to verify that they've all met the threshold. I don't really have a problem with that. But I recognize that it doesn't make one "harder" than the other.


> less than "doctors and lawyers"

I didn't say it's the same quantity of work, if you read my comment carefully. Nor is that the main argument at all. I said it requires special traits, which it does. People who skip any formal education and are still great developers are very rare, and those people definitely have special skills and talents (e.g. you can't point out >99th percentile gifted kids in music or math and claim that it's "easy").


> "Nor is that the main argument at all. I said it requires special traits, which it does."

Okay but I'd dispute even that. Students are going to CS programs these days for the money, not out of any particular talent or passion and a number of HNers echo that anytime the topic comes up. Beyond that, many of the boot camp grads come from other non-technical professions; I just saw an HN article about an airline attendant who became a developer (https://news.ycombinator.com/item?id=21902079), for pity's sake.

To be honest, I'm not sure the special traits needed is any greater for a significant number of development jobs than say, for example, an auto mechanic.


> Okay but I'd dispute even that.

Well, and you'd be wrong. Here's my anecdote against yours: I'm a hiring manager at a large tech firm, and I see lots of candidates with CS degrees and even some years of experience, who can't code well at all. Definitely not at a level to make comparable pay to partners at law firms :)

> Students are going to CS programs these days for the money

Yes, and many of them are not good software engineers at all.

> I just saw an HN article about an airline attendant who became a developer

You know, there are gifted people everywhere. If someone taught themselves enough programming to make it to "partner at law firm" level compensation range, they are naturally talented and have the right combination of personality traits (which is rare, the specific fact that this person was a flight attendant or hair stylist or whatever is irrelevant).

> bar is any higher for a significant number of development jobs than say, for example, an auto mechanic

I don't know who you are and what you do or don't know, but for high-paying serious tech jobs this is completely false.


I think you're laboring under a misconception here and as a consequence we're kind of talking past each other. The post author is quoting Dan Luu, who brought up "doctors and lawyers" but that's not really the topic of the blog post; the post author himself started out at fairly low pay (Take a look at the "making more money" link, he started his career out at $65k pay and I have rather good reason to know that the FAANGs were paying much more than that). So, the subject is not "high-paying serious tech jobs", just run-of-the-mill programmers.


> Yes, and many of them are not good software engineers at all.

Companies are very well aware of this fact.


Did you read the blog you linked?

Her job title is "R&D Content Engineer". Her job description as detailed in the post:

> I get to learn things and then write it up in a technical blog in order to teach others about code

In other words, she's a technical writer. Much respect to her and her big job transition, and we need more people like her. However, she is not the best example to support your argument that "SWE is so easy, anyone can do it, even non-technicals like flight attendants!".

BTW I have no doubt there are examples of non-technicals who became actual SWEs working on non-trivial projects, but they aren't that many. Even folks like her, who switched to a technical role (even if not SWE), are pretty few and far between.


This is a common pattern, in my experience. There is a pretty large bleed-out rate from programming jobs that are genuinely hard to pseudo-technical but basically communication oriented jobs.

These jobs are usually non-essential roles in which success criteria are vague and almost anything/anyone can produce work considered good enough, meaning such people can "success fail". Word processors don't produce compiler errors or segfaults, after all.

Common endpoints for people who can't handle the rigours of programming:

- Tech writing

- Business analyst

- Product manager

I'd argue that all of these jobs are dramatically easier than genuine coding because it's often deeply unclear how to measure the quality of the output. Whereas coders who can't code end up with programs that don't start, or which crash constantly.

Sadly this sort of transition-to-people-role move is something I most frequently see with women. You see that effect also in the dropout stats in college degrees.


Exactly. GP brought her up as an example of a completely non-technical person transitioning to an engineer.

That does align with the headline of her blog and certainly with her mission to attract non-technical people to transition to SWE roles.

However, when you read her actual career path, it's clear she never actually worked as an engineer: she started bootcamp in late 2017, then in mid 2018 she transitioned to technical writer and stayed in that role.

To me, that post epitomizes a problem with language diffusion when it comes to the SWE debate.

This results in predictable implicit forking of the term "engineer".

You have folks like this lady who use the term to refer to any a technical or semi-technical job.

Then you have folks who do actual engineering work, and hire for actual engineering positions, who know the former group isn't actually qualified to do said work.

Also, the "engineer" title inflation is peaking when someone with zero technical background starts a bootcamp in late 2017, and by early 2018 holds a job with "engineer" in the title.

The only result is the above forking, when the title has become essentially meaningless.

> I'd argue that all of these jobs are dramatically easier than genuine coding because it's often deeply unclear how to measure the quality of the output.

There's also a wide internal split between people who can write working code in some limited capacity and folks who can pick up almost any language and write a complete product in it.

Think the difference between a junior frontend engineer who knows only the narrow path that was spoonfed to them in a bootcamp vs someone like Bill Gates who picks up C and writes an OS with it.

This gap is the reason for the SWE compensation gap. FAANG, for instance, try to hire only the latter and universally avoid the former.


> "Did you read the blog you linked?"

Did you? Try reading the "My First Dev Job" and "Life as a Junior Software Developer" sections. She didn't become a writer until later.


Nice try, but her "first job" as a "junior engineer" lasted for only a few months, and then she became a technical writer and stayed in that role since.

Check out the dates in the blog. She just started her bootcamp in fall 2017. By spring 2018, she was already a technical writer.


That's kind of an insulting assumption about the individual involved but, okay, if you want to be pedantic about examples, there are plenty of other possible exemplars previously posted on HN:

https://dev.to/nprimak/getting-started-as-a-self-taught-engi...

https://dev.to/thecaitcode/why-not-having-a-cs-degree-is-awe...

https://dev.to/taeluralexis/how-i-landed-my-first-web-develo...

Have fun picking away at them.


I haven't made any assumption. Unlike you, I read the post, instead of just linking it as if it supports my arguments.


No rebuttal for these that you could manage, I see, nor are you gracious enough to admit that my general point was correct.


> 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).

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.


As far as I can tell the current job market disagrees with you.

It seems like there's two markets for software engineers at the moment: The market for fresh bootcamp & collage grads, which is swamped with job seekers. And the market for mid/senior engineers, which is desperate for talent. If you're a senior engineer its very easy to find well paid work at the moment. But thats really not the experience of most fresh grads. I've spoken to plenty of junior software engineers who send out dozens of resumes for each call back for an interview.[1]

If you could be a decent software engineer with a few years of work, companies would happily hire collage grads. But despite being desperate for talent, most companies don't want to hire average junior developers for any price. The top 15% or so of each graduating class finds work easily enough, but most software companies consistently say no to anyone in the bottom 85% or so of each class.

And thats pretty good evidence that most people can't become decent at programming with only 3-4 years of study. Even amongst the top 15% or so of each graduating class I bet most people started programming long before their freshman year. I know I did.

(And to be clear, I'm not saying that companies filter based on marks in collage classes. As an industry we interview people and assess them as fairly as we can. I'm saying most people are demonstrably not very good at programming after "only" spending 3-4 years studying CS in collage.)

[1] Source: As part of my current role I've chatted with, and technically assessed around 100-200 fresh grads in the last year. Our hiring bar is calibrated off the companies we work with, and we say no to the vast majority of fresh grads from bootcamps and universities.


The problem is that training in programming is very expensive, to the extent that it's easy for just one junior or bootcamp grad to end up consuming all the time of a much more capable and expensive senior developer (e.g. because their code is of such low quality it has to be rewritten).

The other issue is that teaching is a vocation. Many people don't want to teach. If they wanted to teach they'd have become a lecturer or some other more obvious career path where they can spend all day teaching programming. If you hire people who are too inexperienced you're basically forcing an unexpected career change on some random team member who won't like it.

Programming is really hard. I think we tend to underestimate how hard it is. I've seen people who just came out of a CS programme who can't write basic programs in easy languages like Java, or explain what hexadecimal is. I've seen people who can code but just don't do it right, like an intern my company hired who wrote a Slack/GitHub bot in Java (neat) but the entire program consisted on untyped JsonObjects being passed around a handful of giant methods, all of which were static and many of which were duplicated. He knew the syntax of the language but the reasons why you might want type systems, classes or how to create abstractions were missing. Then he left (it was a short internship) and the tool he had created was abandoned because it wasn't that important to begin with. From a pure financial perspective he was a major net loss to the firm.

I don't know what the solution to this is. Training is important, but there doesn't seem to be any way to make it financially sustainable. Ultimately, new developers need to finance more of their education themselves with longer programmes than bootcamps offer, and better bang-for-buck than universities offer.


I think the ability to be hired is orthogonal to how good of an engineer you are.


If that were true, the best paying companies would fill up with charlatans with mediocre engineering skill but who interview well. But at places that think a lot about their interview processes, we don't really see that happening. Most of the engineers I've met who work at Google and Facebook are very capable.

(That said, I've certainly worked with entire teams of atrocious engineers at consulting companies and banks and places like that, who are paid well in excess of what they're worth.)

And yes, there's also plenty of blog posts from people with solid engineering skills who don't interview well. I've interviewed a few people like that, and I've fought tooth and nail for them. But angry homebrew developers on twitter don't tell you much about the hiring process for the average engineer. And in reality most people who can program effectively at work can also program well enough during a job interview. I'm genuinely sorry if you're not one of those people, but until someone comes up with a better assessment process, we use what we've got. I'm all ears if you have ideas for fairer processes.


> 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.

So we agree that:

1. Not everyone has the ability and motivation to start training as a SWE.

2. For the minority of individuals who do, it will take several years of effortful training and work to become just "pretty decent".

Couple that with:

1. Huge, rising demand.

2. SWEs being at the core of the profit centers of many (most?) current businesses.

And that alone is more than enough to explain high pay.

If every new business needed 10-30% of its workforce to be, say, lawyers, their salaries would skyrocket as well.

Except I don't think they'd feel so guilty and unworthy about it.


I don't know, if we're talking comparable salaries to top lawyers (his analogy, the ones that get to top firms and become partners), then we're talking at least Staff+ levels at top tech firms for comparison. That's definitely more than a few years of work, and definitely requires talents and skills that not everyone has. If you get there in a few years of work without much effort, then you're naturally highly gifted.


I think the word "good" was doing a lot of work in the phrase "a good software engineer".

So then the questions is "does a good software engineer make a lot more than a decent software engineer". From anecdotes and such[1], as well as personal experience, evidence seems to point to "yes", although most of the salary surveys and such point to a relatively narrow gap (i.e. less than 2x between 10th percentile and 90th) between minimum and maximum compensation for devs.

[1] https://danluu.com/bimodal-compensation/


I often think the only type of collapse we can expect is if we can develop a generalized AI capable of writing code. If we do that, no profession is safe -- what need is there for doctors if we have AI that can identify disease and treat symptoms with better accuracy. The point at which software developers get automated away is the point at which all white collar careers disappear.


Not sure about your analogy. Doctors do many things apart from ‘identify disease and treat symptoms’. More importantly, doctors like to do the other things they do eg counselling patients, bedside manner, shared decision making, working in a multidisciplinary team, patient advocacy, policy developmemt. Many coders love to just write code, they wish they could just write code in fact, without the other stuff a job inevitably entails. That’s why AI replacement is a risk - the job will change into something different (probably with the word ‘evangelist’ in the title) which is probably not as appealing to many.


Software engineer do a lot more than just "write code". They communicate with stakeholders, help design and spec out the product, participate in team sessions, etc, etc.


Yeah, my point is that software engineering may end up becoming just exactly the things you have listed without the writing code parts... and that is probably going to annoy a lot of software engineers, not to mention the fact that other types of people who would never write code could be better at communication, design etc


> Yeah, my point is that software engineering may end up becoming just exactly the things you have listed without the writing code parts

I really doubt that. Who'd do all the code writing? AI?


In the next 20 years, maybe. In the longer term, probably.


How many doctors are making 300k/year for their bedside manner? Knowledge work is a huge part of what makes it such a valuable trade.


> 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).

That has virtually no relationship to economic value. Economic value is mostly supply and demand driven.


It's a response to his statement that it's not too much work, if you read right above the line you quoted.


I agree with this in general but I feel like it's getting increasingly difficult to change jobs especially as you get older which has the effect of lower pay overall.


One point I haven't seen in the article is familiarity with the software system: The longer a developer works for you, the more implicit knowledge about this particular software system will they accumulate. This knowledge is specialized enough that keeping an individual may be cheaper and less disruptive than training new hires.


We can speculate on where the market will go, but obviously, yes, programmers (and everyone else) should plan for lower pay because there's a reasonable possibility your pay will be lower, and part of financial stability is being ready for such possibilities.

The market isn't the only reason you might be paid less in the future.


"We don't understand it"? Source?

Seems pretty well understood to me: we generate a lot of value through the work we do.


value isn't the whole story -- there's a large supply of programmers who are much cheaper than what a stanford grad makes (hacker schools and eastern europe / india are examples)

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


So do doctors, as per the example in the article, yet the barrier to entry is much higher for them.

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.


It is about value created. A programmer who can find a way to extract $1 per year, from a million users, is worth $1m. But doctors are constrained by their personal 1-1 relationships: no doctor can handle a million patients.


It is about supply and demand in the labor market, full stop. People aren't paid based on the value they create. They are paid based on how hard it is to find other people who can do the same thing.


People are paid based on both the value they create, and how hard it is to hire them.

If someone being hired will provide $10 of value for the company, then that is the ceiling for their wages. On the other side, the floor for their wages is the lowest price sometime will accept to provide that value to the company.


... But there aren't.


The article raises the question of why we can't explain the absence of such people, given how much easier it is to at least get your foot in the door in tech compared to other professions like medicine and law.


Maybe their assumptions are flawed?


It's worth pointing out that generating a lot of value (productivity) is not a guarantee that your wages will grow in proportion to that value. In fact, for the last 50 years, in most careers, wages have not tracked productivity. This is the "Productivity-Pay Gap." (https://www.epi.org/productivity-pay-gap/ )

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.


There’s a lot of awful work that many software engineers simply don’t want to do and naturally the ones that do work the awful stuff do a pretty piss poor job because it’s hard work.

So as long as there’s awful work, there will be a market for high paid software engineers.


> not something that will definitely happen, or that's going to happen on any certain timescale, but something likely enough to prepare against

Gonna use this gem next time my wife asks when my hair will grow back.


I'm confused.

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".


The REAL THREAT to developer salaries is GROWING OLDER.

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.


Unless you expect computers to start writing programs for themselves (I suppose possible at some point), demand for programmers will only continue to grow. And finding good programmers is hard.


I think, as others pointed out, we do know why. It's basic economics combined with the fact that it doesn't scale as well as other things.

In addition to saving, unionize if and when you can.


I think unionizing works in a market where the workers are more easily replaceable. Not so in the case of software engineering.

I'd rather negotiate with my employer/find another employer that would pay the same/more than unionize.


> are more easily replaceable

I believe the article was alluding to a future where that may not be the case. Also, you can do both.


Did anyone read the comment by user randomsong [1]?

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...


It was easy for him landing that job but what happens is the environment is changing quickly whatever he knows now he will have to pivot.


> Summary: we don't understand why programmers are paid so well.

Isn't it just Jevon's Paradox but applied to labor?


In my country I'm getting less than a school teacher with the same level of experience.


What country would that be?


I'm not OP but I'm in the Netherlands earning ~3k a month.

Reading these American salaries always makes me contemplate moving there..


Wow yeah that is low. As a grad that might make some sense but if you have any exp that is low.

Is that 3k in USD?


New Zealand, currently teachers with 8 years experience get 90k.


I find it more curious that doctors are paid so little than programmers are paid so much.


> 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 hope he realizes his experience is also a rather privileged one. Many people, in particular women and black people, have a much different experience.


Even if women and black people make a fraction of what a white, male software engineer would, they’re still comparatively quite well off. That’s how much a software engineer makes.


The point is women and black folks generally don't get jobs. It doesn't matter how much a software engineer salary is if you can't even get hired. Or they do get hired but for the really shit positions. And a "fraction of" an entry-level male software engineer position is in fact shit pay.


70% (or whatever the fraction is) of 100k isn’t horrible. I don’t know much about hiring rates for underrepresented groups, so I won’t comment there.


It feels to me like I fell into programming, like it just happened that I graduated college with a skill that was highly in demand. But how did I end up here? Because of my race and gender people were more likely to see me as a potential engineer and take my efforts seriously. Because my parents could afford a computer in the 1980s there was one around for me to learn on. Because they could afford good schooling for me there were classes where I could practice this skill and study the theory behind it. It's hard to know the chain of causality that led to me getting into programming, but it's substantially less likely that I'd be here if I'd not had these advantages along the way.

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


Programmers need to Unionize!


A fair response to those focusing on labour market dynamics. If you look at the profits generated per employee at top companies there’s plenty of room for engineers to capture more and more of the pie.

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.


The comparison to lawyers is interesting. I don't think law is all that different from software, but would love to hear from those who have more info about the software market.

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-...


The author didn't mention that another possible reason programmers are paid so well relative to other careers is that the same amount of programming work scales better than conventional work. By that I mean, one hour of programmer work can bring business value to all the users of the software, which can be in the millions/billions. On the other hand, one hour of work in most other conventional jobs typically only brings value to one person or several people.


What about those of us who are already on the "low" end? Or is this something that's more pr less only going to sleffect off the people getting paid six figure to write CRUD apps?


I believe that the author is mistaken in their judgment. Demand will rise since software is becoming more complex and difficult to maintain rather than easier. However, the closer your position is to “webmaster”, the more likely your job will disappear and be replaced with jobs that require a more advanced skill set.


this is an important point. long ago just being able to write html and use ftp could get you a cozy job. the problems being tackled now often require advanced skills in machine learning and data science. as the requirements go up, software development may begin to more closely resemble medicine- high pay but also lifetime learning and high demands


Most software development at high paying places like the FAANGs still does not require ML or data science. It's understanding the problem, figuring out what to treat as your constraints, figuring out the best changes to make to the current system to satisfy those constraints, getting other engineers on board with your proposal and handling feedback, making your changes, writing automated tests for your changes, writing appropriate monitoring, etc. These are the kind of skills that me and most of my coworkers have learned on the job, and we're happy to hire junior engineers who can code but don't know the rest yet. Which seems very different from medicine to me?


Deep learning / ML / AI have long-term implications to affect essentially all non-manual jobs, including the subsets of knowledge workers, office jobs and programming. (That’s in-addition to putting 90-95% of truckers, the no. 1 job in the US, and ride-for-hire workers out of work within 10-20 years.) Self-programming systems, given enough computing power and tech progress, will be A Thing™. At that point, we will be very close to one or more technological singularities as well, which will have even larger implications and knock-on effects to productivity, job availability and technological era.

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...


I used to believe this but don't any longer.

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.


I think the interviews are stifling supply. Most of these jobs don't need someone who can solve algorithms.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: