Introduction

There is a common stereotype that all programmers are extremely fast at typing.

In films and TV shows, any scene involving coding will inevitably be accompanied by a ‘hacker’ furiously typing away at their keyboard.

This leads to the logical deduction by many that typing fast is a prerequisite to being ‘good’ at programming.

The reality is nothing like the media’s depiction. Most of the time ‘coding’ is spent surfing StackOverflow or staring blankly at the screen and scratching your headā€Š–ā€Šor at least that is my experience šŸ‘€

You don’t need to be able to type fast in order to ‘code’. But you do if you want to be a highly productive programmer.

The role of a developer is not restricted to only writing code. It includes ancillary tasks such as writing documentation and design documents, interacting with search engines, communicating issues to other developers over chat etc.

The question shouldn’t be: How fast do you need to type to writeĀ code?

You should ask: How fast do you need to type for someone who spends most of their day at a computer and keyboard?

It makes just as much sense to improve your skills on a keyboard as it does to improve your knowledge/skills in your chosen programming language. Both make you more efficient as a programmer.

In this post I argue why you should invest the time to improve your typing speed (spoiler: it isn’t to write code faster) and the knock on benefits to your job as a developer.Ā 

Additionally, I share my top tips which I used to double my typing speed in a few months from 55wpm to over 110wpm.

typing example
Example typing test using MonkeyType.com

You don’t need to type quickly to write code…

Modern IDEs eliminate the need to type quickly while coding

Let’s first cover the obvious. Modern IDEs (Integrated Development Environment).

Tab completion has killed the need to be able to type quickly when writing code. You are never going to be able to type quicker than your tab completer. Even if you can, tab completion comes with other benefits such as code assist and hinting.

In general, tab completion allows you to code ‘at the speed of thought’. This dramatically reduces cognitive load so you can focus on the logic of the problem at hand rather than the act of typing out each individual letter.

With tab completion in your IDE, typing speed is unlikely to be a blocker to your thought processes when writing code.

Most time is spent reading code, not writing it

ā€œIndeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code.ā€

Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship

Typing speed is not the limiting factor when developing software. Most of your time is spent reading your own or other people’s code. Ultimately, it doesn’t matter if you can smash out ten of lines of code, faster than your colleague, if it then takes 20 minutes to debug it.

So what am I on about? Why is typing speed important for programmers if it isn’t to write code?

…But why should you bother?

Write at the speed of thought. Increase creativity.

The closer your typing speed gets to your thinking speed the more creative you become. When thereā€™s no gap between you wanting to type something and actually doing it, you donā€™t interrupt the stream of thoughts.

Programmers can have a lot of plates spinning in their head when solving issues – I like to think of this as your personal cache. It takes a lot of effort to stay in the flow in order to piece together various dependencies to solve the problem. Any disruption to the thought process can set you back minutes or hours in the problem solving process – you have to go back to the ‘hard drive’ to pick up all relevant the info again.

Thinking about the problem should be separate from typing the actual characters in a code editor. Using up cognitive bandwidth to look down at your keyboard and think about typing can be a killer for productivity and your ability to solve the complex issues. Particularly if you type significantly slower than you think.

You should try and reduce any blockers to your stream of thought, this includes typing.

Reduce friction. Build better habits.

Additionally, improving your typing speed reduces friction which makes other tasks easier.

Writing documentation, commenting in your code (e.g. doc strings), compiling a document of scope requirements etc. are all common tasks which necessitate efficient typing. They also happen to be the less glamorous of developer tasks and often don’t receive the attention they should.

There is a great book by James Clear called Atomic Habits which explains the concept of ‘friction’ in relation to building good habits. “The greater the friction, the less likely the habit”. Slow typing speed, or even discomfort when typing, builds a barrier to the tasks mentioned above.

“The greater the friction, the less likely the habit."

James Clear Atomic Habits

If you can type quicker, it is easier for you to write comments and detailed documentation for your code as the friction is reduced – increasing the chances of you actually writing any documentation in the first place.

Positive Feedback
Positive feedback loop by improving your typing speed

Get more done

It is a matter of simple arithmetic. If you can type twice as fast (while remaining accurate) you will double your output when it comes to writing documentation, emails, chatting on Slack etc. You will also spend less time checking for and correcting errors, saving you even more time.

Don’t underestimate the power of marginal gains . Small improvements in the speed of some tasks compound greatly over the course of a day or year.

How to improve your typing speed

Over the last year, I have made a concerted effort to improve my typing speed. I was inspired by Ali Abdaal and his – quite ridiculous – typing speed of 155 words per minute (wpm).

Little by little. Day by day. I was able to improve my typing speed from a very average 50wpm up to around 110wpm.

I am not suggesting you need to reach 100 wpm (although setting a target certainly helps keep motivated to improve), I started noticing tangible improvements to the speed and comfort of my workflow when I reached 80-90 wpm.

Here are my top 5 tips for boosting your typing speed šŸš€.

1. Learn to Touch Type šŸ‘Œ

The biggest drain on productivity and cognitive overload is when you need to look down at the keyboard while typing.

Learning to touch type will likely lead to the biggest improvement in the your typing speed and comfort.

2. Focus on Accuracy šŸŽÆ

There is little benefit to typing quickly if your accuracy is terrible.

Accuracy is just as important as speed and should be at least >95% to not be a blocker to your thought processes. Going back to correct words is a productivity and thought process killer.

3. Productive Procrastination šŸ˜‡

The best way to improve is by regular practice. There are many great websites which help you practice your typing and benchmark your speed.

Searching ‘typing tests’ on Google will provide you with a number of great testing websites. My personal favourite is MonkeyType – an aesthetic UI, highly customisable and doesn’t spam you with adverts.

Use these typing tests regularly and often to consistently practice and benchmark you typing speed. I used these websites as a form of ‘productive procrastination’, for 5 minutes here and there every day when I was bored. I quickly noticed the benefits of regular and deliberate practice.

4. Track your progress šŸ“ˆ

Track your progress and work towards a target. Progress tracking will help keep you motivated and highlight your improvements over time.

Most typing websites have some functionality to track progress. Alternatively you can maintain a progress log yourself.

A note of warning: these websites will give you a rather inflated typing speed figure compared to your ‘real world’ performance.

5. Build Muscle Memory šŸ’Ŗ

Building muscle memory, particularly for common words, can dramatically increase your speed and reduce cognitive load while typing.

In an ideal situation, you should be able to see a word and your fingers just subconsciously type the word without any cognitive effort – in much the same way as humans read by recognising word patterns instead of reading individual letters.

You can practice building muscle memory using the following exercise:

  1. Prepare your fingers to type the word. Don’t type anything yet, just place your fingers over the right keys.
  2. Try typing the word as quickly as possible
  3. Pause before the next word (e.g for 1 second)
  4. Repeat from step 1

Don’t worry about your overall speed. For the moment, only worry about the speed of typing the individual word.

This will train your fingers to learn the motions for keystroke patterns in common words. Once you get good at it, you will read a word and your fingers will subconsciously arrive in the correct positions and you will be able to press the keys in the right order without even thinking. Trust me on this. It really does work.

Conclusion

Investing the time learning to type faster was one of the best decisions I have made in the last year.

You don’t need to type quickly to ‘code’. Most of your time is spent reading and debugging rather than writing code, and besides, tab completion in modern IDEs takes care of most of your keystrokes.

Increasing typing speed reduces friction and cognitive load allowing you to type ‘at the speed of thought’.

This brings benefits such as being able to stay ‘in the flow’ without breaking your thought processes. It also improves the chances of you writing more detailed documentation and code comments. These marginal gains all contribute to increasing your effectiveness as a programmer.

So, it comes as no surprise what my concluding piece of advice is:

If you are a developer, learn to improve your typing speed. It is an investment I guarantee you won’t regret. Typing fast is a superpower.

Further Reading