On the Importance of Typing Fast
Written at 2023-03-03 - Updated at 2023-11-07Typing Fast is Important
It is often mentioned that the bottleneck in building software projects is not one’s typing ability but ability to think clearly, and to design the architecture effectively. Afterall, if typing speed was so essential to programming, the time difference between rewriting an already existing project with that of creating it from scratch would not be as high as it is.
While I agree that typing speed is not essential to programming, I cannot relate on how this fact is used by lots of people to justify their thinking of typing fast being not important for the development process.
The comparison made above between writing a project by scratch and rewriting an already existing one, is good for showing that typing speed itself cannot be a sufficient criteria for being a good developer. But what it does not show is the unimportance of typing fast. In an an ideal setting, we could have compare the development speed of developers who almost have the identical cognitive abilities and experiences with different typing speeds. Unfortunately, I do not heard any such experiments. So what I will do to show you the importance of typing is instead will give you my arguments for it.
First of all, programming is not just about thinking and designing systems but also about debugging bugs, refactoring code, experimenting, and finally researching or discussing stuff. One commonality of all these exercises is that they are being iterative processes. Any programmer with a sufficient experience would probably understand what this means. I remember countless times where I needed to put debug logs lots of different places in the code, so that I can exactly point source of the bugs. Same applies for experimenting with the tools I am not used to so that I can get an idea about the inner workings of them. Even searching stuff on the internet is often an iterative process where one search leads to another prompt so that you can understand the related concepts. All of these processes are usually proceed by trial and error, where in each iteration you are somehow bottlenecked by the necessary actions that are needed to be done in order to proceed to the next iteration. I think what typing speed is esentially helpfull for is to reduce the time between those iterations.
Yes, it’s essential to spend time on the architecture of the code, technology stack, algorithms which will be used and requirement specifications. However this doesn’t diminish the importance of typing fast. To the contrary, this just makes typing fast more important because reducing the time spent on typing would allow us to allocate more time to the essential works.
Even though typing itself is not so important, typing fast would still be one of the most critical skills for developers because it reduces the time spent on an insignificant task of typing.
This reasoning is similar to what Hans Hoffman once said:
“The ability to simplify means to eliminate the unnecessary so that the necessary may speak.”
Typing is the way we actualize our ideas into real programs.
If you do not have the faculties to realise your ideas at the rate they occur, then they can accumulate to a point where you eventually reach a position where you have to abandon some of them. Essentially, the faster you can transform your ideas into code and test them, the less likely you are to experience an overflow of untested and undeveloped ideas.
Improving Typing Speed
Given that the typing speed of an average person is around 40 WPM, even reaching 70-80 WPM would be a significant leap for most people. While pursuing further improvements is still admirable, its important to be aware of that there comes a point where the cost-effectiveness of pushing ones typing speed diminishes, as the challenge escalates when you approach your personal limits. Although having a personal average typing speed of 105 WPM on 10FastFingers, I still like to exercise typing speed. But I do this as a kind of challenge rather than an expectation of being more productive.
The main advice I would like to give the people who want to improve their typing speed is to learn touch typing, a technique where you become accustomed to using all 10 of your fingers to type without looking at the keyboard. Although increasing typing speed without a common technique like touch typing is indeed possible, I still like to recommend touch typing as it is a standardised way of typing which its know-how can also be transferred to other people in a consistent way. I personally used sites like keybr and typing club while I was initially learning touch typing, whereas I still use 10FastFingers and Type Racer for exercise.
For developers, I also strongly recommend becoming accustomed to using the English keyboard layout even their native language is not English. Most programming languages are designed to use symbols readily available on a US keyboard, such as {}[]/`\"’, which may not be as easily accessible on other layouts, (e.g. Turkish layout).