Software is the infrastructure of the 21st century and if you step out of the tech bubble to things like material science, biotech, etc. you'll see that their infrastructure is garbage despite there being really big returns available.
Developers who can marry modern software to those domains should remain in high demand for decades.
Anything related to public safety (including transportation) probably needs the most tech talent.
Spend a month with a tech stack of any passing complexity, even ones at $FAANGco...
We're nowhere close to solving all the hard problems.
I've been trying to learn more about the dark corners of the linux kernel and graphics drivers for now. But its not 2015 and I don't have 3 years of experience in embedded/systems/C++ so no ones gonna hire me for that stuff because my resume just says "generic backend dev lol".
The average competence is still low, the technologies are just no longer new and shiny (they aren't mature either), they're just better understood throughout the industry. 2010-2015 saw huge cross-industry revolutions in terms of web adoption, and until the next "revolution" happens, we'll probably be in a lull in terms of innovation in the web app space. Of course JS/Node will continue to "innovate", but overall I think that portion of the industry has been successfully "commoditized."
Hardware engineering (drivers, embedded, IoT, etc.) will always have tough engineering problems, but as you said, it's kind of hard to break into that (though maybe not, I haven't tried). Quantum Computing and other experimental and uncharted spaces are good sources of problems looking for well engineered solution (source: I work in quantum computing, on the engineering side), but is a much smaller and niche industry.
> I see maybe some cool stuff in the move to ARM processors
I also agree on ARM, I think things will gradually shift towards ARM-based processor architecture in the server and desktop spaces. From the software side, most modern programming can be run on those processors without issue, though there's some work to be done on optimizing compilers (hard, not very rewarding).
> I've been trying to learn more about the dark corners of the linux kernel and graphics drivers for now
This is an area I'm also particularly interested in. If I wasn't getting close to burning out, I'd probably focus on it on the side a little more. AMD is behind, in particular, with regards to graphics driver optimization and toolkits for machine learning (nVidia is beating them out there, thanks CUDA). I'm not sure what their hiring is like, but there's been huge industry shakeups over the last few years from them in the processor space and they're swimming in money.
Machine learning is also a hot topic, and probably will be for awhile. Security engineering (especially in the context of Kubernetes) is an ongoing issue that needs more attention.
There's definitely others. I'd eventually like to find a problem that interests me and I see a market for so I could start my own company, but alas, I am not good at ideas.
When you already have architecture that is capable of serving the entire world, when everyone has a smartphone all that's left in that space is efficiency/cost optimization. Whatever shiny new programming language or framework comes out, the bedrock of computing is solid (and the shiny new programming language is really mashing together decades old ideas which is cool if you're new to them but boring if you're not) . Every company is a mess on the inside of course, but they do their core functions well enough. AWS did not exist 10 years ago, now it's big internet drama when it goes down for a few hours twice a YEAR.A detailed postmortem comes out (not standard before), revealing the problem was a configuration change (because everything has long since been automated, so it's driven purely by configuration) .
I know not everyone is interested in those same problems, but I thought they were interesting and what's left now in the guts of software is an adoption phase, people rediscovering lessons that others long since figured out. Perhaps people who work on higher layers of the stack think differently, I'm only interested in the deep tech below, and it's pretty solid at this point.
Now the market is crowded, scaling is a simple economic problem, the network effect is turning on its head and there isn't any revolutionary software to build on the horizon. Times have changed but the narrative hasn't caught up yet.. its going to suck when it does honestly. Software is just so commoditized and cookie cutter at this point i can't see it being a great career for much longer.