I haven’t made much progress for a few reasons, but one key reason is that I get stuck and don’t really have anyone to ask for help. So, I put the system on the shelf for a week or a two and then come back to it when I have some energy (and a lot of disk space).
Learning with others doesn’t have to involve a community or even a mentor. It might be one person trying to figure this out with you—someone that you can bang your head against the wall with.
Notice that I had all three of these things when I learned Vim. Jeff was helpful, my typing skills were far enough along that I did not need to hunt and peck, and the code provided plenty of opportunities for practice.
Now, look around at the skills gap in your area. Search for the skills that people will pay money for and that anyone can learn, but that few people are actually going out and learning. One place to look for these is job listings—i.e., the skills that lots of people are hiring for, but nobody has. Also, consider what type of job you would get if you had to find one totally outside of software. What skills from those jobs might also be relevant to the job you have now?
Once you've identified the skills you want to learn, all you need is aptitude, an interesting problem, and a friend to call.
What skills would you like to develop in 2013, and how are you planning to get there? If you'd like to learn Hadoop or Jenkins on OpenStack, let me know. I need to find someone to collaborate with.