It takes a village

Or at least an effort.

Part of ComoxI went down to the regional district office last week for one of their planning meetings. The masses had gathered to determine a vital matter for the three communities of the valley: Should there be a new gas station?

While the matter certainly wasn't anything of global proportions, it did bring one characteristic of the citizens here to light: Just how long have you been living here? One speaker after the other started their proposal with, "I've been here n years..." I imagine the message is supposed to add weight to their opinion.

You see and hear this all the time in dev circles as well: want ads ask for "Java developers with 30 years experience." Developers make blog posts and statements that begin with, "I've been using .NET since n" as though it really matters. I use myself as an example. I wrote my first .NET code a few months before it was shown at PDC, before it was even called NGWS (pronounced Nigwiss). However the set of .NET developers more skilled than myself is roughly equal to the set of .NET developers in the world. It's not how long you've been doing something, but the degree to which you're pushed yourself at really learning it. Don't get me wrong: I have pushed myself, but as my life is not measured in kloc, I don't consider my skill equivalent to someone who has to keep metal in motion.

So, how can you learn something so that it actually means something? Well, the first (and obvious) method is to actually use it, but to use it in a way that you're actually learning something. Stepping through samples from articles and Web casts is fine, but you need to break things, change values, make it fizz. Scott Hanselman's series on reading code is quite useful, especially if you try to "guess whodunnit" before-hand (predict how the code should work, what would happen if you changed it in some way, how you can use it in your own applications, etc.) Another great resource is Larry O'Brien's series on learning a language. Run through them every six months or you. You'll be surprised at how different your resulting code might be as new techniques and larnin' enters your brain and fingers.

While it may seem counter-intuitive, teaching is an amazing way of learning -- I learned more about programming[1] by teaching it to others than I did by actually writing code. Different developers have different (sometimes way different) ideas about what is good code, and by discussing it with them, you grow (even if you were right in the first place). It also helps solidify your own arguments by forcing you to actually think them through and explain them in ways that others can understand. Plan a lunch workshop series at work, do a talk at your local User Group, or even sign up to help at the local continuing education facility.

Learning and mastery are not states you get to by accreting years of service.
You learn by doing, so go do something.


(For those interested, they still haven't decided if they'll allow the new gas station.)
[1] Don't even get me started on what I learned administering and teaching Microsoft Mail for years
Print | posted on Monday, March 31, 2008 5:04 PM
Comments have been closed on this topic.