RSI and ways to mitigate it as a developer

One day when I was 19, after years of bad posture and click-heavy gaming, my hands suddenly cramped up. I had shooting pains and tingling in the tips of my fingers on my right hand, and a loss of grip strength. I'd been ignoring smaller symptoms for a long time, but at that moment, 4 hours into a click-heavy game of Diablo III, I knew I'd screwed up. After seeing a doctor I was diagnosed with tendonitis, and told not to use my computer for several weeks. As someone who spends an average of 10 hours of their day at a computer, this was pretty difficult to take in.

I initially ignored the advice, and tried to continue as normal, but pretty reliably within minutes of using my computer I'd be getting those same shooting pains and nerve tingling, and the severity was increasing - it would get to the point where I couldn't use my hands properly (in the way that you can't when your hands are really cold, or when you've trapped a nerve).

I came to the realisation that I couldn't ignore this, and had to actually make some changes to the way I did things. I tried a bunch of techniques to minimise it initially - everything from anti-inflammatory pills and gels, to software timers to limit computer interaction and lock me out every 20 mins, along with a myriad of ergonomic equipment and devices. Some worked, some didn't. Here are the ones that did:

Change up your keyboard

This was the first major change I made. I felt if I was ever going to have a job in software post-PhD this was a change I'd need to make. After doing my research I finally settled on the Kinesis Advantage 2. It's not cheap, at over £300. But it's worth it. It looks downright ugly, with a design straight out of 1991, but there's a reason that they haven't had to update the design in more than two decades. People still buy it because it really works. Kinesis have perfected the ergonomics of keyboards, and this is what it looks like. For a mechanical keyboard enthusiast though, it feels a bit drab. The switches are Cherry MX Browns, which are perfectly suitable, but the keycaps are fairly mediocre. Get a keyboard with low activation force switches, like MX Browns or MX Reds, your fingers will thank you.

Change up your mouse

Standard mice cause tension in the forearm as a result of ulnar pronation (where the bones in your forearm cross over, putting tension on your wrists). Vertical mice address this issue (the Evoluent 3 and 4 are what I use). They feel more natural to use, and are well worth the investment - switching to a vertical makes repeated clicking considerably more tolerable.

Re-learn how to type (edit: or don't)

I spent several months learning Colemak last year, though at some point my habits slipped, I needed to do something quickly and on a different machine, and I reverted to using QWERTY. The thinking behind Colemak is that it's a layout that's optimised to minimise how much you move your hands when you type. One of the main reasons I couldn't make the switch properly was that the iPhone keyboard doesn't support Colemak, and working across different machines at work, the layouts are predictably all QWERTY, which made it difficult to enforce the switchover. Colemak felt better, but I couldn't stick with it.

Limit your computer time

This is another obvious one that makes a major difference, though it's somewhat difficult to stick to - I use a Pomodoro timer to limit the amount of work I do in a given session and try and stick to it religiously. I work in 20 minute blocks with 5 minute breaks in between, which seems to work for me at least. It can be difficult to reconcile having to break every 20 minutes with sustained periods of focus however, and during crunch times it's very tempting to switch the timers off, so having the correct computer equipment in place is critical.

Invest in ergonomic chairs and quality monitor stands

This is another big one - having a proper ergonomic chair, at the right height for your body, the correct desk height, and monitors at the correct height for your natural eye line is really critical for mitigating RSI. This paired with the keyboard change has made perhaps the biggest difference to my RSI, over anything else I've tried. Don't get a gaming chair - get a proper ergonomic chair from a reputable company like Steelcase, Posturite, or Herman Miller. I've gone through several over the years, and have settled on a Steelcase Please V2. It's not particularly comfortable, or particularly cheap, but it's certainly ergonomic. Buy refurbished, not new - companies buy these chairs for their offices in bulk, and when they inevitably go bust they sell them to 3rd party UK resellers like 2ndhnd who reupholster them, so you can pick one up like new for around £250, saving you over £500.

Diversify your input methods

For a while, I found myself using a mouse on each hand. I then switched to a mouse on one side and a trackball on the other. You look ridiculous in both scenarios, but it helps by allowing you to spread out the activity across both your hands. I moved away from that practice eventually, and now use a Magic Trackpad 2 mounted in the middle of my Kinesis Advantage 2, along with an Evoluent 4 vertical mouse on my right, which for me gets the balance just right.

Learn Vim bindings

No, seriously. For many of the tools you'll use as a software developer, if they've been around long enough, there'll be vim bindings. There's definitely a learning curve, but vim is an inherently compositional language, one that crucially utilises the full extent of the keyboard, meaning that you'll be repeating key patterns less and clicking the mouse less, helping minimise the 'Repetitive' aspect of Repetitive Strain Injury. (Plus it makes you a more productive developer and generally makes you feel better than other people.)

Start strength training

Lastly, I've found over the part couple of years that lifting weights does something to help reduce the pain. Whether the exercise improves your breathing, or increases blood flow to the hands, or whether it dampens muscular inflammation - it's not exactly clear, but loads of other RSI sufferers have reported similar results.

After years of trial and error, I've figured out what works for me. If you're got as far as this, and you're a developer with early RSI symptoms, even just the initial pains, please take them seriously. Don't ignore them - no one thing will magically cure it, but through establishing good habits you can absolutely mitigate the problem to the point of it no longer being a real issue.

Everyone's optimal setup will be highly personal, and through years of optimising my setup and experimenting with my working habits, I've managed to get to a place where I can still work as a developer and do my PhD without it interfering significantly with my routine - hopefully some of the above will work for you too.