This is my keyboard…

there are many like it but this one ‘s mine. Your keyboard is probably the less expensive piece of hardware in your workstation. If you’ re a programmer and you’ re working with a cheap keyboard it’s because either you’ve never learned how to leverage its potential or you’ve never put your hands on a good one.
If you’re making heavy use of the mouse you should try this little experiment: start your IDE of choice, unplug your mouse and try to get something done. At first it will be impossible even to do the simplest task but, with time and practice, you will feel more and more comfortable. Coding without leaving your hands form the keyboard has a number of benefits you should keep into account:

  • Speed boost – moving the mouse cursor around takes a whole lot of time. Even just getting the habit of accessing the menu bar with Alt+key will make you a lot faster.
  • No loss of momentum – the lone fact that you have to move your main hand back and forth from the keyboard to accomplish the most trivial task makes concentration much more difficult to attain. Keeping both your hands on the keyboard makes everything smooth, to a point that you’re not even explicitly thinking about each single step of the task.
  • It makes you look cool – (to other geeks). But hey, it surely shows that you’ve put some effort into improving your craft. That’s always a good thing.

Now, don’t get me wrong: I’ve got nothing against the mouse as a device. It’s just that i don’t think that coding is one of the activities that require the mouse the most, not at least as much as it is usually employed.
Take for instance first person shooters, as Quake or Unreal: I think they make a great use of the mouse. The problem with programming is that you need both of your hands on the keyboard. If we happened to have another hand free to use for the mouse it would have been a different story but, at the moment, the choice is between switching your hands between the keyboard and the mouse or abandon the mouse.

There are plenty of keyboards around to choose from. What is the best depends only from you and your preferences but I believe there are some attributes every good keyboard should have:

  • Excellent feedback – to keep your writing fluid and without typos it essential that you are able to feel when a key gets pressed and released almost subconsciously. Buckling spring keyboards will give you the best tactile and audible feedback you can get, but they’re really loud. A good compromise is the scissor switch technology, nowadays the default for laptops, which will give you excellent feedback without being so annoying to your coworkers. Most of the keyboard you will find, also the vast majority from the more expensive ones, will have dome switches instead. They really suck and you should better avoid them.
  • Standard layout – having all the keys in the places you expect them to be is crucial, especially after you get used to the layout. It is especially important that the end/home/ins/del keys are in fixed places, since those are the ones you will have to stretch the most to get to. You can get used to non-standard layouts, that’s for sure, but it will be a real pain when you don’t have your keyboard of choice at your disposal, or if you routinely switch between different keyboards (as is the case if you have, for example, a desktop and a laptop).

I recently bought a new laptop and I made the big mistake of not keeping the keyboard into account: it’s a good keyboard, it gives nice feedback, but the non-main keys are scrambled all over the place. I fortunately use a vim-like layout so the damage is minimized, but it’s still annoying.
Aside from my laptop’s keyboard, I currently use two other keyboards:
a Model-M IBM, a gift from a colleague (thanks Mirco!)

and a DasKeyboard.

The first one is just the BEST keyboard I’ve ever tried. A clone of the original is still in production so you can easily get your hands over one of these jewels. The only drawback is that everything else you will use afterwards will seem cheesy and you will take a while to readjust.
The DasKeyboard has also great feedback, looks really slick and the ultimate version gives you a chance to show off how geeky you are 🙂