>
Like it or not, virtually every aspect of life now is dependent on software. A CEO without developers is nothing. A manager without developers is nothing.Every aspect of life now is dependent on food and mineral resources, too, but that doesn't mean farmers and miners are rich. Lots of CEOs and managers don't have developers, even today, just like they don't have farmers and miners. So I think your explanation is wrong.
> I would argue that we are paid comparatively more than other careers because to be successful in our work we must take the confused requests or requirements we are given and make sense of them
This is not a difference between programmers and maids, taxi drivers, or bouncers. So I think this explanation is wrong too.
— ⁂ —
My preferred explanation is that people's share of the excess value of an endeavor depends mostly on their bargaining power. The people who have little bargaining power relative to the group, because their BATNA is poor and the group's BATNA is good, tend to earn very little. The people who have lots of bargaining power tend to earn a lot, relative to the excess value.
To take an extreme example, a gangster who robs a convenience store is making no positive contribution to the convenience store's value, even making a negative one, but he can still take home a lot of the convenience store's profits, because the clerk's BATNA is a bullet in the head. The store owner's BATNA is to close the store or hire security guards, so the gangster has an incentive to stake out territory to prevent competing gangsters from making the store's profits actually negative. The gangster's BATNA is (depending on factors like murder conviction rates and CCTV resolution) either to spend a couple of bullets and maybe have to wash his shirt, emptying out the cash register anyway, or to walk out of the store emptyhanded. He has more bargaining power when he can more easily choose the first of these.
Key employees whose departure would substantially reduce the profits of a business can, in the same way, demand much higher compensation than easily replaced employees. (So, too, unions who can credibly threaten a strike.) With the rise of managers in the late 19th and 20th centuries, many managers became such employees; now, many programmers are as well, for multiple reasons.
One is that business processes that were previously carried out manually under management direction are now carried out automatically by computers.
Another is that, like managers and unlike taxi drivers, farmers, or assembly-line workers, programmers are not very fungible: the knowledge in their head is what makes the software adaptable. You can easily buy your rides from a different taxi driver or your wheat from a different farmer, but you can't easily buy new GCC features from anybody but the small group of programmers who already know GCC, many of whom are specialized in particular parts of it. When we're talking about your home-grown payroll system, the situation is even more extreme. And of course we have the Fizzbuzz phenomenon, where hiring competent developers is difficult, especially for people who aren't themselves competent.
A third reason is that writing more software can vastly increase the profitability of a business, both because the software is a cheaper replacement for workers, and because it enables new productive activities that weren't possible without the software. This doesn't guarantee higher earnings for programmers (or sysadmins, or data center HVAC technicians) but it does increase the size of the pie the different factions are negotiating shares of.
— ⁂ —
So why are hardware engineers so much worse paid than software engineers? Their contribution to automation and softwarification is, after all, equally critical, and they're doing the same kinds of activities as software engineers, so they're no more fungible.
I think it's because the hardware engineer's BATNA is so much worse.
If they have ramen money, a software engineer can take six months off to write a game or a web service and make it available to the world. Mark Zuckerberg and Eduardo Saverin launched The Facebook to students of the entire Ivy League from their dorm rooms after a couple of months. They didn't need any investors or permission. 37Signals had similarly shoestring beginnings. Every company that wants to hire programmers has to compete against the startup ecosystem, both VC-funded and bootstrapped.
By contrast, spinning up a production run of a new chip is going to cost you upwards of US$100k, or US$10M for a chip in cutting-edge technologies. You have to convince Samsung and/or TSMC to give you access to their cell libraries, signing NDAs. Even a prototype shuttle run in a last-millennium process node from something like MOSIS or CMP is going to cost you US$3000. Feedback time is measured in months or years, not seconds or minutes. PCB fabrication is not so extreme but there's still no hardware equivalent of a US$5 DigitalOcean droplet where you can try out a web service on 1000 users all over the world.
So companies hiring hardware engineers have a lot of bargaining power by virtue of having the capital to put designs into production.