Sunday, July 29, 2007

5 Lessons From Triathlon

I'm in my 3rd year as an intermediate level triathlete, and have noticed that there are some parallels to software development. Some of these aren't new but I find the similarities to be interesting. (Many of these are true for all kinds of hobbies.)

Machines are brutally honest

Whether its developing code, or running a 10K, the stopwatch and unit tests show no mercy. Emotion and passion have their place, but the cold hard facts are, well, cold and hard.

Give the problem to your subconscious solver

I am constantly amazed at the power of taking a break or coming back to a problem after a night's rest. The subconscious mind is a powerful thing. This is true for many hobbies (anything that distracts us), but I think especially for endurance sports. It is easy to let go of a problem if you are going 18 mph (29 kph) on a bicycle.

Interestingly, of the 3 sports, the swim is often the most pensive for me. After 45 minutes in the pool, all of the world's problems seem solved. Many of these blog posts originated in the pool.

Learn tricks from the community

I have a blog post on the importance of talking to fellow IDE users about the tool: you can learn a ton of new things.

Similarly, in triathlon, there are a zillions tricks that people use to reduce time, especially in transition. One example: some hardcore types will clip their bike shoes into the bike prior to the race. After the run segment, they ditch their running shoes and hop onto the bike at a run (barefoot), and wiggle their feet into the bike shoes at 8+ mph. This is entirely analogous all of those wonderful keyboard shortcuts in Idea, Eclipse, etc.

Variety is fun

If I don't want to swim, I can bike. If it's raining, I'll run on the treadmill. Options! And yet I am still doing something. That's cool.

The point here is so obvious that I can't bring myself to write it. How about: Swim, Bike, Run sure seems isomorphic to Scala, Beanshell, Ruby *wink*. (Though I recommend Groovy over Beanshell).

Challenge is growth

Not all triathlons are the famed, insane "Ironman": the distances vary all over the map. I signed up for a triathlon in September: it is a distance that I honestly don't know if I can do. We'll see, but it has certainly given me motivation to train more.

A colleague recently pointed out a similar phenomenon for learning comp sci: volunteer to write an article, teach a class, or give a JUG presentation. If you don't know the subject well enough, then all the better: because you're gonna have to. It's a frightening X weeks of preparation but exhilarating.

And it's a great feeling to hear the applause at the finish line.

No comments: