I also keep thinking, surely other industries will start paying more and treating folks better, so they can attract top talent, but nope!
Why is this?
I've been coding since I was 12, I have flow days where it's just an absolute pleasure. But on a bad day where I never hit flow, it's brutal. It's so hard to force myself to focus. And often when I come back the next day, the code I wrote is absolute shit and I spent a good chunk of the next day just debugging it.
So yeah, echoing those who say not easy.
The other piece of it, is that I actually think a lot of software engineers are massively underpaid. I was at my last job for 7 years. My total compensation, including benefits, options and what have you, was probably less than $1 million (over 7 years mind you). But I can draw a direct line between work I did and the enablement of millions of dollars of ARR. The company probably got anywhere from a 5x or a 10x return from their investment in me. I was paid a little under market, but not so far under market that I'm that different from the norm. I worked on some particularly high impact features in terms of return, so that line is particularly clear for me and not all of my peers there could say the same -- but a lot of them could, and even for the ones where it was less obvious it's still true. As software engineers at a software company, our work is ultimately essentially. The companies don't exist with out us.
As a class, given that, we're still underpaid ;)
There are extremely few EE jobs available to be people with only undergrad degrees, and literally zero available to those without college degrees. This is a huge limit on the number of potential job applicants.
So you'd _think_ this would drive salaries up, but...
There's also just fewer companies doing EE work, where basically every company on earth does something with software at this point.
So there is a supply/demand component, but there just aren't that many places people who want to do EE can actually work. If you're top-of-the-field in EE/low-level CE, you will be paid handsomely.
In most industries, the money to pay more does not exist.
American companies dominate in software, and they are also highly profitable. Because immigrating to the US is difficult and because many people don't even want to move there, there is a shortage of software engineers in the US. Compensation is primarily driven by the domestic job market, where businesses compete for talent.
In other areas of technology, American companies are not so dominant. There is also more competition, driving the profits down. If an American business pays too much, it will get less talent for the same money. Their products will be worse and more expensive, and they will lose to their competitors.
As someone from Finland, I've been familiar with this dynamic since childhood. You hear about it in the news all the time. High wages are a grave threat to the economy, because they make our businesses less competitive.
There's also a bit of a coordination effect: just as you can't replace Ronaldo with 1,000 cheaper footballers, you can't easily replace one good dev with lots of less good devs.
I think you overestimate the quality of median software engineer. Even at a company like Amazon, I think something like 20% engineers can barely code. Add to that industry expectation to work independently with little guidance and not that many people who will fit the bill.
There are lots of junior engineers, who with guidance and mentoring can actually flourish but your average "move fast" startup won't invest in them.
I see all these coding bootcamps that supposedly graduate people who can get right to work, but in my experience less than 20% of the bootcamp graduates I've interacted with were even remotely competent, or seemed like they could even be trained up to be competent. Many who I'd kept in passing contact with ended up going into engineering or product management within a year or so (with very entry-level roles).
That's not to say you need a 4-year CS (or related) degree to be a successful software developer, but in my experience it's more difficult than you seem to think.
I do think it's bonkers that software developers in the US (and especially in northern California) make orders of magnitude more money than software developers in western Europe, in places with more or less comparable costs of living.
I think EE/CE-related jobs are mostly harder than software-related jobs, but that doesn't make software easy.
Regardless, I think it's just a matter of supply and demand, plus where the easy VC money has been directed. Most companies these days do something with software. Most do not do anything with hardware beyond buying finished products. Add to that the fact that most EE/CE jobs have moved away from the US and Europe, so Western EE/CE types don't have much in the way of employment prospects compared to the number of people who graduate into the field.
It requires above average:
- Working memory capacity
- Tolerance to extreme frustration, persistence
- Ability to learn fast
- Capacity to deal with particularly high incidence of imposter syndrome
- I could keep going all day...
SE is not overpaid. I actually think it's underpaid. Above all, the profession pushes for an early retirement.
An electric engineer is working in physical systems and you can't copy physical systems that cheaply. Unless you are in RnD, you can't have the level of impact a junior software engineer can have.