Friday, November 14, 2008


My apologies for blog post being written in 3rd person. I don't usually refer to myself that way, but this is an early excerpt from the book. Unedited and unfiltered. :) Please be kind.


A few years ago Jared started lifting weights again. An important bit of background is that Jared was on the North Carolina State University wrestling team once upon a time. He wasn't a starter, or second string. Or third string. But when the coach needed someone to use to demonstrate a dangerous move ("here's how you take the shoulder out of the socket..."), he'd look around for one of the wrestlers who were good enough to not be kicked out of the room... good enough to be used for demonstrations, but definitely not first string. That was Jared. He was a crash test dummy for the coach.

So when Jared started lifting weights again, the trainer asked how long it had been he'd been in the weight room. As he did the math in his head, Jared realized it had been 13 years since he'd had a serious workout. But it's like riding a bike... how bad could it be?

He realized how bad it could be as he staggered back to his house an hour later. His first clue was trying to walk down the stairs to leave the community center. His legs weren't working quite right. After crossing the road, the five steps leading into the house posed another unexpected challenge. Sadly, the shower was on the second floor.

How do we know that Jared got a good workout? He hurt. He hurt in so many new and unhappy ways. Muscles that hadn't been used for years were called back into service with no warning. There were muscles hurting that Jared didn't even remember having. It was a productive day, but not a happy one.

When you're picking a new technology to learn, try to learn something that "hurts". Find something that actually stretches your mind. If you pick up a new language or technology and it's easy, then it wasn't a real workout. It's still good for you and great practice, but if you're a Java developer, then C# isn't really a stretch for you. Try Erlang or Lisp. The goal is to find a way to exercise those muscles in your head. The ones you forgot you had.

A great way to experiment with this is switching your mouse hand. If you're right-handed, use your mouse left handed, and vice versa. You can do the same thing with your fork at your next meal. That feeling of frustration in your head after ten minutes is what we want. Take any action you've done often enough to do without thinking about it anymore, then switch it up. Right handed to left handed. Procedural programming to functional. Windows to Linux.

Like working out with weights, you'll do best if you have a workout plan. Maybe even a trainer to help guide you. But also, just like working out, it's better to get started today instead of waiting until next week when you have a plan.

Here are some ideas to jump start your efforts.

LOTY- The "Language of the Year" idea put forth by the Pragmatic Programmers years ago still bears following. Pick one language a year to learn. Be sure it's a different enough language to hurt though.

TOTY- "Technology of the Year" is a variation on the LOTY idea. If you're a server-side guru, learn a GUI toolkit or JavaScript. There so many different areas from IOC containers to JavaScript toolkits to new application servers that you have no excuse for not being able to learn something radically new this year.

Virtual Box- VB is an open-source virtualization solution that's free for non-commercial use. You can use it to run Linux (or any other operating system) on top of your Windows installation. It runs on Windows, Linux, or Macs and can host operating systems from BSD to MS-DOS to Vista. It's a great way to start learning a new operating without reformatting your hard drive.

So what can you do today?


Dave Klein said...

Excellent analogy! I can't wait for the book.

Another thought that might fit in with this is that a good way to get ideas for what that next language or technology will be is to attend sessions at conferences / user groups that are about topics you know little or nothing about.

Burk Hufnagel said...

I like the article, and I too am looking forward to the book.

One spot seems off though. In the second sentence for Virtual Box, I think you meant "use it to run Linux" instead of "use it to your Linux."