This post was previously on the Pathfinder Software site. Pathfinder Software changed its name to Orthogonal in 2016. Read more.

While never untrue, it is more of a necessity now, that a programmer should know more than just one language or framework. After being a focussed Java/J2EE developer for a long time since college, in the last couple of years, I plunged into .NET, Ruby/Rails and then Javascript/prototype/jQuery etc and now onto groovy/grails. With names like Erlang, Scala, Compass, git, blueprint, flex flying around us everywhere, it can be overwhelming and we need a plan to pick, peruse, acquire them. Here is a list of things I do when learning a new skill.

Start with Basics: Books, Tutorials etc.

Yes, getting hands dirty is the first thing. If you are “programmers don’t read manuals” type and/or you know enough about the new language, just download and give it a ride. Or you can pick a book or two, read getting started tutorials and then give it a try. The gist is start relating what we learn to what we already know and ask questions. How can I upload the file in the new framework, how do I do testing, how can I write library/reusable-code etc.

All major language framework nowadays have at least 2 types of mailing lists: user and developer. It’s a good idea to subscribe to user mailing list and start reading it from a few weeks or months ago depending on how fast the language is changing and how relevant the posts are to the current version.

All this may get you coding and get by for the day but you haven’t really understood the framework. Fear not, here are a couple of things you can do.

Download and Peruse Example Apps

Most frameworks come with an example application where it is being used to exhibit its strengths. If not, it shouldn’t be difficult a reputed open-source project even if the framework itself is proprietary. This is a good place to learn best practices and design patterns as it applies to that framework.

Subscribe to Bug Tracker

Bugs and new feature requests are a great way to learn about the “other” side of a cool framework, the deficiencies that are. No quick tutorials focus on the internal nitty-gritty that we run into as soon as you start on a non-trivial project. The discussions that happen on whether something is a bug or a design choice becomes clear from this place. Again, not a bad idea to go a little back in the timeline to read fixed bugs, and finished features.

Subscribe to Core mailing-list

Peek into the future that is. Here is where the core maintainers discuss what is the next high priority items are and how to implement them. While it may be too early to contribute here, it is a place to learn some advanced stuff.

Download and Peruse Source Code & Tests

This takes time but it has tremendous advantages. The code is the full truth. Besides good coding practices, it also helps us understand the undocumented features of a framework. And, if the code is the full truth, tests are the key to that truth. Tests help us understand what was being achieved in a piece of code.

Pair and Ask Questions

Pair with somebody who has had a head start with the new language. This can quickly give us the soft side tools: the efficiencies your pair spent time building and websites, blogs they use.

blogs/wiki/screencasts

Tutorials, API documentations, technical articles have always been there and are important. Blogs and Screencasts are even better since they are the most current and most applicable to the current state of affairs with the language or framework.

Blog your experience

Yes, blogging about your experience will help you learn a new framework. Others who read your blog will point out what you have missed and point you in the right direction. It is also a place where you have documented your journey to refer back to.

Work for Consulting Company

No, this is not entirely made up 🙂 Keeping up with latest technologies is a survival trait for any consulting company and its employees. This is where we can meet other motivated folks with different interests and keep up with what is new out there. With a plethora of new languages and frameworks coming and going each day, you have to be able to pick winners to add to your tool box. Blogs, RSS feeds help but a lunch time remarks from experienced gurus can go a lot further.

Photo Credit: Daniel Voyager