Wednesday, August 26, 2009

Learning a new programming language or web framework

Learning at least 1 new programming language, web framework or library per year is imperative these days for any developers to be highly marketable in today's economy. Some might be comfortable to use the same programming language for a decade but the moment you get back on the job market, the demand for that specific technology might have gone down. You might argue that learning the latest cutting edge technology is like hitting a moving target because of their frequent updates but that is what make the developer's life exciting.

Tinkering with a different programming language or web framework can expand your mind on how problems are solved in a different environment. You then gain additional knowledge and have a novel way of thinking when you get back to your day job. Picking what to learn next can be quite overwhelming with the ridiculous number of languages, frameworks and libraries out there. I tend to pick my next new technology by its similarity to what I know best.

In Q1 of 2009, I was looking for a web framework to learn. My choices were numerous at that time between the many PHP frameworks, Django, Turbogears, Rails, Java frameworks and Microsoft's web stack ASP.net. After using Python for nearly 5 years, it was logical for me to gravitate towards a Python web framework like Django or Turbogears. However, given the difficulties I have experienced with TG back in 2007, I have decided to go with Django which has one of the most comprehensive documentation out there in the wild web. From there, I start doing the tutorial and subsequently a personal project which help me a lot to learn some of the intricacies of the framework, web development problems and more Python.

Fast forward to Q3 2009, I am now eating and breathing Python/Django professionally for 40 hours/week for the last month and a half. I now have a new technology itch to scratch, I have messed around with Pylons for the last few weeks, it is another Python web framework which is more modular than the competition. That aside, I find the underlying concept similar to Django but with more freedom.

2 weeks ago, I realized I needed to expand my language portfolio. Having heard a lot of Ruby on Rails chatter through various technology podcasts, I decided to check it out to find out for myself what the fuss was all about. It takes a while to get into it with its various shortcuts. Ruby is the next logical step for me because of some similarity to Python and Rails because of its MVC pattern which is similar to Django and Pylons. On top of making my language library more diverse, I am also trying to see how these other frameworks can solve some of the challenges I am experiencing with Django.

This is not a post on which technology is the best but more of a smooth workflow for anyone who desires to learn a new language or new framework. Here's the summary:
  1. Pick a framework or language which is similar to what you know best.
  2. Start a personal project with it.
  3. Try to work with this new technology at work, school or at home to get a better appreciation of its capabilities.
  4. Once you feel you have gained enough exposure at it, go back to step 1.

No comments: