First, find a mentor. Through trial and error and more hours than I care to think about I’ve learned that the best way to learn is having a mentor. If you haven’t got one, search and ask for one.
20 hours is enough to be reasonably good
Here are 4 simple methods of rapid skill acquisition from The first 20 hours - how to learn anything: Josh Kaufman at TEDxCSU .
Deconstruct the skill: Break the skill into smaller fragments and practice the most important skills first. Research shows that performance gradually decreases with practice time. So, practice the tougher parts first.
Learn enough to self-correct: Get 3-5 resources about what you want to learn. But keep only just enough number of resources to be able to self correct. For example, getting 20 books to learn a programming language will only lead to procrastination.
Remove practice barriers: Example TV, internet and other distractions that come in the way of practicing.
Practice at least 20 hours: Pre-committing to practicing for 20 hours prevents us from giving up the activity due to the frustration resulting from incompetence. Gradually, this will lead to developing an interest in the activity and will engage us.
In the last years we’ve naturally seen more and more projects dedicated to learning online. Programming especially is an interactive experience best learnt by doing, failing, and learning. Here are some good experiences, bound to learn us one thing or another.
- Codecademy (programming)
- Code School (programming)
- Udacity (technology)
- Khan Academy (everything)
- Coursera (everything)
- edX (everything)
- Google Codelabs
- 27 Ways to Learn to Program Online
Most of these are also being funded by huge amounts of money. More reading on NYTimes.