I believe in continuous self-improvement, whether it be in the technology I use, personal relationships or any aspect of life. It’s easy to become stagnate if care is not taken.
Developers are pretty much divided into two categories, those that look to improve themselves and those that don’t. Those that don’t are the stereotyped "5:01" developer who end their work day and don’t think about their work until the next work day. I am definitely into learning as much as I can, almost to the point where I feel like there is just not enough time to learn all I want, unfortunately.
I do read a lot of books, blogs and listen to podcasts. I try to utilize my time best for the type of learning I take on; If I am in the car going to a client, I listen to podcasts, late at night I read books and casually sitting around on the computer I read blogs. I think I get good variety with this method and am happy with what get for the time that I have.
I don’t often attend training classes though, for a few reasons:
- Training takes a lot of time, between traveling to the training site and the time away from clients and family.
- Training classes are often very broad. If I take a Ruby class it may cover 50% of the information I am already familiar with and that is more time lost.
- Travel costs a lot, whether you drive or fly, the high cost of fuel makes traveling expensive.
I have, over the years, made conscious decisions how I was going to make the best use of my time to learn new things either for a client or something particularly interesting to me. I focus on very particular aspects of what I am interested in and concentrate on just those items, so instead of setting the goal to learn Ruby, I learn some Ruby but focus on solving a problem or focus on a technique. I think of this as The Long Tail of Learning. No, I am not trying to coin a new phase but explain a concept from what Chris Anderson has said about The Long Tail and how I see it applies to the material I chose to learn.
My thought is not focusing on a big item, say Ruby or C#, but something specialized about the language or a specialized use of the language (The Long Tail). This way I can learn something deep or particularly useful instead of something so broad.
As part of my learning I have relied on a few resources which are now helping me learn very specific things without having to dig so hard to find it. The first is PeepCode, run by Geoffrey Grosenbach. PeepCode has offered short screencasts for a while now relating to Ruby on Rails, Merb, Git and other technologies. Most are around an hour long and cost only $9 each. Recently they have been offering PDF guides to various topics such as Rails security audits, Git Internals and others, running 80-100 pages.
Here are some PDF’s I like:
I can’t leave out the screencast favorites either:
You get the idea, all very specific topics which are not too long but get the information you need to understand.
My other favorite are the Pragmatic Programmers and their series of books which are always well-written and worth the price of admission. I have recently been reading some of their Friday series of short, focused books in PDF-only format. A couple of which interested me were:
Payment Processing with Paypal and Ruby (86 pages)
You can see by the titles the topics are to the point and technology focused.
The Pragmatic Programmers are now producing a set of multi-episode screencasts on a variety of topics which are also focused on particular parts of a technology. The first 4 topics include:
I have ordered Erlang by Example and started listening to the three episodes averaging 30 minutes each and costing only $5 which equates to $10 / hour for the training. They are not for the newbie developer but someone with some experience, which is what I look for so I don’t have to wade through the "for loop" drivel.
Try to get anyone to provide training at that price.
Another set of screencasts I find particularly enjoyable are RailsCasts, from Ryan Bates. They are Ruby on Rails specific techniques with the most recent releases covering specific updates to Rails 2.1.
I am not affiliated with any of these organizations. I simply wanted to point out the type of content I like to learn from with no broad strokes, just focused, solid information. I can’t stress enough how important focused content is to me and how much I appreciate folks like this that take the time to create it.
I find it interesting that these sources of learning I am talking about cover topics which are open source. I also listen to podcasts which are .NET related and their content is mainly very broad. Do most .NET developers not care about this kind of training? When I was most interested in .NET development I certainly would have like this level of detail.