How to Learn Any New Library, Language, Framework or Technology
I love new ideas. Exposure to new technologies changes how we think – even with the technologies that are comfortable and familiar to us. Plus it’s just fun.
Even in developer terms, I’ve worked with a lot of disparate technologies given my 6 years as a professional. I’ve built production apps with .NET, Django, Meteor.js, Adhearsion, Backbone Marionette, and Flask. Including prototypes and side projects, I find myself diving into new frameworks and technologies often.
Here are the techniques that I use to quickly get up to speed with any new technology.
Have a goal in mind
I never, ever pick up a new technology without a specific goal in mind for its use. I find that I work more quickly and absorb information better if I know what I’m using it for. Sometimes that means I’m curious about a technology for a while before I try it out – for example, I learned about Meteor.js about 6 months prior to trying it out. It wasn’t until I had a project on my desk that required real-time updates and cutting-edge browser technologies that I took a close look. Perfect fit!
Start with examples
Documentation is awesome. But when you’re brand new, a working example is better. Most frameworks have step-by-step tutorials for creating your first project but the newest ones ship with working examples (Meteor.js does an awesome job of this). I typically spend an hour or less on the “default” example – enough time to get a feel for where things should go. Then I’ll pick a portion of my goal and try to modify the example to do it. If I’m lucky, and the example is close enough, then I’ll know how to proceed and confidently make changes. But more often than not the default example is too far removed from what I want to do, so I search out an example that is a closer fit. This means I’ll have to read through at least 3-4 more examples, understand what they’re accomplishing that is different from the rest, and eventually try to mold two or more together to get what I want.
This process of quickly analyzing and stealing from a variety of examples is crucial to the learning curve. It will take you from “uhh, what is that file for?” to “oh yes, I see what they’re doing here. But I’ve seen a way of doing it that I like better” in a matter of hours.
Work the experts in your network
Sometimes documentation is too low-level and StackOverflow is too uptight. Sometimes it’s 11pm and you’ve been staring at a stack trace for three hours and you just can’t even see the code anymore. That’s when you need someone with whom you can discuss the problem. We’ve all had the experience of spending hours banging your head against a problem just to have someone tell you the solution in 3 minutes. That’s the power of having access to experts.
This technique can sometimes be difficult to do if you don’t know anyone familiar with the particular technology you’re trying to tackle. There are two ways to tackle that: first, try to convince people to try out the technology with you. E-mail them screenshots of your example app and tell them you made it in only 3 minutes. You may get some new recruits that you can bounce ideas off of.
Second, don’t be shy about reaching further out into your network. Last month I went to a Code Retreat and met an awesome Ruby developer. So when I had trouble figuring out how to do an asynchronous callback between DRB instances I sent him an email. He was delighted to answer and show off his Ruby knowledge (in case you’re curious, the solution was to use a block).
Meetups, conferences, and developer events are a great way to expand your expert network. Pay attention to when people particularly impress you with their knowledge and communication skills and swap emails. Stay in touch by sending an occasional email. Something like “I saw this video of an awesome talk and I thought you would like it too” works very well.
Answer other people’s questions
Not only is the ego boost prompted by answering someone else’s question a nice offset to a day filled with frustration and banging your head against the wall, but it will also reinforce and expand your fledgling knowledge. StackOverflow is a good way to find questions, particularly if the technology is so new that there aren’t a lot of questions yet. But since you’re looking for beginner questions you may find it hard to find questions you can actually answer on the site. In that case, try IRC. People pop into IRC questions and ask variations of the same beginner questions all day, so there’s a good chance that you’ll find someone you can help.
Build a production app
There’s really no substitute for building a production app, so once you feel terrified-but-not-completely-at-a-loss for how to go about this, go ahead and build one. Since you’ll have a goal in mind (see above), you’ll know exactly what to build.
So there you go, my tips for learning any new technology. Have tips to contribute? Feel that mine are obvious or sucky? Let’s hear it!