When I started coding some years ago I studied PHP and Actionscript I did the way I was used to study everything:
- FIRST: reading some books to understand theory and concepts
- THEN: trying to practice it
and it took a lot of time.
Recently I had to write new code with Java and Python and I was frustrated because I considered as lost the amount of time that I had put before into PHP and Actionscript. For this reason I decided to not to invest any more time than necessary in some other language since experience proved me that every language can become obsolete in a very short time, even if at a certain moment everybody hypes it.
So I just started to write code in Python without knowing anything of language syntax:
- FIRST: writing some lines in Eclipse, launch code execution, watch at console error output, search Internet for a line to be copied to perform the task I was trying to perform
- THEN: eventually reading something on the subject to go deeper.
It may seem strange but it worked so smoothly that I then did the same for Java.
So, to effectively code with a certain language I think those three element are necessary:
- syntax
- object oriented programming
- design patterns / frameworks
and I think the last two of the above points are meta-language skills, I mean that they work almost the same way in every language, so once you have learned with Java then you can apply in Python too (I actually said "Java" because I think Java is crystal clear in hinting programming concepts and meta-concepts). Since OOP and using frameworks are the most important factors in coding, then you can see how knowing a language syntax is almost trivial and you can literally keep a page with online documentation open to consult continuously while you're coding.
Of course this is related to a pragmatical use of the language: I have an application to write and I want to do it in a reasonable short time. But I can say that by this approach I also have pursued a lot of understanding of all the language aspects.
I am not an eligible person to answer this but this is what I do:
Totally agree on 5. Find someone in your department or elsewhere who's also trying to learn the same stuff. Learn the bits they know off them, and teach them the bits that you know. Then add more people.