Hobbyist programmers (who usually end up being the best ones) usually put great investment into their career by doing side projects on their free time. We're talking weekends and night of trying out stuff, hacking stuff, reading, learning, etc. It's often an invisible investment, because it's a hobby and it doesn't feel like work.
In the end, programmers don't really need to dig that far to reach a point where they're good at building stuff using enough layers of knowledge to make what they do absolutely obscure to others.
Nobody has a hobby of learning by heart the bones in the human body or the law texts on intellectual property; but programmers most likely know by heart a sizable bunch of Bash commands and their options, HTTP status codes, API interfaces, etc. It seems like highly advanced knowledge to be able to solve a health problem from a set of symptoms, but from the point of view of the layman, solving a computer problem from an error message is about as magic as it gets.
In my experience it's exactly the opposite. People who do nothing but write glue code between major services think they're hot stuff.
One of my personal career goals is to stay as far away from simple glue code as I can. Unfortunately it makes up most of our field right now. But it seems like an especially precarious place to be.
Most lawyers are doing simple glue stuff and think they're hot shit. You think I couldn't refer that case to another law firm, or a machine?
Most businessmen are doing simple glue stuff and think they're hot shit. You think I couldn't randomly guess at the market, but not outperform it, nor a machine?
Lawyers have paralegals that dig through the case studies and case law for them along with law databases like LexisNexis.
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.
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.
The ability of an experienced professional to quickly decide these things comes after many years of hard-won skill building...
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.
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?"
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.
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.
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?
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.
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 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.
It's very much a "correctly predicted nine out of the last five recessions" kind of situation.
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.
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.
The issue of precarious is also a bit "the grass is greener" sort of view. In 5 or 10 years when the industry again looks different, bootcamp level web dev work may be as precarious as you project. But right now, what's more precarious, specializing for one company in a corner of the industry where there are only a small handful of companies, or working for a company that you the employee, could easily replace?
E.g. "software engineer", and "programmer" should be labels for different roles/capabilities, as should be "computer scientist". Using the terminology incorrectly should be frowned upon, similarly to how this goes in other disciplines.
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.
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.
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.
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.
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 fact, I think it helped me get my current job.
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?
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.
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.
>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.
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.
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.
Anyway we clearly view people's baselines differently. Maybe you're the one who's right.
>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.
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.
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.
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.
Folks in the middle of the curve are blissfully unaware how much there is to know and how many difficult problems must be solved to put together those backend services they are gluing.
You're making a lot of assumptions on the hobbies people have based upon your environment.
About the only thing the two fields you listed differ from programming is actual legal barriers of entry.
ha. case in point.
I used to read all kinds of cases as a hobby even before that, for fun. I remember reading through much of Ross Ulbricht's trial documents and comparing it to what his advocates were claiming, which was enlightening.
It's possible to understand what treason is, just as it's possible for something to skirt the edge of it and require more nuance and thought.
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.
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.
>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. 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.
 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
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 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.
Speak for yourself buddy, i enjoy pulling up the Cornell law or my local jurisdictions legislative website to fully understand the laws around me. In college my hobby was reading the laws about public nuisances and noise violations (and none of our parties were ever shutdown!). I still do this today to fully educate myself. Along with other nonstandard hobbies like flying planes, studying neuroscience or genetics, and owning a server farm for fun..
> Many programmers have a bias in thinking
I think the odds of finding hobbies outside of software and hardware on HN is probably lower than the general public, but the very reason we have specialists in other fields is because of their dedication to their hobbies!
One other way would be to demonstrate true mastery, but with the breadth of computing and its ever changing nature it's borderline not possible.
I don't know anyone who likes learning about bones, but I have actually met a guy, who was really passionate about quirks of IP related laws (my company hired him as consultant to clarify some mundane and fuzzy issues we had with usage of fragments of published academic books). He could talk for hours about various cases he worked on and was citing paragraphs of some obscure laws, going with true passion into detailed analysis how a given case looks in view of local Polish, Romanian, EU and international regulations. I would compare him to Rust, Lisp advocates easily.
chmod's connected to, access permissions
(Maybe I'll come up with the whole song if I ever teach CS in grade school.)
Who’s to say those that went to school didn’t enjoy the learning process of their degree? They are by this definition giving up free time in order to learn something and are as well making a great investment in not only time but money as well.
I think that this needs to be reread as “Programmers who are passionate about what they do usually end up being the best at what they do” since if you think about it, they are dedicating ~40 hrs a week to their hobby. Who’s to say someone can’t excel in a hobby if they can’t dedicate more than that? What about people who have more than 1 hobby?
Not that the other work you do instead of programming, like problem decomposition, spec authoring, review, etc., isn’t useful for improving your programming skills, but not having to coordinate with anyone means you can just write code on a hobby project.
I recently lead a project and even with a tight schedule and trying to focus on implementing as much as possible I spent maybe 30% of my time programming.
Note further that I don’t really do any programming outside of work and don’t think it’s necessary or even useful to spend that much extra time programming. Iterating implementation ideas like a scientist is the only way I’ve improved and that’s fairly independent of time spent.
Let me guess, you're a self-trained coder.
Instead they’re looking at your community contributions and work experience.
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.
I would not be surprised during the next recession that employers fall back to arbitrary demands like degrees or obscene amounts of experience.
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.
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.
If John Carmack had a twin who wasn't so inclined and just did programming as a 9-5 career, there's no way they'd be as skilled as he is. Plus they'd probably wait until being taught how to program instead of starting to teach themselves as a kid.
Wage is based on the opportunity cost of the uncaptured labor value incurred due to employment. For software engineering, this is acute since with the same skills needed for employment one can make a competing enterprise to their employer and capture all the value.
Other professions require you to have large capital to do so, so the opportunity cost is either non-existent if you cannot access that capital or further discounted by the financing cost/risk.
Your end SWE wage ends up being the value you would otherwise be able to capture discounted to the expected value w.r.t your risk.
Companies profit on employment by having a lower risk in enterprising, thus a better EV, than their employees in the same enterprise for a given number of reasons—brand, preexisting customer base, speed, proprietary market analytics, etc.
So in accordance with OP's theory, if this were to happen the salaries for devs would go down.
When your flawed government has its own stage in the product life cycle
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.
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.
They would probably be odds-on to succeed if they were chasing a niche in an established market.
This doesn't apply to companies like Facebook, Google etc because they're protected by a network effect.
More accurately for me was salary was equivalent to the market price.
I needed to maintain a certain level of talent to be competitive, so I recruited and found developers at that level. After enough interviews and salary requests it's easy to ballpark the industry average for a certain level of talent and I'd hire the ones that were a good fit at a reasonable salary.
In my case supply was scarce but just available enough that prices were pretty stable.
As the supply of good developers increases it makes sense that the average salary request will drop.
This is economics 101 that no capitalist industry is immune to.
But TFA makes a good point: the level of compensation that programmers can demand may well fall more in line with that of other professions at some point. Thus one should not go into programming simply because current compensation levels make it attractive, nor should current programmers spend like drunken sailors. Caution is warranted here.
Software has been eating the world. We're probably far from peak software. Whether we're far from peak software developer compensation is another story -- I wouldn't know or make any predictions, informed or otherwise.
Plus, we will reach peak software eventually - likely decades out of course
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.
This effect is so powerful that even if your business has a strong physical component (Uber, Airbnb, etc) the scalability of software still puts you at a huge advantage.
As a doctor or lawyer, you tend to be limited to a radius around your immediate physical location.
Software is a weird beast that we haven’t really seen any equivalents to in human history.
Localization in the sense that you mean is a function of a lot more than the software: language, culture and law all play major roles.
* I'd argue that as tools improve, the number of solvable problems of a given value increases exponentially e.g. if you have a capability A and you introduce capability B, you can now do things that require only B or A and B, and if you then introduce capability C, that opens up (C), (A, C), (B, C), and (A, B, C) as new problems that are possible to solve.
Edit: For a concrete example, with tools like Stripe you can do payments-related stuff without being an expert in handling credit cards, and with tools like EasyPost likewise for physical mail, and with the combination of the two a single developer can now do any of the things that require either of those individually plus things like taking online payments and managing shipping on the best-cost carrier without any in-house staff and only a couple months of dev work.
The key reason companies can and do pay SWEs relatively well is that these SWEs generate large profits for them.
That's the "opportunity cost" GP mentioned: yes, you'd have to pay the SWE $400k, but the cost of not employing them is several times that in lost profit.
Moreover, I'm not really seeing how the barrier of entry is going to increase substantially. In fact, it will probably decrease.
As software eats the world, there will be more and more "pure software" work, which means your only toolset is your knowledge. SWEs with large amounts of specialized knowledge and skills will increasingly be able to compete in these areas (security is a pretty good example). It doesn't have to be your typical company with a logo, brand, and office space - we're talking about consultancies and virtual businesses.
This is not a very good metric.
If you laid off 90% of HR, how will that affect revenue? What about laying off 90% of the engineers?
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
Programming can fall anywhere on that spectrum.
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.
If by "difficulty" you mean "skill" then of course it is, in part. Why do baseball players make $30m and teachers make $30k? The demand for watching baseball is huge relative to the supply of people who can perform at a professional level.
It is though, kind of. It comes down to supply and demand economics -- and the perceived difficulty of the job. People hire lawyers because they don't want to become one themselves. Lawyer wages come down when there is a glut of lawyers and not a corresponding glut of lawyer work.
I'm old enough to remember working in 2001 when the software market contracted. It was very hard to get a job, even for skilled developers because hardly anybody was hiring. It sucked. It also temporarily removed software developers who were just in it for the money -- they literally switched careers to something else.
Incidentally my salary is now higher than it ever has been -- so the market clearly recovered, it just took a few years.
Of course, high salaries will attract more supply over time, which will put pressure back down on salaries. The current dynamic is SO out of whack though- there is a ton of slack in the system.
This isn't a boom/bust thing either. There is SO MUCH business value that could be had if there were programmers available to build the software. I don't think we're even scratching the surface of everything that could be profitably built yet. I think betting on a big bust in software engineer salaries would be a bad move.
The former leads to efficiency wages, and the latter to tournament theory.
Example of the first: there are two jobs with an identical market-clearing wage and expected net present value of productivity. The first is relatively unskilled labor - you train them for maybe a week, and they do pretty much average performance for however long they stay. The second requires a year of training during which they provide zero value, then stay an average of a year after that during which they provide double the value. A savvy employer would pay the market-clearing wage for the first role, and above that for the second. By doing so, employees of the second type would be unable to find a job that pays as well as what they have now (since the market isn't clearing), so they'll tend to stay longer and provide extra value.
Example of the second: corporations will pay CEOs much more than vice-presidents. The work that both jobs do is largely the same, and the disparity in value added between the two roles is much less than the salary difference. The spread is there to make sure that senior executives work really hard to be seen as a better choice than their competitors - now the board doesn't have to evaluate how well executives did in an absolute sense, but rather need only judge who the best candidate is for the top role.
I understand all of this.
Are there any examples of industries where - for lack of better terminology - a salary "bubble" formed and later popped? For example, X job used to pay 100k and now it pays 50k? Probably better to exclude jobs that aren't around anymore because they were replaced by automation or don't make sense because of modern technology, at least for this question.
I guess I have an inkling that - ignoring things like economic downturns and lowering salaries due to high unemployment - employees will fight back against any downward pressure on pay, and once salaries go up, they tend to stay up. Sort of similar to what you see when an individual gets raises and jumps companies for an income boost - you rarely see someone take a job paying less than their current job.
All that reminds me of how people who graduate during recessions earn lower income over their careers.
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 . 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.
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.
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.
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.
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.)
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.
Their number isn't declining, it's growing.
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.
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.
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.
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.
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.
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.
I'm sure there are exceptions, but it's what I've anecdotally observed over my career to date.
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.
Actually, yes it does.
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.
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.
We're not guaranteed to have no bumps along the way of course but, over the long term, it's really hard to envision a case where demand for developers, and consequently comp, drops drastically before this global saturation occurs.
A lot of mid-sized businesses want to gain an edge over their competition via custom software solutions. (The optimistic part in my also thinks that it's still the early days there, where companies in each niche are trying to uncover software driven upsides with fewer resources, and once those are found everyone in the niche competes over squeezing out the most of that opportunity, which requires a lot more engineering resources).
On top of that even moderately complex websites (search function + data pipeline leading into that) that a lot of 100+ people companies have require regular attention from a somewhat skilled software engineer.
So in conclusion, I think that high compensations might be driven up by "a handful of tech companies", but a lot of the demand is mostly uncoupled from that.
A restricted supply means you have to play a higher price.
It doesn't matter what causes the lack of supply, its the lack of supply that causes price rises.
It's not clear to me that there aren't soft and hard caps on supply, even if everyone wanted to be a programmer because the compensation was so great. There are certainly aspects of intelligence, temperament, and personality that are needed to crank through information, organization, and abstraction problems as part of a team for decades of one's life.
Hell, I've worked with a lot of people on the US side of the pond who have experience or are educatied and they can't rub two keyboards together to ship a product.
My observation has been the opposite: no matter how much you offer, a lot of companies STILL cannot hire enough engineering talent.
The first couple of jobs I had the interview process was a conversation with barely any technical content (let alone being asked to write a single line of code). Nowadays there is a generally a barrage of technical testing.
I think companies are realising the huge difference between having top 20%ile programmers versus the rest. Where I am currently although we get plenty of applicants we simply can't fill all of the spots.
Agree with the overseas talent comment as well. The amount of technical debt they create is massive, the overhead in communication is too high, and the people aren't invested in the products the code they are creating.
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.
Me: 1. Question A, 2. Question B, 3. Question C
US employee: answers half of the question B, general ramblings about A and C
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.
Perhaps you’d like to expand on this technical debt you’re cleaning up?
I've worked at 7 different silicon valley companies in my 35 years of employment, though the last 20 have been at two particularly high flying companies. Approximate half the staff is foreign born, some US educated and most foreign educated. I see no pattern to skill levels between US born and foreign born coworkers. Maybe it is because these companies draw top talent, and can afford to pay for it, I have this experience. You might be cynical and think I'm a "meh" level employee who is easily impressed, but my pay grade and annual reviews say otherwise.
Also, time and again we see posts here lamenting the hiring process in this industry and we haven't cracked it yet. This adds to the demand-supply gap.
Anecdote: I have interacted with some of the 'overseas talent' and they were excellent programmers but lacked communication and hadn't fully figured out the mechanics of working in teams. Others from the same background but who decided to get a higher education from US had better exposure and generally fared better.
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.
In this way software engineering resembles traditional craftsmanship more than any other discipline.
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.
If you pay the buck you can hire excellent engineers in India, China, Eastern Europe & other parts of the world. No wonder Amazon/Google/Microsoft have a large developer presence in these markets.
One of my coworkers is really good at churning out code in a short amount of time that will do the job. He's not so good at abstracting his code to make it more reusable, even when he has time.
Another coworker is a hard-working cleanup guy, he doesn't mind getting his hands dirty and spend several long days cleaning up a decade of cruft. But he doesn't always appreciate subtle differences in code, so sometimes introduces regressions.
Third guy we have has excellent domain knowledge which is invaluable, yet is an otherwise average programmer.
I've got my set of things that I'm really good at, and the things I'm not particularly great at.
We don't have a rock star dev, but we have people who are good at different things and we take that into account when planning and executing projects.
I think the reason for high programmer salaries in the U.S. is due to:
1. Culture that values engineers
In Silicon Valley and in many tech companies, the culture is that high quality engineers are highly valued and respected, and thus command high salaries. Companies like Google, Facebook, and Microsoft were founded by ex-programmers / ex-CS majors, so they understand the value that high quality engineers bring to the table and are willing to pay for them. Whatsapp was bought for $20b and only had 50 employees, 70% of whom were engineers.
In non-tech companies where tech is seen merely as a cost center, programmers don't make that much (eg. fashion companies). For the record there's nothing wrong a non-tech company not wanting to pay top dollar for engineers, some random ecommerce store probably doesn't need world class engineers, just like a semiconductor manufacturer doesn't need the best graphic designers.
I'm not very familiar with the UK so I don't know firsthand why UK engineer salaries are so much lower than in the U.S., but if I were to guess I'd say it's largely because their culture just doesn't value engineering talent like in SV.
2. Tech companies have a lot of money.
The big tech companies have very high margins. Facebook's market cap is $20m/employee, profit is $684k/employee and has a profit margin over 40%. Apple's market cap is $9m/employee, revenue is $2m/employee, gross profit margin is 38%, and they have $245b in cash. Even unicorns that bleed money (eg. Uber) are flush with cheap capital from VCs, with Uber having raised $20b to date.
Looking at it from this metric, it would seem that engineers are underpaid relative to the value they create. Not only just engineers, but labor as a whole.
This is a reference to particular events of which I'm aware.
e.g. an hourly rate equating to $250K/year, maybe more.
I mean nerd culture, not "real" culture.
Most of the people that are smart enough to be good are likely to be either doing something more interesting, contributing more to society, or making even more money than you are willing to pay them to sit in a chair and write code.
It's not that most people aren't suitable. It's that most of the people that are suitable aren't available and thus you have to pay more money to compete to pay the ones that are to sit in a cubical and waste their life helping you sell more ads.
I think the exact opposite is true. Maybe programming isn't as interesting as being a literal rockstar, but I think most programmers' second choice of job would be "real" engineering which is usually lower paid and in my opinion less interesting.
My advice is similar: live on your base salary, and save a lot of it, so you will be fine even if your bonuses/RSUs/options end up worth nothing.
In the worst case, you save up a lot of cash before programming compensation drops. But even if that doesn't happen, it's still better to build wealth, save for retirement, and perhaps have the ability to retire early if you choose to.
You can also broaden your opportunities by paying off your house and not borrowing to pay for depreciating assets (cars and other things with wheels or propellers). Getting burned out and want to take some time off? It's a lot easier if you are not having to make a big debt payment or rent payment each month.
So you can be old and crippled finally going on the vacation you dreamed of? Barely able to walk out in to the ocean, much less surf like you dreamed of?
Nothing is guaranteed. Quit living off rehydrated beans and eggs like you’re winning a merit badge and start financially planning to see the things your heart desires.
If you have left over savings when you die, you did it wrong.
If you are assuming that you will always be able to work, making the wages you make today, then you will have a rude awakening the day that you cannot. Living below your means has been almost universally good advice since the dawn of civilization.
I do appreciate your sentiment however, in that there is a lot of advice from FIRE types who talk about even the most minor indulgence as some hedonistic waste of money. And it makes sense to remind those who go to that extreme, that spending money now can actually buy a little happiness. But I think you're being slightly disingenuous by taking the parent comment to the extreme of living off rehydrated beans when they're simply reiterating the idea of saving as a virtue.
I'm continually baffled by this kind of reaction.
I spend ~30k USD per year - more than the average american and more than 99% of the world. I live in a nice apartment with a garden, a 10 minute commute from the centre of one of the most expensive cities in the world. I buy organic food from the local supermarket and eat out multiple times per week. This year I vacationed in Tenerife, Greece, Italy, San Francisco and Vancouver.
This is, by any reasonable standards, a life of luxury. And on a typical FAANG salary it would take ~7 years to save for retirement - https://networthify.com/calculator/earlyretirement?income=13...
You would think most people would be interested to learn that their level of wealth opens up the option of complete financial independence in a comfortable middle class lifestyle before the age of 30, but instead it's always straight to yelling about dried beans.
You'd need much more than that....
> 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.
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.
which would be a fine statement if we knew exactly what is going to happen.
As we have no idea if we are going to live till 100, and drop dead in the act of procreation with one's 50th life partner, or die at 32 of bone cancer after 5 years of off/on chemo and other invasive procedures. One has to build in slop to cope with all that life might throw at you.
The amount you save is entirely up to you. Some people might be willing to live off beans if they save enough to move to a pacific island in 5-10 years.
Other people are contented to live a bit larger, because they plan to stay where there are.
As with all things you need to figure out your goal and plan for that, and have enough slop to account likley occurrences (family, illness, recessions)
It’s about being intentional.
And have enough left over so your spouse can keep living comfortably after you're gone. Even if they were a SAHP and thus had a gap in their retirement savings.
And have enough left over so your kids and grandkids can get a head start in society.
It's not just about you in this very moment...
If you want to play it safe, then you're really just trying not to leverage your wage into insane debt. You could live a decent lifestyle while putting money away and be financially fine if wages went down. But if you get loans for a $1.5m home and a $200,000 car you might find yourself with payments too high.
No, so you can retire early, as in your 40s. It's stated clearly in the article and not easy to misinterpret.
I personally hope this kind of thinking isn’t the trend.