Jamie's Blog

Ruby developer. CTO. Swimmer. Always trying to write more

Mental and Physical Awareness for Programmers

Keyboard and trackball

I was working a new office today which made me acutely aware of a few things going wrong. It’s taken years, fuck it, decades to get this awareness. Previously I’d have suffered along and only noticed weeks later when I had crippling pain.

Distractions kill Flow

I’m now working in a large open plan office with some colleagues and other sales people. Can I speak to [someone who doesn’t want to be spoken to]?“ is a great way to be permanently distracted. Even the distant office chat about a new recipe or the "see you laters” as people filter out of the office interrupt your flow. Since I have a strong desire to be outside and away from a desk, I’ve even found that avoiding the “distraction” of a window helps me concentrate. Turn off all those sexy notifications for twitter, email, chat requests, production deploys etc.

‘Flow’ is a familiar but nebulous term for a state that programmers find themselves in. The best way to describe ‘flow’ is to see the effects: I sit down to write a feature and I stand up 5 hours later with it complete (or at some other reasonable breakpoint) and I’m surprised at what time it is. In essence, it describes that time when you’re solidly engaged with the code, implementing features, debugging problems and unaware of the passage of time. ‘Flow’ is an extremely production time for programmers and I’d say most of my output comes from these little bursts.

Flow will also kill you

Cargo-cult programmers are those that emulate the productive programmer’s ‘flow’ by sitting for long periods in front of a keyboard but not actually doing anything. This bizarre behaviour is actually encouraged by most employers because they expect you to be at your desk for 40 hours a week. Unfortunately, whilst ‘flow’ produces code, these long periods of sitting also produces fat, unhealthy and ultimately dead programmers. Writing code isn’t the world most dangerous profession but sitting will kill you too (and make you miserable in the meantime).

Listen to the aches

This chair doesn’t swivel or adjust, and it’s far too short for me. I can feel the tense muscles in my back and the muscles between my shoulder blade screaming out in pain. I can feel the stiff neck from looking down at the laptop screen. I can feel the tenderness of the area around the metal plate in my wrist because it’s been sitting on the edge of the desk as I type. I can feel the stiffness of my right ring finger from curling it too much. I can feel the pressure on my calves from tucking my feet underneath the (already too low) chair. I can feel the pressure of the laces on my metatarsals as my ankles are crossed. I can feel the tiredness in my eyes from focusing 50cm away. I feel smothered in the warm, stale air with a faint aroma of body odour.

What can you really feel?

Now, stand up. Stretch. Walk straight outside without picking up your coat. Breathe in the fresh air. Look around at the distant buildings and horizon. Listen to the people, the traffic (if you’re unlucky) or the birds (if you’re lucky). Now, walk. Not far, perhaps just around the block or to a nearby shop.

How different does that feel now?


If you’ve just read the headings then your conclusion might be “Distractions kill flow; flow kills you; therefore distractions are good”. That’s not what I meant but there definitely needs to be a balance between programming in the flow (i.e., sitting) and getting up and moving.

When you’re programming, program and nothing else. Cut out all the distractions.

When you’re not programming, don’t cargo-cult program: get up, walk, move. Leave the office and breathe in some fresh air. Ideally, find an employer that understands that time-in-chair is not a measure of productivity.

  • Don’t listen to your co-workers
  • Don’t listen to notifications
  • Do listen to music, random noise or silence — whatever works for you
  • Do listen to your back, neck, shoulders, wrist, thighs, calves, ankles, eyes… and give them some exercise.