By programming I guess (original advice I know)
But the better advice is actually the right mix of theory (courses, tutorials, websites, reading other people's code) and practice (creating your own solutions to problems). The theory is important, because it prevents you from developing some bad habits which may be hard to unlearn.
Also talking about your own solutions to problems, there is often more than one way to do a thing. When you've done something, ask yourself whether there is another way to do the same thing, another way to structure the program. Play with the alternative ways and think about why one solution is better than the other.
And I second Coursera, plenty of good tech courses (just beware - if you sign up for a few courses, they will spam you to death - don't use your primary email - yes, there are settings and you can uncheck like a hundred boxes that you don't want those emails, that's another option). Besides coursera, some gems can also be found simply on youtube, or individual languages have particular tutorial sites.
The approach which has worked for me with several languages is a read a little bit / course / tutorial (but not more than say 20 hours of studying) and then start working on my own things immediately. Even things which seem way beyond your current level. When I get stuck, don't know how to solve a problem, go to google / the program's documentation / stackoverflow and learn as you code.
I would also say that your learning priorities will depend on your reason/motivation why you want to learn the language. Do you want to get a job or freelance or build your own things for commercial purposes or is it just a hobby?
I also second open source projects (if you plan the CV/job thing), although I've never got much involved in that personally.