3 ms·
I'm going to be really generic here and say: 1. Learn a high-level OOP language. Java, C#, etc. 2. Learn a functional language. Haskell, Lisp, ... 3. Learn a
by ianstallings 13y ago
I'm going to be really generic here and say:
1. Learn a high-level OOP language. Java, C#, etc.
2. Learn a functional language. Haskell, Lisp, ...
3. Learn an imperative language. Such as C.
4. Learn an "in between". e.g. SQL.
5. Look for outliers. e.g. Aspect oriented programming, Eiffel (DBC).
Basically learn the different paradigms around programming and the common data types that span almost all languages. Learn when and where to apply those paradigms and the strength of each. Knowing those things will help you adjust to the future fairly well.
I'll give you an example of that in action. I learned some Common Lisp in my spare time. I then went on to use C# in 2000. So when Monads were eventually introduced in C#, I knew how and when to use them. My other colleagues at that time, their eyes glazed over for the most part. What was this new fangled contraption? It wasn't new at all, it was old school.
Knowing specific frameworks inside and out can be advantageous, but can also lead to a very narrow vision. If you make yourself well rounded, it leads to a very flexible skill set. You see something and you say "oh, that's just like X" and you dive in. I know you want to be a web development bad ass. But a lot of the knowledge to make you one is outside of the web.
Then, if you're feeling frisky, dive into hardware.
- weavie 13y agoWhilst learning these languages, don't just learn the syntax. Get some good books on algorithms and data structures. Learn these really well and then study the languages to find out you can implement them. Each language will lend itself to certain structures. Learn them.
- ianstallings 13y agoYou just reminded me of something I left out - patterns and anti-patterns. Knowing those might be just as valuable because then you can recognize and adapt quickly. For example MVC is basically the same across all platforms, with minor differences.