In my experience, this is more about memory rather than intelligence / ability to understand. I used to be quite good at C++ and Perl and then I was asked to move to Java and these days I work with Scala + Java. In between, I also learned quite a bit about my domain (financial industry / trading), and ended up getting good at R in the process. Now, I will probably not pass a C++ interview! :-)
At the same time, if I had access to good notes (that I made), it will all come back pretty fast. For example, I picked up the "C++ FAQs" book by Cline, Lomow and Girou from my bookshelf as I was typing this and as I thumb through it, I am experiencing a lot of, "Ah, right, I remember this now".
> I already know that I want to do programming for the rest of my life, so should I pick one language/technology and stick to that and learn it very-very deeply, pick up one and two beside that, or should I go all-in and learn every language as much as possible?
I would say learn one language VERY well AND make notes. Then the rest can often be learned by comparison quickly. The problem is that many times, your employer,a Lead Architect, etc; may decide the language for you, and you may not have that much say...What's worse is being asked to move back and forth between related languages, which can be quite confusing!
My conclusion is that both you and I should probably start using Anki or other memory-aiding software to make notes as we learn! Here's a great article by Derek Sivers on "Memorizing a programming language using spaced repetition software" : http://sivers.org/srs. I've read that article a month ago or so and have been meaning to finally start using Anki along with my Functional Programming in Scala coursera course, but somehow didn't.
However, note that some people make an entire career out of being a guru at one thing. In this path, one key element (that took me too long to grok) is : don't just learn, WRITE about it. Blog about what you learned. Even better, write a book about it, attend conferences, etc; That is the way to extract the maximum return for the effort you placed in learning one thing deep down to the metal! When you meet people in person, it opens up opportunities that are exponentially better than merely going to a job search engine!
That was quite rambling; I hope there is something of use to you in there!
Great answer! I thought exactly what you describe; a lot of depends on lexical knowledge about the specific language...
I was using Anki to learn key combinations of my IDE, editor, and terminal commands, but I did not thought about to learn a language with it! I will definitely do it!
At the same time, if I had access to good notes (that I made), it will all come back pretty fast. For example, I picked up the "C++ FAQs" book by Cline, Lomow and Girou from my bookshelf as I was typing this and as I thumb through it, I am experiencing a lot of, "Ah, right, I remember this now".
> I already know that I want to do programming for the rest of my life, so should I pick one language/technology and stick to that and learn it very-very deeply, pick up one and two beside that, or should I go all-in and learn every language as much as possible?
I would say learn one language VERY well AND make notes. Then the rest can often be learned by comparison quickly. The problem is that many times, your employer,a Lead Architect, etc; may decide the language for you, and you may not have that much say...What's worse is being asked to move back and forth between related languages, which can be quite confusing!
My conclusion is that both you and I should probably start using Anki or other memory-aiding software to make notes as we learn! Here's a great article by Derek Sivers on "Memorizing a programming language using spaced repetition software" : http://sivers.org/srs. I've read that article a month ago or so and have been meaning to finally start using Anki along with my Functional Programming in Scala coursera course, but somehow didn't.
However, note that some people make an entire career out of being a guru at one thing. In this path, one key element (that took me too long to grok) is : don't just learn, WRITE about it. Blog about what you learned. Even better, write a book about it, attend conferences, etc; That is the way to extract the maximum return for the effort you placed in learning one thing deep down to the metal! When you meet people in person, it opens up opportunities that are exponentially better than merely going to a job search engine!
That was quite rambling; I hope there is something of use to you in there!