I desperately need to acquire expertise in a domain of programming that is not accessible via high school courses, and YouTube videos, or a fear I may not have a job (or a decent paying job) in 10 years.
Not really, to be honest. I mean, right now I do what should be "accessible via high school courses"--I do devops/infrastructure development and automation. I call it "e-plumbing" and I'm not even joking. But I have zero worry about competition for a few reasons:
1) There is enough subject matter expertise in the infrastructure/devops sub-field that being able to synthesize approaches out of all of it is really, really hard and is in many ways gated on experience. Understanding all of the products AWS throws at you and when to apply them versus using vendor-independent solutions versus using a different cloud provider entirely is a problem that high school and YouTube won't really prepare you for.
2) Being able to cohesively apply that subject matter expertise requires a framework that takes a lot of theoretical knowledge that takes a while to both learn and to understand the importance of. People shit on college all the time but I would be significantly worse at my job if not for the rigorous algorithmic courses forced upon me at college (it's one of those "do you know what you don't know?" things).
3) The baseline computer science background, programming chops, and breadth of experience that make me good at applying code to #1 and #2 means I have other options if I want to get out of infrastructure work. That's how I ended up here--I went from college to doing bog-standard Java work at TripAdvisor to leading a mobile team two years later because "you're smart, you'll figure out what you don't know" to devops/infrastructure work, where I'd never touched AWS or Ruby and yet picked both up on the fly. A few years later, I consult to pay the bills and work on other stuff that I find fun.
4) The demand of the industry is not going away any time soon; there will be a need for seniors to guide and manage even that theoretical legion of juniors. I'm much more worried about those juniors than I am today's juniors or seniors.
I am a JavaScript developer. I also have 0 worry about competition in the job market. It isn't that I am a rockstar programmer, that JavaScript developers are hard to find, or even that demand is low. Unfortunately, it is that most JavaScript developers suck. Absolutely horrid.
The primary culprit is a lack of education (formal or mentor-ship) on how web technologies work and I have almost never encountered somebody who did well with these technologies due simply to their university education. If you are hoping your mastery of Java or C# is good enough to quickly jump into JavaScript or some other web technology will be sorely disappointed.
It's funny that you say that, because I've been getting into ES6/TS lately (mostly to implement my own stuff) and that's basically been my reaction: "this stuff is pretty straightforward, why is so much code so bad?". Then I realize that I've had to understand, if not implement, those web technologies to do the work I've already been doing (and, years back, I wrote a JavaScript runtime as an experiment, so the language's guts aren't foreign), and I'm just picking up the other end of the rope now.
The amount of implicitly-carried junk we all know about to be good at our jobs instead of just tolerable is pretty amazing.
You can practice this directly in your web browser (developer tool's console) without any additional code editor. I am teaching my wife this now. If you can master that one skill and slowly build up some JavaScript confidence you can always find a job... so long as web browsers are a thing.
I wouldn't worry about losing your job. Software engineers will always be in demand, and demand will only increase.
I pretty much do the same job that I did in 1994. Only then, I made 1/5th as much and had 5-times as many people on my team. But, back then, few people wanted to do this type of work.
When software engineering salaries go back to normal (i.e. when they don't encroach on the 'leadership class'), it will be fine. Probably more fun, too (for people like me at least).
I find this to be allegorical to "housing prices will never go down, and the demand will only increase over time".
Imagine some big tech companies go down from some fundamental shift - suddenly there are floods of coders on the market. Its the most common job in many states, and growing. The housing market can crash - the tech sector (as we know it) can crash.
I agree - I think it will crash. But, like real estate or stock market bubble, it will be a correction. Companies will fire people. Wages will go down. There will be pain. Lower wages will allow more people to be hired, with less stress, more work-life balance. Many people will leave the industry because they were just in it for the money. Companies will have larger teams of more passionat people. Those people will collaborate. The innovators will then have more time to innovate. New companies and tech will be created. And, the cycle will continue.
Did you not worry about the same at the peak of outsourcing boom? How is competing with the next generation of students any worse than competing with the whole world?
I wasn't around at the height of the outsourcing hysteria, but I probably would have worried about it just like everyone else. I've actually been layed off before while working for a big company that outsourced to China. So, it's hard not to let that reinforce my worries. Granted, it was super easy to find a new job.
Competing with the next generation of students is worrisome because I know some companies are hesitant to outsource due to the overheard of timezones, language, etc. But they'd love to pay their developers less. Nothing drives down salary like an employer's market.
I don't know, maybe machine learning, data analytics, or game programming... Just something that you can't easily do with a couple months of YouTube studying (iOS, Web, etc.)
Does anyone else worry about that?