How I have staved off repetitive stress injury as a software developer (so far)
In the fall of 2019, my wrists started aching.
I was working as a frontend developer. The company was a scaleup having growing pains. We wrote a lot of code. Day after day after day, I typed and typed and typed.
It started with twinges in my wrists at the end of the day. Some soreness around my wrist, especially from using the mouse too much. I ignored it, of course. RSI injuries seemed like things that happened to other people.
It got worse. My wrists began hurting for longer. I remember laying in bed at night and feeling them throb.
That’s when I accepted reality. My working setup was not conducive to my long-term health. I couldn’t very well expect to do software development for the next 20-plus years if I couldn’t even type.
The good news is, I think I’ve figured it out. I spent a year trying different work stations and peripherals, and it seems my current setup lets me type with minimal stress. Here’s how it works.
Caveat: I am not a doctor or physical therapist.
Chair and keyboard
The guides I found recommended a comfortable chair that lets you sit upright with your feet on the ground in front of you. I bought an office chair with some lower back support and two armrests.
The armrests are crucial. I place my forearms on them to keep my wrists flat. Each hand types on one half of a split keyboard. According to the guides I read, as well as my personal experience, keeping your wrists straight is crucial. The human wrist was not designed by evolution for lots of small movements with your wrists bent.
Any split keyboard will work for this setup. I use the ErgoDox EZ, a split mechanical keyboard so good if it broke, I’d order another the same day. Its ortholinear layout took some time to get used to. It also lets you use any mechanical switches. I just switched from Cherry MX Blues to Browns.
Mouse
I’ve found using a mouse inherently requires some amount of wrist bending. Vertical and trackball mice reduce that, so I keep a Logitech MX Ergo Plus between the halves of my keyboard.
The best solution, though, is to use the mouse less. Keeping my wrists flat over a split keyboard stresses them far less than any mousing, no matter how ergonomic the peripheral. So, I try to touch the mouse as little as possible.
For coding, I use VIM keybindings to move the cursor and edit text. For regular apps, I’ve memorized as many keyboard shortcuts as possible. For those things that require a mouse click, Homerow has been helpful. For repetitive tasks, I script my inputs using Alfred and AppleScript. That covers most mouse uses, with the trackball as an absolute last resort.
If you’re on Mac, Apple has amazing accessibility features. You can control a Mac’s mouse by rotating your head and click by sticking out your tongue. It made me feel like a lizard. Huge credit to Apple for these features, which work surprisingly well.
I’ve also seen some interesting guides about coding with Talon Voice that are cross-platform.
Monitors
The last thing I’ve found to help is raising your monitors to eye level. You want your head to rest in a natural position in your nice office chair so you’re looking straight ahead. If your neck has to bend up or down to see the monitors, that’ll cause neck pain.
My desk is at armrest height, for the keyboards, so I’ve mounted my two external displays on VESA arms. My work MacBook Pro goes between them on an old keyboard stand. I could put that in a VESA dock too, but I’m too cheap.
Frequency
The last thing and most important way to avoid repetitive stress injuries as a developer is to type less. My RSI was worst when I was trying (and failing) to code a huge side project.
If your wrists hurt, give yourself time away from the desk. The less you use your mouse or type, the less stress you put on your wrists.
For example, although I am an avid PC gamer, I only play using an Xbox One controller. I just don’t play mouse and keyboard games. I don’t think my wrists could survive it. Luckily, the kinds of games I like to play work great with controllers. Most modern PC games do.
Conclusion
Hope this helps anyone reading. RSI sucks!