First a little story: my wife got carpal tunnel so bad in the 90's, she was barely able to button a shirt for 3-4 months, and had to wear splints for almost a whole year. She worked for a high-tech firm and had to leave the corporate world because of her wrists. Things got a lot better, but she didn't type for 3-4 years after that episode. She can type now for 1-2 hours a day, tops. After that, she has pain.
Hackers are like surgeons: worthless without their hands. Your wrists and hands are your bread and butter. Take care of them.
Get religion about ergonomics. Read up online about it. There's tons of information, try a lot of things out and see if they help.
I use the smart glove: http://www.imakproducts.com/products/smart_glove.htm
Imak ergo beads: http://www.imakproducts.com/Products/WristCushionForKeyboard...
The MSFT natural keyboard: http://www.microsoft.com/hardware/mouseandkeyboard/productde...
I go back and forth between a track ball and a mouse.
I also got an ergotron monitor arm:
It's amazing how much less my neck hurts, and how much easier it is on my eyes, because I can change the monitor's position so easily, I do it a lot more often.
And, I couldn't quite afford an Aeron Chair, so I went to OfficeMax, and got a knock-off:
It makes a world of difference for my back, and a better sitting posture means that I lean on my wrists less, causing less wrist and hand pain.
I find that crappy, slow, unresponsive interfaces (I looking at you Windows XP networked folders) actually make my hands hurt just by being slow.
I'm not saying that buying a faster computer will fix your wrists, but a responsive interface should be considered ergonomic.
The problem is that pauses are recovery time for your body. The good news is that once you've realised this, you can artificially introduce pauses into your routine, and give your body the chance to repair some of the damage caused by typing. I had big problems when I was a mere 21, and didn't use a computer for several months. With reading around, a bit of common sense, and a very gradual return to things, I not only got back to where I was, but now I use a computer and play guitar more than I did before. Getting better equipment is part of it (for me keyboard: http://maltron.com/ and a trackball: Logitech Trackman Wheel my preferred option), but the two most important things for me were: taking action as soon (i.e. on the day) I noticed problems; and taking breaks when doing things like typing. After a while you won't even notice the breaks are part of your routine.
Holding my hands over the keyboard or the mouse is tiring. I've found that, when the machine is unresponsive, I spend more time with my hands hovering over the controls, because when you have to make five clicks in succession -- waiting for the machine between each click -- you don't want to have to keep reaching out, making one click, reaching back and resting, then reaching out again... that's really slow. So you hold your hand there and wait. And if you have to wait two seconds between each click...
Well, darn it, now I've got to buy an eight-core Mac Pro! For my health!
The iMac is the 2.16 Core 2 version with the ATI graphics, and it wipes the floor with any other machine I've used, including my MBP and my work Dell (some kind of C2D Precision)
I know that with video-games, the force I use to press the buttons varies _dramatically_ from game-to-game, even though the controller stays the same (depends on personal stress, responsiveness of the on-screen UI, etc).
I suppose a case could be made that unresponsive interfaces tend to make a person type/click more deliberately (i.e. forcefully) than is technically required by the input device.
Budget $2000. I'm serious about this. The things you buy will last you for years, and $2000 will pay for itself if it saves you two weeks of sick time or a couple of doctor visits.
You may not actually have to spend all of that, but you are going to want:
* An excellent chair ($800 range. Feel free to try the cheaper chairs... I have an Aeron but frankly have no idea if it's worth it. I bought it after using one at work for six months, and discovering it was okay. Testing chairs is difficult and expensive, so I recommend starting out in the midrange rather than spending months working your way up from the $50 OfficeMax chairs. If you find that the more expensive ones are 5% better for you, spend the money.)
The goal with chairs is adjustability. I recommend a chair with adjustable arms, because sometimes when my shoulders get sore I move them up to brace my elbows during rest periods.
* An excellent keyboard. MSFT natural keyboard is a great value, but I switched to the Kinesis Advantage Pro six months ago, and it kicks butt: http://www.kinesis-ergo.com/ ). It costs something like $350. It looks like it was designed by aliens. You will feel like an idiot for the first week as you relearn all your typing and gradually remap all the keys to your favorite locations. If you don't know how to touch type... you will learn. But then you will experience the joy of feeling like you are typing while barely moving your hands.
* I concur with the Ergotron monitor arms. Being able to adjust the monitor to exactly the right position is important.
* A proper keyboard drawer. You want the kind with the arm that lets you adjust the keyboard to arbitrary angles and heights, and slide it in and out. If you use the mouse, you want to be able to mount the mouse at one side. Something like the ones on this page: http://www.ergoindemand.com/keyboard-tray-adjustable-shelf.h... . I would tell you the brand I use, but I picked mine out of the trash by the side of the road. (Arlington, MA -- there are real advantages of living in a startup hub!)
Then you have to hack. Once you've spent money on the raw materials, ergonomics is a game of inches. I have one of those damned expensive Aeron chairs, but just this year I discovered that it doesn't provide enough upper back support, so I strapped a cushion to the top with a bungie cord :). Cost: maybe $20, and the pain is gone. My right arm got sore using the mouse. I discovered that if I took my mouse support off the keyboard drawer and reattached it using a different bolt and some homemade washers, I could raise it by four inches. And, just like that, the pain went away.
See a physical therapist. If you do nothing else, do this. The good ones are amazingly smart. Don't wear wacky gloves or wrist braces without consulting one. It turns out that most of my own occasional wrist pain is caused by nerve pinches in my neck, and treating the wrists is mostly a waste of time...
Oh, and of course: don't type on a laptop keyboard for more than an hour or two every week. Laptops are ergonomically terrifying. Sorry to have to break this one to you. :)
To save yourself from your Macbook, pretend it's a desktop as much as you can. Buy an external keyboard. (I recommend the Kinesis, of course, but even a cheapo standard keyboard is better than the one on the notebook itself.) Buy the nifty Ergotron arm that lets you sit the laptop, open, on a tray and then move the tray around in space until the screen is at the proper height and distance. (http://www.provantage.com/ergotron-45-192-194~7ERGT06R.htm )
Now, since you're stuck at a desk anyway, buy a real monitor -- I have a 20" widescreen -- and another Ergotron arm (they have very nice 2-packs -- follow links from here: http://www.codinghorror.com/blog/archives/000959.html) and mount that on your desk, then have the laptop drive it as a second monitor. Now you are more productive, because you have more screen space, and you also have a real desk with a real keyboard that you can mount where it needs to be: in your lap.
The problem with laptop keyboards isn't the keyboard, per se; it's the fact that the thing is attached to the screen. You either have to stare down into your lap or raise your arms almost to the level of the screen. Either of these things can eventually cripple you. Obviously, your mileage will vary depending on how old you are, how much you type, your physical condition, your genetic heritage and the phase of the moon -- but, once you even start to think that you're feeling pain, you should immediately get serious about ergonomics.
I've been thinking about how to travel and still get work done. It's not an easy problem to solve. Carrying around my Kinesis and some sort of contraption that lets me elevate the laptop and its screen would be great. A sort of clamp-on, foldable, lightweight, portable keyboard drawer that could attach to the edge of a hotel desk and hold the keyboard at lap level would be truly great... though perhaps rather difficult to implement.
I normally have a dual-screen setup powered by desktops plus a nice keyboard + mouse.
But I'm in the process of moving abroad and will be living out of my laptop for a little while.
You see some people at startups working straight off their laptops, day in and out. After 1-2 days on my raw Macbook, I have no idea how they do it.
Whether or not you will be able to find any desk space abroad is, of course, a different problem.
Keyboards and monitors are now lightweight and cheap. I'm hoping to make this fact work for me when next I need to relocate temporarily...
Literally all there is to my job is typing, and after 4 days on a cheapo keyboard I couldn't type anymore. Switched to a Kinesis and have been fine for months.
Another recommendation that may sound stupid but is actually great: get a gamer mousepad...one of those gigantic ones with a nice wrist rest. I use a Razer eXactMat, and I love it. The bigger mousepad makes it much easier to get in the habit of mousing with your arm, not your wrist.
He then told me I was an idiot. He didn't understand why I thought I could type for 15 hours a day. Why I expected my tendons to put up with this kind of punishment. I got the feeling that if he could he would have kicked me in the nuts. He told me he could give me medication to reduce swelling but what would the point be. The pain is there because you are pushing yourself too far! Hmm I thought. What an idiot (with a lot of letter after his name). He told me to stop being an idiot and come back in six months if there was any pain.
I was pretty young at the time, I went to my boss and we spoke about the specialist. He told me I was an bloody idiot (I'm English so we're allowed to say these kinds of things to each other btw). He said it's "..great that you want to work for 15 hours a day but think about it. Your body is telling you something". Then he told me something that changed my perspective on coding. He said "It's not how much you type it's what you type". This single sentence made me a better, healthier, more considered and sophisticated programmer.
For the last ten years I've been a better, more productive programmer and if I ever see that specialist again I will shake his hand with my very healthy pain free hands.
I had mild tendonitis when I was writing up my PhD, and found that forcing myself to take breaks made a huge difference.
That being said, I've found that even 8-10 hours of steady typing can be too much for me, unless I'm using an ergonomic keyboard and good office furniture. If you can find any model of keyboard at all that works for you, buy it. Ditto for wrist rests, chairs, monitors, whatever. If it's expensive, make your employer pay for it. No manager worth their salt should look askance at spending $1-2k if it'll keep you in front of the keyboard for even an hour longer per day.
If you're working for yourself and therefore self-imposing these ridiculous hours and spending limits, then stop. Seriously, just stop. Think about whether the payoff is going to be big enough to make crippling yourself for life. Hell, if you're really sitting at a computer for 15 hours a day, you're probably at risk of getting blood clots in your legs from lack of motion. No startup is worth dying over, or even seriously degrading your quality of living in the future.
I work about 8h per day while walking slowly on a treadmill:
In that configuration, I need a keyboard tray that's angled away from me at a somewhat sharp angle, so I can keep my wrists straight and have my elbows open at about a 120 degree angle.
Indeed: if you have to reach up to type, you are destroying your wrists.
With a laptop, you are stuck in the unenviable position of having to choose between wrist pains and neck cramps, since the keyboard and monitor are separate.
For a laptop:
Get a wireless keyboard (a wired one will get annoying if you have spinny chairs or accidentally yank on the cord), with a built-in trackpad, and keep it in your lap to type.
Then get either an external display, or raise your laptop's existing display (a stack of phone books should do it), so that your eye level is about 1/3 down the screen.
I have RSI flare up when I'm working particularly hard (I'm a business consultant), and it's not fun. Aside from taking NSAIDs, the only real cure that I've found is to stop typing and mousing so much. And working hard to me, means >10 hours a day, plus at least one weekend day.
If I slack off a bit, then the RSI goes away until the next timecrunch, burn, death-march, etc. ;-)
I also have a Logitech MarbleMan trackbar, and that does help, though after a mouse, the trackball is a tad annoying to use, especially one without a scrollwheel.
The bad thing - at some point, it becames residual - no amount of rest (short of 6-12 months of keyboard abstinence) will let you recover. You have to start proactively manage - You've broken the proverbial straw on the camel's back.
That was years ago, I have a much-less painful, residual level of aching (2.5 on a scale of 1 to 10).
Nowadays, I manage my work, with occasional flare ups (4/10). My advice is to get WorkPace restbreak software to force you take breaks. Consider using an burst-proof exercise ball chair (forces you to work your abs) http://www.fitter1.com/Catalog/Items/FBCJ.aspx
Take Yoga classes, swimming (great full-body exercise, zero-impact). Alexander technique is good for gaining body awareness as well. If you slouch your head is like a bowling-ball weight that causes a domino-effect of strain on your entire backbone/spine.
The good thing, if there is a good thing about RSI symptoms, is that you may start to realize that you may not be able to be a programmer for as long as you wanted and you start to diversify and you will not take your programming job for granted. And you become a much more efficient programmer..
You've waited a while though, so you'll probably need to stop typing entirely for a month to let the inflammation go away first.
JWZ is worth reading on this. http://www.jwz.org/gruntle/wrists.html
My final advice: try occupational therapists and physical therapists. Physicians aren't as good about knowing specifically what to change about your behavior and how to get you to do it. The better occupational and physical therapists think about these issues constantly.
Variety works well for me. I had a bad pain that was triggered by depressing the left mouse button. I now alternate my mouse between hands on a roughly weekly basis. After the first few days mousing left handed, it was no longer slowing me down.
Also, I find alternating seat height, keyboard type and position, screen height, etc eases the general back and neck pains that can come with sitting in the same position for too long. Whether 3+3+3+3 hours in varied positions is better than 12 hours in the same, "optimal" position is probably something physiotherapists would never agree on.
On medication: you don't want to use painkillers to enable your pushing too hard. On the other hand, my understanding is that inflammation is a bit of a vicious circle (inflamed tissues are more easily further irritated), so anti-inflammatories are your friends. Topical medication may be more or less effective than pills, and are less likely to screw up your stomach.
All is not as it seems with RSI, and you should trust what the scientific research shows, not what your physical therapist with a PTA degree tells you.
The easy way to describe it is that your wrists should be simliar to their natural resting position while you type.
A common problem that people have is that they use their wrist and elbow muscles while they type, and it puts a ton of stress on the joints and tendons.
P.S. I do not want to start a flame war. Pretty much everything is better than querty.
If "learning curve" is stopping you from switching keyboard layouts (as it was me), don't let it: Colemak decreases that transition time to bearable levels.
Now I am much better at querty and Dvorak. You do not unlearn the old layout. In fact I find that I can alternate between both layouts as fast as I can tell the computer to switch. (I assigned the windows-key for switching.)
Some treatments were moderately or very successful for most who tried them, with very little or no adverse effect. These were:
* Bowen Therapy
* Alexander Technique
* Tai Chi
* Self Hypnosis
* Carpal tunnel surgery
* Local anaesthetic injections
* Traction (the standout villain!)
* Stretches from a physio
* Cortisone injections
You have not lived until you've used Emacs with the Kinesis keyboard. You can remap any key to any other key instantly within the keyboard itself, without mucking around in your OS. And there are bunches of thumb keys. All those wacky control and meta keys now live, in mirrored pairs, under my thumbs, and the Caps Lock function has been moved to a random, faraway key, to be replaced by my own personal prefix key that I can use to trigger stuff like snippets and abbreviations.
Give yourself a little massage every now and then to relax the accumulated tension.
2) ergonomics. type with straight wrists. if you rest your palms on the table by the keyboard and bend your wrists up, while typing, that will hurt you
3) attitude and mood are important. when i was really scared of the pain, and obsessing about it, it made it a lot worse. at some point i relaxed and it felt a lot better. obviously that won't work in all cases, and you still have to be careful, but if you're scared every little nerve impulse means you're too crippled to work and your life is ruined, you can imagine more pain than you have.
4) form habits. some ppl play with their hair while thinking, or shake their leg, or bite their tongue. when you're thinking about how to write the next piece of code, you want to be unconsciously stretching. make it something you do automatically when you aren't paying attention to what you're physically doing.
5) i don't like chair arm rests. partly they are too far apart, and they have to be unless your chair width really hugs your body. i use a pillow in my lap (and supported on the ends by the arm rests) at all times. it's from an old couch and not too hard or soft. it gives me somewhere comfortable to rest my arms whenever i'm not typing, as well. your mileage may vary, but feel free to improvise if it's comfortable.