Wake up at sunrise
Ride through an empty city
Silent as a ghost
It’s energizing to be on the move and accomplishing something while everyone else sleeps. That’s one of my emotional reactions to cycling, but I have others. For example, when I approach the bottom of a climb, I feel defiant, like this hill thinks I suck and I’m slow but I’m going to stomp all over it. F*ck you hill.
It’s hard to attribute these emotions to the fact that I’m a software developer, but many of the other reasons why I love cycling can be easily linked.
I see a lot of the same qualities in the cycling community that exist in the developer community. People are opinionated, even dickish at times. I present to you Exhibit A, The Velominati Rules. These rules govern how you talk, how you position your quick-release levers and even how you wear your sunglasses. On the flip side, developers care about everything. every. little. minutiae. Have you ever had to sit through a pedantic discussion about how to name a variable or overheard someone threaten a stabbing over tabs vs spaces? Both communities are full of experts and people eager to become experts. There’s also a particular type of person that thrives in these communities. These are the people that are never happy standing still. They’re always improving, exploring and mastering their craft.
There are plenty more comparisons to be made, but I’d like to delve into what it’s like to be both a developer and a cyclist. Developers are hilarious in that the thought patterns and practices that make them successful at creating and operating complex systems often bleed into everything else in their lives (watch a developer plan a big event, like a wedding). I’ve been going out of my way recently to find ways to approach cycling with my developer hat on. Here’s an example. When an incident occurs (I have to replace a flat tire by the side of the road), I fix the problem and then go into retrospective mode. What worked? What didn’t? Did I have the right tools? What parts of the process could I improve on? The last flat tire I got was aggravating, but I’ve put in place some improvements to prevent a similar episode. Since you’re probably wondering, here’s what went wrong. First off, I never replaced the cheap factory tires that came with my bike. They punctured easily, so I got frequent flats. My tire levers were plastic, and on this occasion, two of them snapped. My portable pump was cheap and crappy. I risked bending the tire valve during the pumping motion and it flat out failed to inflate the tube to a reasonable pressure. My process around responding to the incident (replacing the tube) was solid, but my hardware (tires) and tools (levers and pump) were insufficient. The remediation for this incident was to improve my tools (buy a bunch of new stuff!). Developers and cyclists alike will never pass up the chance to pour money into upgrading their gear. In this case, I bought Continental Grand Prix 4000S tires, steel tire levers and a Lezyne Pressure Drive Hand Pump. Yes, I’m violating Rule #30.
The last point I’d like to make is that cycling produces an incredible amount of data (and developers love data, right?). I collect a slew of metrics on all aspects of my rides. My Garmin displays a dashboard of KPIs in realtime: heart rate, cadence, speed, grade. It’s also tracking my latitude, longitude, elevation and about one hundred other things that I don’t even know about. Then what? Well, then, in theory, you use that data to track your performance and measure progress over time. Cadence is like your requests per second or something. You graph the perc 99 and, er, no, it’s like heart rate and if your perc 99 crosses a threshold you want to trigger an alert…or die…or something. I don’t feel like figuring out a clever metaphor to relate cycling metrics to those of a software system. Just collect all the data you can. You’ll figure out what to do with it another day.
Oh, I almost forgot to mention that cycling is one of the few sports where being skinny and wiry puts you at a distinct advantage (that’s relevant to developers, right?). The other such sports being figure skating and maybe cheerleading?
Lastly, here’s an unrelated (but great) quote about cycling:
Training is like fighting with a gorilla. You don’t stop when you’re tired. You stop when the gorilla is tired. – Greg Henderson