Language Agnostic Learning
Joe Rinehart has posted an entry on his website called “Don’t learn CF. Or any other language”. The general idea of the article is that it is better to learn the concepts behind programming instead of simply learning the syntax of any one particular language. This allows a developer to move from language to language instead of being tied down to a single language. Instead of learning the different commands (a good IDE or reference book can help with that), try and learn the concepts that are applicable across all languages.
In essence I agree with this. Object-Oriented Analysis and Design is not limited to just Java or C#, it can be used on any OO language. Therefore, if you learn OOA-D, you should be able to apply it to any language. The same thing goes for design patterns. In addition, every language has its own way of hangling threads, events, and data structures. It is simply a matter of learning the principles and then applying them to whatever language you are using.
However, in practice, this seems to be a lot easier to say than it is to do. I know a lot of different concepts that go across the language barrier and are universal. However, I find that as I move from language to language, there are subtle differences between how things are done across languages. It is learning these subtle differences that takes the time. In addiiton, I find that as I move across languages, I have to try and get myself into the correct headspace for that language. If I have been doing a lot of Java programming and then try to move to CFMX, php, or C#, I have to get my head back into the required space for the language and relearn a lot of the nuances for that language.
Then again, it may just be me.