One of the problems in developing as a programmer is motivation. Not necessarily motivation to learn something new - I am constantly picking up new and old tech books to learn something - but motivation to stick with it. Well, to be honest, I do believe there is a schism between the 9-5 programmer and the geek/nerd/hacker who just can't let go of tech. However, I don't particularly care about the former category: if a person doesn't want to keep his or her skills up-to-date, then that's their choice. The other category is more interesting to me though - in part because it's the one I belong to. So, what can you do to keep motivation high for a given topic, to avoid leaving it in favour of the next thing?
Understanding the problem is the first step. To me, there are just too many interesting things, too many technologies, languages, gadgets, etc. and simply not enough time. I pick up something new, spend a bit of time with it, get somewhat familiar with it ... then move on, typically forgetting what I've learned.
There are two parts to the problem, solving either of them would mean keeping the knowledge: 1) not sticking with the technology, 2) not using the technology after I've picked it up. I have obviously failed on both counts often, so the question is: which would be easier to address? The former, as it happens. I love all things techy, but I don't have tons of projects I want to do (sadly).
So how to address the former problem?
One of the catalysts for this post was creating a profile on coderbits.com (my profile). It's supposedly a different type of resume that better reflects your skills as a programmer or developer, the idea being that Coderbits aggregates your activity on a variety on sites and presents it as a whole.
What Coderbits does that addresses my problem is gamifying learning. You earn badges for your activity on the aggregated sites - which includes a number of sites that teach tech subjects. It's this combination that has meant I've been studying the same things for more than a month now, keeping up with the same topics for an extended period. It's very simple, really: I'm playing a game to achieve a higher rank, getting more badges, and to do it I have to learn and get tangible proof of that.
The number of sites that are aggregated from is quite big, but not all of the sources are used in the "game", unfortunately. Coderbits put me on to wibit.net from which I'm taking the C# course - but that activity isn't tracked, most likely because wibit.net doesn't actually test your progress (only your viewing of tutotials is tracked). The set of aggregated sites is changing though, with more being added, so hopefully there will also soon be sites that cover other interesting topics like Erlang and such languages.
Well, there's not much to say other than: make a game out of it! Gamifying things just adds an extra dimension, and at best you're looking at more motivation, leading to more activity and more focus. If the gamifying aspect has been done properly, then at worst you can ignore it, if it doesn't appeal to you.