In the past, I would always struggle to learn new languages (programming or spoken). It would start out well enough … I’d dive in head first, scouring the internet and the bookstore for any information that I could find. I would take in the basics easily enough … I can probably print “Hello World” in more languages than I can count on my hand … but soon enough, something will come up that requires my attention, and learning actionscript/python/javascript/php/etc gets placed on the shelf.
For me, the best way to learn something has been to find a project to work on. I learned html/css first through customizing my Blogger blog, and then by building my own website (the iteration before the current one). Most recently, I wanted to build something to help readers navigate our recently created financial literacy page. As it is now, stories are sorted based on the date they were published, even though they can be written for very distinct age-based audiences. I had recently read a tutorial on using jquery to show and hide content and utilize hover effects, and thought it could easily be translated to an interactive that allowed users to show and hide content after selecting a particular age range.
My advice if you want to learn a new skill. First, find a project that you know you want to work on and that will hold your attention through the distractions that are bound to come up. Then, determine what skills will be needed to complete that project and go from there. It has been much easier for myself to address a need that already exists as opposed to trying to create a need because someone has said this is a skill I should have.