How to learn a new programming language or framework

bunny_tutorial.jpgWhile 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 name 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 file in the new framework, how do I do testing, how can I write library/reusable-code etc.

All major language framework now-a-days have atleast 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 relevent the posts are to 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 practicies 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 the "other" side of a cool framework, the deficiencies that is. 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 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 code is the full truch, 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 has always been there and are important. Blogs and Screencasts are even better since they are the most current and most applicable to 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 madeup :-) 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 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

Related posts:

  1. When is an Ajax Framework Worth Mentioning
  2. Are You Building an Application or an Antique Web Framework?
  3. Programming Books, Mostly Not By Me
  4. A Pair of Kings Beats A Single Ace: Pair Programming, Agile Rails, and You
  5. Category and UI changes on Pathfinder blogs

Comments: 3 so far

  1. I just began to teach myself PHP, MySQL, Apache and Ajax. These tips are helpful, good reminders of common senses needed for learners

    Comment by Peter Shine, Wednesday, June 17, 2009 @ 10:39 am

  2. Hi there,

    This is a great article and I agree with the points you have raised!

    Being a ‘Let me try it first’ and ‘Code by Example’ developer myself I agree with your points on trying the example apps.

    I have also made my own blog about my learnings (at the time it was GWT integration with Hibernate) and made a quick tutorial which has really cleared up my understanding and does seem to be used quite a lot.

    Once people have understood a framework I would encourage them to blog about it, if only because its nice to help people :D

    Eggsy

    Comment by James Heggs, Thursday, June 18, 2009 @ 4:07 am

  3. Nice article, I also agree with James about blogging. I feel that blogging not only helps a developer better articulate and remember what they are learning, but it also helps others as well.

    I do not know if it’s just me, but I have a hard time remembering things nowadays, especially with the amount of different things a developer has to deal with. In this context a blog can also serve as a developers notebook, containing solved problems and such stuff for later reference.

    Comment by Parag Shah, Saturday, August 8, 2009 @ 6:40 am

Leave a comment

Powered by WP Hashcash

Launch: Pathfinder Newsletter

    Get a monthly update on best practices for delivering successful software.

    Subscribe via email


    Subscribe via RSS      RSS icon

Topics

Search

WordPress

Comments about this site: info@pathf.com