A friend of mine recently reached out with this question. Since I have been programming since the Ford Taurus was the top-selling American vehicle & "the internet" meant calling the library and using a black-and-white terminal to read my email, it seems like I might know something about the subject by now?
I have had to re-learn how to program numerous in the last 30 years. Aside from learning about version control and how to navigate within an IDE, it's not obvious to me that much of anything I learned 10+ years ago has been transferrable. The optimistic spin on this is that anyone with an unquenchable reservoir of curiosity can become one of the world's best programmers in some new domain. The pessimistic spin is that even after you put in the time to become expert in some language or technology, it will become irrelevant in a few years. 🤷
So, if one wants to minimize how long it takes to become proficient in a technology, the question is probably less "which technology to learn?" and more "how to cultivate long-term interest in programming?" I'll answer that question first and then go back to the original question of "which technologies to learn?"
Personally, what energizes me is the endorphins released in my brain when I can see some visible improvement from the changes I'm making. The shorter the loop between "I wish the product did X" and "now the product does X ✨", the more willing I am to spend a Saturday morning on it.
To invert this observation into advice, I believe the fastest path to become proficient in a programming domain might be something like
Think about some important problem of yours. Ideally you can figure out a problem that will still be important to you 5 years from now. Bill's example.
Find an example to start from. If someone else already has an open source project that lets you work toward a problem that's interesting to you, try using that? It will teach you one of the most integral parts of programming: understanding others' code. If you're lucky, the project will have some tests written for it, so can run those and quickly determine whether the changes you're making breaks things.
Work tirelessly to minimize your iteration time. You want loop as short as possible between "I want to improve X" to "I can see that X now works in my development environment" to "I can hear from users that are now enjoying X"
The key to being energized is to configure the project you're working on so that you can instantly see the positive impact of the changes you make.
The vampire that will constantly drain your will to program is an environment where it takes more than 30 seconds between when you have made a prospective change and when you can see the result of that change.
It is often hard to configure a project to give instant feedback on changes as you make them. React with hotloading is one way to achieve this, but the problem one thinks will still be important in 5 years may or may not be good to solve via React. That's fine. If you build a project with Ruby on Rails or Python on Django, those will tend to load in < 5 seconds, and that's probably good enough. Just try to find an example that you can get running locally in an hour or two (longer and despair starts to set in), and figure out what you need to do to see a new version of the project as you make changes to it. If that thing takes too long, consider another project.
Typescript isn't going anywhere soon. Neither is Python, nor is Ruby on Rails. Those are all pretty worthwhile technologies to learn in the early 2023s.
Maybe you want to try building a web extension via Typescript? That can let you make important changes to how your browser works without a lot of code. But the iteration loop may leave something to be desired.
In general, building apps that do interesting things with the APIs offered by OpenAI (and soon Google) will be an area with huge potential for at least 2023-2024.