-
Get a monthly update on best practices for delivering successful software.
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 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:
Topics: Grails, Groovy, Java, ruby, Ruby on Rails
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
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
Eggsy
Comment by James Heggs, Thursday, June 18, 2009 @ 4:07 am
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