Coding Horror

programming and human factors

Have Keyboard, Will Program

My beloved Microsoft Natural Keyboard 4000 has succumbed to the relentless pounding of my fingers.

A moment of silence, please.

OK, it still works, technically, but certain keys have become.. unreliable. In particular, the semicolon key is now infuriatingly difficult to use. I don't know if this is God's way of punishing lapsed Visual Basic programmers, or what, but it's incredibly annoying. Yes, I've tried cleaning it repeatedly with compressed air (although I didn't get to the dishwasher quite yet), but no dice. I blame Kernighan, Ritchie, and Anders, in that order. Also, Canada.

Or maybe my keyboard is just worn out. It is three years old. Some of the home row keys and the arrows are worn to a shiny blankness. Perhaps it's time to reinvest in my keyboard.

And why not? As a corollary to We Are Typists First, Programmers Second, a quality keyboard is one of the best (and cheapest) investments you can make in your career. So what makes a good programming keyboard? Well, I can point to a few things that make for a very bad one:

1. Thou Shalt Not Mangle The Home Key Cluster

keyboard with mangled page-up and page-down key cluster

2. Thou Shalt Not Use a Non-Standard Arrow Key Cluster

keyboard with non-standard arrow key cluster

3. Thou Shalt Not Remap the Function Keys

keyboard with remapped function keys and f-lock

These areas are sacrosanct for programmers. Unlike the average home or office user, we depend on our function keys, the home key cluster, and the arrow keys. We use the crap out of these keys. Move those around and you might as well cut our fingers off while you're at it.

I think all programmers can agree on these three. Beyond that, it rapidly becomes a matter of personal preference. Do you like your keyboards ...

  • Ergonomic or standard?
  • Clicky or quiet?
  • Low-profile or normal?
  • Minimalistic or extra function keys?
  • With backlights and LEDs or plain?

There are many small subtleties to key position and size that could also heavily influence your choice. Pick whatever keyboard you like, as long as it's of reasonable quality, and you're comfortable typing on it for long periods. That's the important thing. With that in mind, I'll survey a few popular programming keyboard choices.

I mentioned my beloved Microsoft Natural Keyboard 4000, which is pretty much the holy grail of keyboards to me.

MS Natural Ergonomic 4000

Some people don't care for the non-split spacebar, and the way the keys have a fair bit of resistance -- but that's never bothered me. If you're into the whole ergonomic split layout thing, as I obviously am, it's difficult to go wrong with the Natural 4000. That's why I'm replacing my old keyboard with the very same model. If you hate wires, the wireless equivalent is available -- but only with the Microsoft Natural Ergonomic Desktop 7000 bundle.

If you're into classic keyboards, the DAS Keyboard Professional is another popular choice. Here it is next to the classic IBM Model M, the granddaddy of all PC keyboards.


These are both buckling spring keyboards, part of a long line of venerable keyboard designs going back to 1980. Dan waxes poetic:

These mainstream 'boards, all with one or another variant of the simple and quiet rubber dome switch idea, are perfectly OK for people who don't type much. They may drop dead with or without the assistance of a spilled beverage, but that's no big deal; if your computer's essential to your happiness, buy a spare cheap keyboard in case your main cheap keyboard dies, and use your nasty mushy input devices with my blessing.

If you do type a lot, though, you owe it to yourself to get a good keyboard of one kind or another, for the same reason that people who use the mouse a lot shouldn't settle for some ancient crusty serial-port optomechanical artifact.

Old mouses aren't nice to use, but old keyboards can be, because mouse technology's advanced a lot over the last 20 years, but keyswitch technology was quite mature in 1980. Modern keyboard tech advances have mainly had to do with wireless interfaces, snazzy looks, and making cheap crud cheaper.

The Das got a very favorable review at Tech Report. And it also comes in a super-hardcore blank keycaps edition, if you really want to prove to yourself (and your coworkers) that you can actually touch type. It is a bit spendy, though, particularly when excellent Model M clones can be had for fifty bucks less.

If you're more into laptop-style ultra low profile keyboards, you might prefer the Apple Keyboard.

Apple wired keyboard

Haven't tried this one myself, but I've heard good things; the layout seems solid and the quality superb, as you would expect from Apple.

I read recommendations for each of these keyboards almost daily. But of course I'm only touching the tip of the iceberg in this post. There are at least a dozen other popular contenders, along with a seemingly neverending parade of oddities and curiosities. Such as the Space cadet keyboard.

Whatever your choice, give your keyboard the consideration it deserves; it is the one essential tool of our craft.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: