What is touch typing?

Just in case if you are not aware, touch typing means typing without looking at the keyboard. So that your eyes are on the screen and you don't switch between keyboard and screen all the time.

One thing that most people fail to understand is that when you learn touch typing -

You don't learn the position of keys. You learn patterns

You train your brain to identify the sequence of keys. For eg. on seeing quick brown fox your fingers will automatically move. You just read words - quick, brown and fox. You don't read the indiviudal characters. But if I invert the words, xof, nworb and kciuq, even with touch typing you will take much more time to type.

Do programmers need it?

As a matter of fact, the answer is big NO. Programmers or coders or developers, whatever you prefer, their task is to solve technical problems, to write minimum amount of code required keeping scalability and robustness in mind. The real work is to identify patterns and use existing tools to convert the thought to reality. It is never about typing fast.

Someone could create a functional React component in a day, while other person can take 2 days to create the same functionality but with better details, better abstraction, better error handling.

If you compare the amount of keystrokes, the time invested in typing, it will be nowhere near to the thoughtprocess that involved while developing.

Then why learn touch typing?

Well, I believe touch typing is one of those skills, that falls into the category of personal interest. You don't need to have it, nobody will ask for it(Except when its a typing job!) and it won't matter if you have it on resume.

It does make you type faster and once you are comfortable, it is really more convinient. Just to point out some benefits

  • It reduces typos. Since your eyes are on the screen all the time, you can easily catch mistakes
  • It helps you in taking notes. In meetings or sessions, you can focus on the presenter while simultaneously take notes
  • It makes you type faster. That means spending less time while interacting with someone over chat.
  • Combined with keyboard shortcuts, you could probably get rid of the mouse.

But why did I learn touch typing?

I have been programming for more than 8 years. I used to code at night with minimum lights and lowest brightness set on the display. For those who write code in dark can understand the pain. Without seeing the keys typing is a nightmare. Certainly the modern solution was a backlit keyboard but sadly my laptop didn't have it.

To circumvent this, I had to learn touch typing or buy new laptop with backlit keyboard.

Of course, the additional advantage of touch typing is speed, but for me that was not a concern. I was pretty good at speed with look and type too. In fact I have seen people who can type really fast with look and type style.

What is keeping you away then?

Its hard. Yes, learning touch typing is not a day of work, not even a week. It can take upto a month even if you practice regularly. Every day at least half an hour of typing practice. And its 10 times difficult if you want to learn special characters.

Writing text is one thing and writing code is another

Here are some of my observations that might help you decide whether you want to learn touch typing or not. I used only the free resources available on the internet. Perhaps with paid services the perspective might differ.

  • Number-row is hard to learn. I still often fumble with 5 and 6
  • Curly braces and square brackets are so common that your pinky finger will get tired
  • Jumbling across start and end of the statements is a frequently used technique when you are writing code but you have to move your hand completely off the home row to press Home and End button
  • You can't debug programs without looking at the keyboard - At least not me. Mistyped text can be corrected, but stepping out of a breakpoint unintentionaly can be a lot of extra work
  • Typing code requires constant case conversion - Unlike writing text which you can pretty much format later on, programs are mostly case sensitive. You need to be constantly using shift or CAPS Lock.
  • You need a very good quality keyboard otherwise many a times, you will miss far away keys like -, | etc. In regular text, special characters are indeed special while writing code, half of the time you will be typing special characters.

Free online tools

  • https://www.typingclub.com/ One of the best free sites to learn basics. What I like is that it highlights every character and on mistake it doesn't stop. Also there is only one box to look at. In 10fastFingers you look at the top, while your entered text goes at the bottom. The free version has many basic exercises including a lot of practice text.

  • https://keybr.com Another awsome free tool to learn. Earlier it used to accept an URL directly but now you have to provide custom text manually. Do remember to uncheck options like Remove punctuation and Transform to lowercase to test your typing skills for coding.

  • https://10fastfingers.com This is more for practice than learning. It gives you many community created practice sets and top 1000 words. Come here to practice often.

There are other services including paid ones. If I had the budget at that time, I would have bought a backlit keyboard instead of learning touch typing. Nevertheless now I think it was a good decision.