It's amazing to see so many smart developers here. We all learn new languages/technologies from time to time. Just wanted to ask how you guys learn something new. What does your overall learning path look like?
For example, if you are asked to learn "NodeJS", how will you go about it?
I believe that the only way to retain what you've learnt is to build something with it.
I begin with reading about the programming language in a blog or its documentation, or watch some intro videos.
Then if I get convinced, I read ebooks on it to get a good grasp and then start building something with it, may be a small script to automate some tasks or may be a big-enough app. :)
The best time to plant an acorn, was 20 years ago... the next best time is today.
My philosophy is that when it is time to learn something.... I better just crack on and see what I can do.
Most languages share principals, I find loosely typed code easier to work with because that is what I am used to so learning more C style languages isn't as appealing to me as what it should be. but sometime you just need to get your hands dirty to get a feel of how far away a new language is to what you already know, and if it is - why is that, and are there pros/cons to each approach?
Learning new language's can genereally be a case of learning new syntax, but when moving between strong and loosely typed languages you will find that learn more as they can be quite different.
I agree with other posters too, a good few step by step youtube videos for simple CRUD apps will usually give you enough to work with in a broad sense and some googling can usually help with the finer points.
I start by finding and assessing tutorials based on amount of content and hopefully there's at least one tutorial that seems to cover a lot of bases and also isn't too handwavy. Then I follow along, writing everything out by hand. All the while, testing various tweaks and changes. (Make sure you've installed idiomatic/popular tools and use them right away to really get acclimated to the language's workflow)
After I'm done with the tutorial, I first take a look through the language reference and read various bits and pieces, searching the internet for anything that seems interesting/vague to find more thorough explanations.
Finally, I pick a small project to complete in the language. At this point you want to try writing most everything on your own, but don't be afraid to find a similar project and try and apply patterns/implementations in your own code. Often times this is the best way to see how others code in the language.
One thing to note through all of these steps: just as with a human language, you need to immerse yourself in it! Discuss on IRC channels, get active in forums, contribute to open-source repos, find various ways to connect with others. You'll find that people will more readily help you if you are giving back to the community.
As well as practice and projects what I find useful in learning a new language is getting the basics and fundamental principles absolutely right in the beginning - this should reduce (not entirely prevent !) pain in future as you step from tutorial type problem solving to real life problem solving.
So for Node.js the big idea there is its single-threaded non-blocking events model, the rest of it is Javascript. For traditional languages like C and variants, Perl, VB, etc you'd want to be very comfortable with data types, data structures, program structure, scope and (to a lesser extent) syntax.
The rest of it will come with practice, reading around, getting it badly wrong and (crucially) finding out why you got it wrong and participating in communities like this one.
Watching 1-2 "x Project from scratch" videos. Coding it. And then picking an easy project I coded in a language I already know and redo it with the new one.
I prefer screencasts, to see how 'pros' are using the language to judge if DX (developer experience) is good or great. Peepcode was the best source for high-quality screencasts before Plurasight had acquired them.
Right now I am using egghead.io sitepoint.com youtube and livecoding.tv
And of cause when I start to like a language, I'll go and buy ebooks.
I mostley, create a project I want to make with the programming language and then I start. When I have problems, I look for solutions and after some time I know the language better and can use it. Its maybe not the best way but it works for me :)
Jake Russo
Perl 6 & JavaScript full-stack developer
Maksim Kolyadin
You can just go on codering.info and see which language/framework is popular right now.