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?
Problems
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?
Coderbits
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.
Conclusion
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.