In my last post, I continued my saga about the re-education of a software developer by introducing the technologies I’m looking to (re)introduce myself to.  In this post, I’ll talk a bit about how I learn.  Everyone learns differently, so “your mileage may vary.”

I’m a visual learner.  That is, for an introduction on a topic, I prefer a video presentation.  I’m not sure exactly why, but one reason may be that my initial absorption into a new topic is best when I’m in a more passive, relaxed state.  Depending on the topic, or on the way it’s presented, I’ll pause the videos a lot, trying out the examples.  Sometimes I’ll even watch a video through passively at first, and do the examples on a second pass.

I usually follow that with an introductory book on the topic, also walking through the examples.  I love advanced books as well, but tend to jump around to specific areas.  I rarely read any technical books end-to-end.  Even about halfway through an introductory book, I’ll get impatient and continue learning on my own.  Sometimes I feel I try forcing myself to finish a book for completeness sake, but I question the value in that.  I recommend experimenting on your own as soon as you feel comfortable with the concepts and basics.

Often, I’ll also look for introductory articles online, instead of books. Not only are those often more current, but I sometimes find that the first 50 pages or so of a book spend way too much time on the background of a technology; its history and all that.  The problem with that is I find the back stories so interesting, I end up wasting productive time feeling passively entertained with a history lesson.  Articles usually dive into topics with less intro.

If I want to dig into areas of a topic more deeply, I’ll often turn to blogs, where people usually write about those topics in the context of real-world war stories, in contrast to the more theoretical book and video learning.

As I’m experimenting with a technology, I’ll do a hell of a lot of “googling” (sorry Bing – you’re great, but habits are hard to break).  I’ll often find myself at StackOverflow for the answers, but where I can easily get lost for hours going down that rabbit hole.  I “google” rather than go directly to StackOverflow mainly for that reason.  It keeps me a bit more focused.

As another general purpose search tool, I’ll do a Twitter search for specific and current answers.  As a side note, I just tweeted, posing the question if one could learn programming simply by spending their time at StackOverflow, now that it’s approaching a million questions.  I got a pretty strong reaction against that sentiment, but truthfully, my question was posed tongue-in-cheek.  I highly recommend the kind of approach I take to learning, keeping one key point in mind (that was also pointed out in response to my tweet)…

You cannot truly learning without “doing.”  If all you do is read and watch and listen, you will not really learn.  You will only “learn about.”  You must get your hands dirty to truly learn.  That’s what I intend on doing over the next several months to refresh my knowledge.  That’s why I’m working on a couple of side projects – to force myself to “do.”

Finally, I’ll listen to podcasts constantly.  I usually don’t seek out episodes on a specific topic, but I’ll listen to a couple of hours worth each day, just to stay current on what’s out there.  I’ll list my favorite podcasts in my next post.

Also in my next post, I’ll list specific resources for each technology I wrote about in my “lesson plan” post.  I’m delaying this by one post to keep these as short and focused as possible.