One of the dirty secrets of computer programming is Repetitive Stress Injury. It affects a surprisingly large percentage of people (even prominent Rails developers!), but few talk about it.
I experienced about a year of intense, dull pain at the end of my college years that went away after 6 months of self (and dotcom) induced unemployment. I’m still not exactly sure what I did to solve the problem, but I have learned a few things that have helped me since then.
Much of the medical advice I received was generic and vague. It might work for the average office worker, but a fulltime computer programmer has different needs. Developers also have more options if they are willing to experiment with some drastic changes.
Summary: Pay attention to your body. Build a comfortable workstation for yourself. Stretch. Learn Dvorak if you can commit a month to it. Type softly.
DISCLAIMER: This is not medical advice.
We don’t think of typing as a physical experience. Pushing a few tiny keys barely seems like work! But it is when you do it thousands of times.
One’s first reaction is usually to deny and plow forward. “Surely those small pains will soon disappear on their own!” Instead, trust your body and listen to it. It knows more than you do.
One of the easiest and best things you can do for yourself is to stretch your arms. Reach them out like airplane wings and point your fingers at the sky with your palms facing away from you. For extra credit, rotate your hands backward so your fingers are pointing behind you.
You can do this while seated, so you don’t even have to get up from your chair.
Years ago I also tried more exotic treatments such as acupuncture and therapeutic massage, but I’ve done as well with just basic stretching.
Obtaining a comfortable workstation is an iterative process. You can’t just run out and buy the first chair, desk, keyboard, or mouse that has an “ergonomic” label on it. I’ve tried a few different combinations and have arrived at a setup that works well for me.
Many developers use laptops exclusively. Here’s a tip: Buy a cheap ($300) 20” Dell monitor and use it instead of your laptop’s monitor. You’ll be able to run at a higher resolution and you can adjust the monitor’s height to a more comfortable level.
I use a desk from Anthro (console unit). Most parts can be bolted at your choice of height. The keyboard platter moves up to about 4 feet high on demand (I do most of my voiceovers and podcasts standing). I also tried the Biomorph for a while but it was too wobbly for my taste.
My monitors are on movable arms from Ergotron (although current iMacs are unfortunately not VESA-mountable).
It’s not crucial that everything be adjustable on demand. You might do well enough by finding a comfortable height and using hardware that bolts to that height permanently. However, adjustable equipment gives you the option of standing or sitting on demand.
After trying many keyboards, I’ve settled on the TypeMatrix. I love the feel of a laptop keyboard and wanted something that had light key pressure. I’m not opposed to exotic solutions, and I actually appreciate the extra enter and delete key in the middle of the keyboard. I rock a model without any labeling, but you can buy one with the standard QWERTY letters printed on.
The important thing for me is the nipples. Ten of the keys have a physical dot in the middle that gives your fingers something to hunt for without requiring visual confirmation. I haven’t found any other keyboard that provides so much useful feedback.
Previously I used the Microsoft Natural for a few years. Eventually, I got tired of the key pressure needed to depress the keys. The TypeMatrix is surprisingly comfortable to me even though it isn’t split like most natural keyboards.
I’ve never tried the Kinesis, but have heard good reviews. I used a split keyboard that mounted separately on the arms of the chair but it wasn’t very comfortable in the long run.
I tried a few exotic mice, like the 3M Renaissance Mouse and a foot-driven one. I returned to the standard Microsoft optical mouse.
Having a workflow that doesn’t require much mousing is a big deal. I’ve setup a ton of TextMate snippets and use other macros to keep me from touching the mouse unless absolutely necessary. It ends up being faster, too.
Here’s a free tip: Type softly. Sometimes I don’t realize how hard I’m hammering my fingers on the keys. You may have to intentionally train yourself to press more lightly.
Take breaks. It’s hard to remember, but it will give your mind a break, too.
This section may be controversial, so I’ll keep it short. I went cold turkey to the Dvorak keyboard layout about a year and a half ago. I’ve never regretted it and my hands are much more comfortable because of it. The layout of the keys means that one’s hands travel a shorter distance when reaching for the keys.
My recommendation is to go cold turkey and type nothing but Dvorak for a month. Tape a printout of the keys on your monitor and use that as a reference. After a few days you’ll feel like quitting altogether. After a week or two you’ll start to feel a bit more confident, but your mind will still be in Qwerty mode. If you can stick with it until week 4, you’ll be home free.
If you’re on Windows it’s a little bit tricky since every application can have its own layout. The TypeMatrix keyboard can be flipped to Dvorak mode which makes things easier (but it isn’t necessary that you buy a special keyboard to learn it).
I’ll close with a word from Miles Forrest
I stuck with it, and happy that I did. My fingers do a whole lot less travelling than with Qwerty, and it just feels more comfortable. Even some things I miss like having CUT, COPY, PASTE grouped aren’t a big deal anymore, and I’m starting to get muscle memory back in programs like vi.
I’m glad my hands were starting to hurt under QWERTY, otherwise I wouldn’t have stuck with learning Dvorak. One thing I’d recommend to people who want to learn it, just tape a picture of the layout on your monitor (I had one on my MBP) and don’t switch the keys around—you’re not supposed to look anyhow.