Touch typing (also called touch type or touch keyboarding) is typing without using the sense of sight to find the keys. Specifically, a touch typist will know their location on the keyboard through muscle memory. (Wikipedia)
After about 20 years of programming with hunt and peck style shamelessly, I decided to learn touch typing a few months ago. I'll talk about why I decided to learn touch typing at the end of this post, but I first want to spend time on the critical question: "Do Programmers Actually Need Touch Typing?".
Well, this is a question you hear from programmers who don't touch type. I used to say that a lot myself. I would also add:
I spend most of my time working on the design decisions while programming, not typing. And I can type fast enough.
The first part is actually still true. However, this doesn't mean we do not need to type more accurately and faster. More importantly, there is a completely different aspect to touch typing which non-touch-typing programmers don't even realize: Touch typists don't spend much effort for typing, it happens almost automatically.
Typing Happens Automatically… Really?
I want to elaborate on this one a little bit, because I wasn't really able to realize how this would happen before I started to learn touch typing myself. Take driving as an example, or biking, or even climbing the stairs. The first time you try to do these activities, it feels very complicated. You need to focus very hard, try to remember the steps that you should follow, the rules that you should follow all the time. It feels genuinely hard and mentally tiring. When you are still an unexperienced driver just turning the radio on while driving feels very dangerous, you don't want to take your eyes from the road even for a second. However, as you drive more and more, this process becomes automatic. You can drive almost effortlessly.
Touch typing is similar. As you learn touch typing and practice, typing feels automatic, you don't think about which finger you should use, or which key or which modifier key you should press. You simply think and type.
Your interaction with your computer becomes so natural, and so effortless. And when this happens there is a huge benefit, as you can actually spend your mental power to actually think about what you are going to type rather than typing (calculating the keys to press, hunting for the keys, etc.) itself.
I hope I was clear enough on this aspect, as I believe this is the most important benefit of touch typing. Not the increased accuracy, or the increased typing speed, but being able to type effortlessly while focusing on what to type.
What about typing speed?
I tested a few non-touch-typing developers I know, and they type at about 40-50 WPM (Words Per Minute), and touch-typing developers type at around 70-120 WPM. You can test your speed at www.typeracer.com (or any other typing site) to see how fast you can type yourself and share in the comments below. So, there is a clear advantage in terms of speed. Developers who can touch type can simply type the same text in half (or less) time than the ones who can't.
I can hear some of you saying "Hey, we don't really spend time typing, we spend time designing…" again.
So you would think the time saving wouldn't be that much at all. However, we developers don't spend all our time in coding, right? We communicate with stakeholders throughout the day, we send many emails, we use IM tools very frequently, and we actually document our designs. In addition, many of us take constant notes throughout the day on what they are doing, how they are doing these, meeting notes, etc. Note taking is actually another essential subject I will cover in a later post. Anyway, the point is, we have to type a lot. Typing is part of our daily routine. So, just spending half of a third or the time for typing for these tasks is a great improvement.
Additionally, some of us actually hold back from online conversation, because typing takes so much time. Just today I noticed how my attitude towards using the internal IM tool in my company changed recently as I learned touch typing. Previously, I would struggle keeping up with the speed of the person I chatted with. They would keep sending messages, and I would end up changing the message I put together in the last minute as they would have sent a message that makes my almost complete message irrelevant. Today, I noticed that, I am actually typing a lot faster than the person on the other side, and the other person was having the same issue.
Why I decided to learn touch typing
Before I talk about why I decided to learn touch typing, maybe I should first tell you why I didn't learn touch typing earlier.
In my home country (Turkey), touch typing is unfortunately not a very common skill among developers. That is probably the most important reason why I wasn't exposed to this jewel of a skill before. And then, when I came to the US, I thought learning touch typing would take a very long time, and a huge amount of effort. I even started an online tutorial once, but I quickly dropped it considering it too difficult for me at that time.
So, how did I decide to learn touch typing, for real, then? We take extensive notes during the interviews at Amazon, and we sometimes get two interviewers into one session, one shadowing the other. We use this as a training mechanism. After one such interview, the Bar Raiser who was shadowing told me that I spend too much time looking at my keyboard while taking notes. He suggested that I should spend more time keeping eye contact. And when I asked him, how he takes notes while keeping eye contact, he simply said "I can type!". That was the time I really felt bad about not being able to touch type. And thanks to that BR, that happened to be the trigger for my motivation.
Ok, you got me excited, how do I learn touch typing?
If I can get some of you excited about touch typing, I would consider that success. Learning touch typing is actually very easy, requires 2-3 weeks of dedication, then everything comes automatically. I learned it with my daughter, and actually she can type much faster than I do now. And then my wife followed the same process to learn it similarly.
The process I followed worked for at least three people. The details of this process will be the topic of the next post.