As a developer, my job is to make software. To start off with, this software lives only in my head. Programming is the act of extracting the software out of my head and into the computer. The keyboard is the interface between my brain and my computer. There are times when I’m primarily thinking, and my speed on the keyboard doesn’t matter. But when a thought comes to me, I want to get it out of my brain and into the computer as fast as possible, or I might lose it. I need a high-bandwidth connection.
If you write code and you’re not touch-typing, I don’t think you’re taking it seriously. Touch-typing is one of the easiest things you can do to level-up as a developer - the return on investment is massive.
The keyboard is your primary tool as a developer, and you should wield it like a sword.
Also, if you ever end up in a situation where the world has become infested with zombies, and the only way to kill them is by typing at them, you wanna make sure you’re in with a chance.
How do I learn?
By now, I’m really hoping I’ve convinced you to give touch-typing a go. Now, here’s the good news: it’s easy! It takes a bit of time to master, but nothing like the effort that goes into learning a new language, framework, or pretty much anything else.
The first thing you should do is download GNU Typist. Complete all the lessons in the first course (Series Q - Quick QWERTY course). Make sure you use the fingers it tells you to use for each key. And whatever you do, don’t look at the keyboard. I’ve heard that some people find this so difficult they put a towel or a piece of paper over their hands so they can’t see. If you’re looking at the keyboard, you’re doing it wrong. Even if there’s one key that you keep missing, the only way to learn is to keep on going until you get it right. Next time you get to that problem key, pause, breathe, and press it (use the Force). If it’s wrong, pause again, breathe again, and press it again. Eventually you’ll have spent so much time thinking about the position of that key that you’ll never have to think about it again.
Now, this is the hardest bit. Once you’ve finished those lessons, touch-type everything. Whether you’re writing emails, programming, working at the command line, googling, chatting, or anything, make sure you’re doing it like GNU Typist taught you. This is hard, because at this stage you’ll be slower than you were before. It’ll be so easy to lapse back into your old habits, so you need to be strict on yourself. Any time you start to look down at the keyboard, stop. Any time you start to use your index finger to type a character that your middle finger should be typing, stop. It takes a few days of this before you start to notice that you’re typing faster than you were before. But that point will come, and from then on, you’ll get faster and faster.
This is the perfect time to start playing on TypeRacer. TypeRacer pits you against other typists over the world. It’ll only put you up against others of a similar speed, so you definitely won’t be the slowest there. It’s a lot of fun, and great practice.
Another good one is The Typing of the Dead, if you can get your hands on a copy. If you’ve ever seen The House of the Dead, it’s like that, except you walk around with a keyboard killing zombies by typing. Seriously. It’s a great game, but beware - you don’t have to backspace over incorrect keypresses, so you’ll need to be careful or it could adversely affect your accuracy.
Once you’ve got your head around touch-typing, you may want to have a play with Vim or Emacs. They’re both well suited to touch-typists, as all the important commands lie under your fingers without having to move your hands, unlike in other editors (e.g. Page Up/Down, arrow keys, and, god forbid, the mouse).
I really hope you do give this a go, because it really will help you to improve as a developer. And if you don’t want to improve, what’s the point? Good luck, and let me know how it goes.