I workout with a friend/coworker every weekday during our lunch break. It’s an effective way to break up what can be a long stretch of hours spent in the same chair. Eating lunch at your desk is easy and convenient, but so is almost anything else that’s bad for your health.
The typical week of workouts consists of three days of running and two days of HIIT calisthenics. The calisthenics make your body a strong, fat-burning machine, but what I really enjoy are the runs. In fact, many of the things I enjoy most about running are comparable to the things I enjoy most about coding.
Getting into the flow state
Programmers and runners know exactly what it means to get into the flow state. It’s a mental and physical state where you attain a lazer focus, letting outside stimulus melt away. Reaching this state allows you to accomplish more in less time, and generally emerge with a better product for your efforts.
For programmers, entering the zone usually means having quiet (or consistent, rhythmic music) and no interruptions. Open floor plans, meetings, coworker taps on the shoulder, and push notifications are the bane of a productive programmer. I’m at my best during long, uninterrupted stretches, when I can juggle lots of different information in my head because it’s the only information in my head (See The Joel Test).
Runners enter the zone in a similar manner. Interruptions, like traffic lights, a TV on the treadmill, running app notifications, and song speed changes are the bane of the productive runner. I used to run with an iPhone strapped to my arm, music blasting and Runkeeper distance / pace notifications constantly pumped into my ears. When I bought a Fitbit Force, I realized I had the ability to track my run stats with minimal distraction. It became easy to enter the flow state on any run. The added bonus of no music (I know, some people swear they can’t go without it) let me listen to the pace of my gait and breathing.
Flow state coding and running are more enjoyable, more efficient, and more productive than the stop/start alternative offered by an interrupted life. Strip down your world to a simple, quiet environment, and you will reap huge benefits.
Using the right tools
Man is a tool-using animal. Without tools he is nothing, with tools he is all.
Right after I write about keeping it simple, I move right in to adding tools. I’m not trying to be confusing, I just don’t think the two are mutually exclusive.
In programming, you need a few items to be comfortable. The fast PC, dual monitors, keyboard, mouse, and ergonomic chair are the bare minimum. It’s safe to say most of us have those in our workplaces. Once you get to work is when you have to start making your own decisions about tools - the digital kind.
The decisions I make about my text editor, libraries, frameworks, and task runners directly affect my programming ability. Testing out new tools and constantly learning about what’s on the horizon are part of the job. For example, the productivity bump I’ve realized from spending a day learning Grunt.js has been so significant, it’s one of the first tools I set up on any project, regardless of size.
Runners really only have one tool - the shoe. Yes, there are sweat bands, compression shorts, and a never-ending parade of sweat-wicking shirts, but none of those come close to the importance of the shoe you choose.
I currently run 75% of my workouts in Asics. They have that mega-padding, floating-on-clouds feel to them. Support you can count on. The other 25% I spend breaking into a set of Nike Free 5.0 shoes. These are sort of the entry-level free running offer from Nike. Minimum feel, but not so little padding that you can’t handle them right away. I’ve been careful trying them out, and for good reason.
I was briefly injured this fall. Injuries just plain suck. You can be having a great time working out on a regular basis, and get knocked straight back to square one with a single bad decision. Mine, interestingly, wasn’t a decision about my running shoes.
My bad decision was not caring about my feet while wearing other shoes. Buying flat, unsupported boat shoes or stylish boots is a good way to make sure you have something for every occassion, but you need to supplement each purchase with proper inserts. I didn’t do that, and so a day that started with a nice 5 mile run ended in too much wedding dancing in flat oxfords and an injury to my peroneal tendon.
It took two months of R.I.C.E. to feel safe enough to run again. In the meantime, I took the great advice of a coworker and bought Super Feet for all of my non-running shoes. They are an excellent product and a worthwhile tool for staying healthy as a runner. Now I’m strong again and safely working into my free running shoes.
Sustaining endurance and drive
Burnout is common in sports and in careers. All of life’s pressues and stress are constantly influencing my ability to get to work and program, and then get out and run.
When I was young my parents put my sisters and I in year-round swimming programs. The programs were either too casual to elicit any drive on my part, or too intense for me to handle. It made me hate the sport until I got to high school and could enjoy swimming with a group of buddies every winter.
I find being part of a team has a significant positive influence on my ability to pursue and achieve goals. Before I joined the current company I work for, I coded for freelancing and as a hobby. After I joined, I was constantly surrounded by people that were special for two reasons: (1) they were better than me, much better, and (2) they genuinely wanted to help me improve.
Getting to the gym or getting outside for a run is easier in a group or with a buddy as well. You challenge each other to run faster, and expect each other to show up every time. Laziness is tough when you have someone willing to call you on your B.S.
If you are a programmer, and you don’t run, I encourage you to try it out. You will be a healthier person, and a less-tired programmer!