|
|
|
|
|
by dataflow
1636 days ago
|
|
Are you asking about technologies or are you asking about knowledge? New technology often replaces old technology, but new theory (in math/CS) generally extends older theory, and problem-solving techniques are often timeless. So if you're looking to learn things that will be relevant in the long-term, your answer is likely algorithms, data structures, and the like. They're not going to be rendered irrelevant by the passage of time; they're going to become more fundamental as we build more advanced theories on top of them. If the kind of stuff you're into is more like Rust, React, or whatever, then the stuff useful 50+ years from now probably won't be those particular technologies, but the ideas behind them. So instead of learning Rust, you'd need to learn about topics like abstract interpretation and formal verification. (Or to put it another way: try to figure out how to make a Rust compiler, vs. learning how to use it.) If you're into event-based technologies or like parallel programming, go learn about the various models of computation (there are lots) and their strengths and weaknesses. There's a lot of prior literature and research in areas you might not expect, and you'll be surprised how often research from half a century ago suddenly becomes relevant again (like it did with parallel computing). If you like PyTorch, go learn about optimization and machine learning (and I'm not referring to neural network architectures here). There are grad courses on all of this stuff if you go searching around. You'll probably have to put in more effort into them than you'd need to put into learning React or Go, but that's life. |
|
I was trying to get at both. On the technology side, I was wondering if it is wise to focus on a particular technology/language consistently over a long period of time to compound my knowledge, or learn a new and promising framework/language every so often. For example, I assume Java and C++ will have a high likelihood of being relevant my entire career and so it could be valuable to become an “expert” in the language. However, Go and Rust seem promising going forward and could introduce me to new ways of programming. As I write this I get the feeling the answer is not so black and white as I make it out to be. Some combination of both seems like the right approach.
On the knowledge side, I was mainly wondering what are specific concepts that would be relevant years down the road. I was thinking if I could grasp these fundamental concepts well, then it could provide a solid foundation for any type of field I would like to work in. I realize it is was a very vague question and probably should have been more specific (I’m mainly interested in backend development). Nonetheless I found your answer very insightful, thanks.