If you want young Americans to work these jobs, you need to pay /more/ than software jobs, because the conditions are worse. Otherwise, you only get the people who can't escape. Anyone who can escape eventually does.
If you want young Americans to work these jobs, you need to pay /more/ than software jobs, because the conditions are worse. Otherwise, you only get the people who can't escape. Anyone who can escape eventually does.
You can say this part about basically any job and it would be true. Tech salaries and work conditions are ridiculously good, compared to any almost other job in the US and any other country than the US. Even other STEM jobs (e.g. civil or mechanical engineering) tend to have less than half the pay and much worse benefits and work conditions compared to software.
If software is eating the world, eventually almost all jobs will in some aspects be software jobs, analogous to how 98% of the population used to be engaged in some aspect of agricultural production. We should focus on providing people with the productivity amplifying tools which might sustain a high quality standard of living.
The other way to do that is cut the wages of software jobs. Honestly with the glut of young developers and remote working it has started to happen already.
Executives have been trying to do that for decades (“The Decline and Fall of the American Programmer” has been heralded since the 80’s).
Even the exhalted Steve Jobs ultimately failed in his cabalistic attempt to hold down programmer pay.
It’s like a menagerie of Elmer Fudds and Yosemite Sam’s trying to bring down Bugs Bunny. Or a mangy pack of Wiley Coyotes desperate to run down the Roadrunner.
In the decades since I've come to believe that actually liking working on software requires a certain sort of...personality that most people just don't have.
The reality is that most people follow incentives, almost nobody works their actual dream job, they work the job that they have the most return for their abilities and investment. HW and SW jobs used to have a lot of overlap from an abilities perspective, but as each has become more specialized that overlap has eroded. A lot of people are choosing to go all-in on software, whether they particularly love it or not, because it is a far better environment to work in.
I make far more money than a lot of other people while working less, and much more comfortably from my own home. Why do anything else? I’ve concluded people will really subject themselves to a lifetime of grueling pointless work just to avoid some math and science.
If the right tools were invented for them, they might take to it like ducks to water.
1. There is a limit of complexity that a given person or a given team can deal with happily. Below the threshold work satisfaction is great: “I am solving more and more complicated tasks”, after the threshold a stress eats job satisfaction: “I do not want to open my emails in the morning - what if I will not be able to solve some new problem”.
2. Complexity of each successful product grows until this threshold is reached. The successful product is used by more and more people. The successful product is put as a building stone in more and more complicated projects.
3. Because of 1 and 2 a successful SE is an unhappy person running under a lot of stress.
Now let’s see how decreasing the complexity of tools changes the situation. Bad tools: 50% of the complexity of the situation is caused by the tools, 50% - by the complexity of the product. Let’s improve tools twice. Now the tools create only 25% of the original complexity, and since the product causes 50% of the original complexity overall situation improved to 75% total of the original one. The engineer can have a happy life? No so fast. Since the product is successful, the is a great demand for new features. The complexity of the product increases to 75% and the programmer lives under stress again.
So, better tools allow to create more complicated, more useful products. But they do not improve - in the long run - the quality of programmers’ lifes. So if a person is not happy with current tools, she will not be happy to be a programmer. Or so it seems to me.
Maybe a person loves developing prototypes and POCs, or shepherding new systems through phases of adoption prior to reaching massive “scale.” As some people are wont to say, “Everything breaks at scale.”
Everybody has a complexity band in which they are comfortable operating. Many problems of high complexity can be decomposed sufficiently that they can be attacked teams of mostly mere mortals, with perhaps some assistance or over-sight from the Anointed Ones. Also, many people have significant abilities to navigate the complexities of, say, differential topology but C++ not so much. And vice versa. How information is presented impacts our ability to cope with complexity.