July 2016, rev. August 2017, rev. June 2018

Office chairs are painfully bad for programming. A better chair is more likely to be the $49 Ingolf chair from IKEA instead of a "proper" $150 swivel chair or a $595 Aero chair. And not just because of the cost. Throwing more money at this problem doesn't fix it. I used all three and the expensive chairs are bad enough that I prefer the Ingolf.

There are many reasons for this, but fundamentally office chairs are not designed for programming. They're designed to write with a pen on paper, or turn to talk to your neighbor, or make phone calls, or surf the web. Sitting down to write software with a keyboard is different than all of these activities.

First off the rollers in swivel chairs squeak and squeak is noise. No programmer prefers noise when they're actively working on a tough problem trying to think. Sometimes swiveling and bad plastic make noise too.

It also doesn't help when the chair rolls off underneath you as you're trying to think. Thinking benefits from stillness. Are rollers the best way for a chair to encourage thinking?

Another problem is the cushion. It's too warm to sit on for a long time programming. That's one of the reasons the Aero is a better swivel.

You're looking at an Ingolf chair I've used for five years now. I like how there's practically nothing around it. I tried adding a cushion and threw it out in two days because it was too warm.

Surprisingly the seat and back are comfortable. In comparison a folding chair cuts around the waist when turning, a chair with a basket seat pinches, and a stacking chair with weak legs shakes.

The best part is there are no arm rests. This lets me bring the chair as close to the desk as possible. Arm rests have to be the biggest mistake in desk chairs for programmers. [1] Since the arms must be parallel to the desk to be comfortable when programming, and the desk must be below the elbows, why can't arms rest on the desk instead of the chair?

Arm rests are ok in desk chairs for writers, because the elbow can be further out on the desk to write with a pen on paper. But not for programmers. A programmer's elbow needs to be in, close to the core.

When you sit on a chair with the arms parallel to the floor, there are about 5cm (less than 2 inches) of space between the arms and the legs. That's the maximum amount of space a desk's surface can use.

Arm rests that get in the way aren't the only problem with the Aero. Problem number two is you can't fold one leg under the other and sit on it, to stretch it, partly because you're caged by the arm rests. And partly because the seat curves upward; sit sideways and the seat presses in the thigh. Problem three, adjusting the chair is confusing, if it works; I leaned back on one yesterday and nearly fell off. So much for a chair: you can't sit straight, can't sit sideways, and can fall off.

The Ingolf isn't without flaws either. The biggest is its weak skeleton. I learned how poorly the legs are held together when I broke two Ingolfs leaning back, standing the chair on its back legs. Eventually I found a way not to break it: I can move, but the chair can't. This turned out to be a good tradeoff. When I sit down I feel comfortably trapped between the chair and the desk. It makes me get to work.

I can't be the only person to ever notice most chairs and desks are bad for programming. Why isn't this a solved problem?


[1]  If the arm rests touch the desk then I can't sit further in the desk. This is bad because elbows must be close to the core to be comfortable. I haven't seen a chair with arm rests that can be lowered down to the waist.

And no, it doesn't work to lower a chair with an adjustable height so the arm rests don't touch the desk. Because then the forearms aren't parallel to the desk, which also is uncomfortable.

As for desks, I should probably explain that a chair with an adjustable height doesn't help when the desk runs a bar right below the desk surface, causing the knee to hit the bar when sitting further in the desk. It's dangerous to get in the habit of not wanting to shift your body on a chair in case the body gets hurt, because it can lead to the habit of not wanting to shift your mind which will definitely hurt. Once again, lowering the chair below the bar is uncomfortable because the forearms then aren't parallel to the desk. The surface of a programmer's desk should have nothing underneath it, not even a slim drawer.

Here's an example of how a drawer ruins a desk for programming. As elegant as this desk looks, assuming it were the right height, the thickness of the drawer raises the desk high enough above the knees to make the forearms not be parallel to the desk. This is bad for programming. That's why this desk is called a writing desk, not a programming desk.