This was originally posted as a guest article on Big Nerd Ranch’s blog; reposted here with permission. We <3 Big Nerd Ranch!
My name is Jim Wrubel - I’m the Chief Technical Officer at Think Through Math, one of Big Nerd Ranch’s clients. In my spare time (such as it is) I’m a long-course triathlete and marathoner. Recently we partnered with Big Nerd Ranch to rebuild our core e-learning platform. During the process I realized that there are a lot of similarities between training for an endurance event like triathlon and launching a major web initiative.
The work you put in during the build determines your success in the event.
If you haven’t put in the time, no amount of last-minute workouts or coding will make up for it. This is something developers know instinctively - unfortunately it’s not common knowledge among managers. Also, in product launches and major races, you usually have a specific date that is set in stone. But if you haven’t done the work in the months leading up to the event, be prepared for a rough day. Coincidentally, training for an Ironman and developing a significant web app both take about the same amount of effort and calendar days. If you can do one, you can do the other.
Repetition is the key to success.
In training and development, having a routine is critical. Plot your development iteration schedule - one week, two weeks, a month - and stick to it. Your workout schedule should also be iterative. I tend to follow a three-week build followed by one week of recovery. Even inside of an iteration, build routines and stick to them. Run the test suite (you do have a test suite, don’t you?) and make sure it passes before you push code. Try to schedule the same workouts at the same time each week. It makes it easier to plan around your life.
It’s easier with a partner or a group.
An Ironman bike leg is 112 miles. The only way to be ready to ride that distance in a race is to ride that distance in training. I am fortunate to have a great friend who is right around my cycling ability level. Without someone like that to keep you honest it’s too easy to look at a six-hour planned bike ride and decide that it’s too windy, or too hot, or it might rain. The same is true in application development. Having another developer on the project who can help internalize the business requirements, offer suggestions and code reviews, and serve as a sounding board is invaluable. If you haven’t already discovered the benefits of pair programming, it’s worth reading up on the subject. It also helps to be part of a group. At several times during our project, our lead developers at Big Nerd Ranch were able to solicit advice from the group that turned up an elegant solution that we hadn’t thought of previously. I get the same kind of support in endurance athletics from my local club, the Pittsburgh Triathlon Club.
Take the long view
Not every day will be as productive as you want it to be - in workouts or in code. It takes months to build an exceptional application and it takes months to train for an Ironman. Chances are you will get sick during this time. Or have a family emergency. Or any of a thousand things that could distract you from your goal. Make sure you plan for them and don’t get discouraged when they hit - because they will.
Climbs are never good for your heart rate.
Whether it’s average page response time for a web app or elevation gain for a cycling course, it’s the spikes that get you. Graphs of each metric are helpful in showing where the problem spots are. Rely on data you have gathered to help you make decisions. Both developers and endurance athletes tend to be data junkies, for good reason.
Great developers - architects and big thinkers - are hard to find, but if you hire only the best you will be far better off than if you settle. If you are interviewing a candidate and find out they’re a triathlete, give ‘em a deeper look. A lot of the things they do for fun might make them a good fit.