In transitioning myself from a physically demanding job as a cabinetmaker to a career in programming, one thing I didn’t anticipate is how much I would need to heighten my awareness of my own body. How physically challenging could it be to sit at a desk all day compared to building and lifting heavy furniture and contorting to reach awkwardly placed hardware?
If you believe in evolution, then from a historical perspective it’s clear that sitting on a swivel chair in a climate controlled environment for six to ten hours a day is an unusual circumstance. It’s an environmental context that pretty much couldn’t exist for the majority of people until very recently. So if you’ve committed to the path of mastery for computer programming, don’t underestimate the physical consequences of working on computers for the next several dozen years. Your body has probably not had time to adapt to this kind of environment, so you need to take precautions.
Ergonomics is an interdisciplinary field that focuses on the fit between the user, the equipment and the environment, in order to increase safety, comfort and productivity (Wikipedia). It’s a really important concept to learn and embrace, because all environments (however subtle) have dangers. The idea is that small habits/movements that can seem insignificant, build up to create big health problems when done repetitively.
I think programmers should be like professional athletes: people who must train very hard to prepare, learn and drill themselves into peak performance so that when called upon, they can perform at an elite level. The actual performance might not be for a long duration, but without the massive preparation, it would be underwhelming.
While we generally tend to focus on the mental aspects of code, syntax, protocols, problem solving etc… some of us miss the physical training aspect in our preparations. For us, I believe that it’s imperative to ensure that you build and maintain the strength of your body almost as much as your mind in order to feel good and perform at your best.
Nowadays I look at stretching like brushing my teeth — it’s just something that should be done at least once a day. Each stretch should be held for at least 20–30 seconds, and your stretching routine should be around 10–20 minutes total. If that feels like a long time, then walk away and start stretching right now. Internet rabbit-holes of questionable benefit take far more time out of your day.
Are there any areas of recurring pain that you experience? That’s your body telling you that something is wrong with your habits. There are millions of free resources online to find good stretches and exercises that focus on any particular area that might be weak or tight for you, and I’m confident that you can find a resource that works for you. I find the explanations and demonstrations by Jeff Cavaliere on Youtube to be particularly good. If you have extended health benefits, I encourage you to visit a physiotherapist/physical therapist to help assess and coach you, and to watch your form. The habits that have caused your pain are entrenched, and it will be difficult and take time to re-form better habits.
Some things to watch out for include:
- Make sure you keep both your feet planted on the floor while at a computer.
- Be aware when you are putting weight on your elbows/shoulders, because that’s a sign that your body is fatigued from that position (get up and take a break).
- If your posture is poor, take strength-training measures (i.e. planks, weight-training etc…) to strengthen your core sooner rather than later. It will reduce your long-term experience of pain greatly, and make you feel better too.
- Beware the angles of your position in regards to eyes/neck, because looking down at a laptop monitor for long periods will strain your neck. Try to position your monitor at a more neutral eye-level, be sure to include some neck-stretches in your routine. Also consider an ergonomic keyboard if your wrists are not straight while typing.
- If you feel any muscular pain or tingling anywhere, it’s time to get up, move around and get your blood flowing better.
I recommend joining a gym and going roughly every other day, spending most of your time warming up with cardio workouts, stretching and doing endurance training. It’s good to get out of the house/working area, and doing muscle training will make you feel better in so many ways. A good goal is endurance and core strength, so focus on doing 3–5 sets of 10 repetitions for whatever you’re doing. Ideally it should be a challenge, but not to the point of maxing out. If anything causes you pain, stop what you’re doing and assess why. Likely either your form is off or you’re trying it with too much weight. It helps to have someone watch your form. Gyms are great for regularity, but any kind of physical activity is a good idea!
Diet is extremely important to your overall health, and it’s amazing how much it affects your mental ability and mood if you’re hungry or thirsty. I find that many times that I’m struggling with a coding problem, part of the issue is that it’s been a long time since I’ve had something decent to eat. You can argue that getting up and walking away from the problem is itself an excuse-free technique to find your solution by giving yourself breathing room, but food is fuel and without it you will not perform at peak-ability. I highly encourage you to read this short article: Nutritional psychiatry: Your brain on food.
I hope that reading this post has made you think about the physicality of programming, and helped you improve your workflow and habits. I used to think that standing desks were a crazy idea, but now I find them tempting.
*All photos by me, shot on film.