On the Importance of Typing Fast
Written at 2023-03-03It is often mentioned that the bottleneck in building software projects is not one’s typing ability but ability to think clearly and logically, and to design and organize the architecture effectively. Afterall, programing is more than just typing. If it was just typing we would expect to see the difference between in terms of the time and effort required for rewriting an already existing project with that of creating it from scratch for the first time to be too small. However what we see is not “a bit less” but a huge difference.
While I agree that those mentioned properties of a software mentioned more important than typing speed, I do not like the fact that this reasoning is mostly used for justifying on how typing fast is not important for developers. It is not a healthy approach to solely focus on the time and cost difference between rewriting a piece of code and writing it for the first time, measured purely in terms of the time spent typing. This is because the time spent typing while building a project involves not only the final product code but also all the tests and iterations made throughout the development cycle, as well as the questions posed to the internet and communication made with other team members.
Yes, it’s essential to spend time on the architecture of the code, technology stack, and requirement specifications. However this doesn’t diminish the importance of typing fast. I agree that typing is one of the least significant aspects of the development process, this is why I put an emphasis on typing fast so much (notice that I do use the phrase typing fast in a different way than typing by itself). In essence, reducing the time spent on typing allows us to allocate more time to actual work. In other words, typing faster saves time and enables us to focus on the more critical aspects of development.
Even though typing itself is shallow and unimportant, typing fast is 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.
Assume that you generate your ideas at a rate of 3X per unit of time, but you can only actualize X of them in that same time. This means that the number of non-actualized ideas will accumulate until you eventually reach a position where you have to abandon some of them (due to having a mental stack overflow). 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.
Of course, it would be imprudent to assume that the pace of idea generation will consistently surpass that of execution. However it is still important to acknowledge that circumstances may arise where physical constraints such as limited typing speed can hinder one’s ability to bring ideas to fruition.
Setting up a Goal
Assuming that typing speed is indeed as important as stated, it is crucial to determine how fast we should type to avoid the bottlenecks mentioned above.
Setting a goal is indeed a subjective process that depends on an individual’s expectations. Personally, I believe that thinking in terms of how many words we speak per minute is a good metric to use as it is the speed at which we typically express our ideas. The higher the ratio of typing WPM to speaking WPM, the better for avoiding bottlenecks. Studies show that the average typing speed of the people is around 40 (WPM) [1]. In contrast, the average rate of speech for native English speakers is around 150 WPM [2].
Another critical aspect I like to consider when setting up a criteria for typing speed is the concept of “diminishing returns” [3]. Increasing your average typing speed from 140 to 150 might be two or three times harder than increasing it from 50 to 100. Therefore, it may not be cost-effective after achieving a certain point of typing speed.
Here is an example probability density curve [4] that can give you an idea about the distribution of people by their typing speed:
Despite my personal record of 144 WPM, I typically type around 90-110 WPM [5]. I believe that having an average speed of 80 WPM would be more than sufficient for most people in terms of cost-effectiveness. However, I still want to improve my typing speed a bit more by learning a typing technique called touch-typing which is ergonomically just better than what I do right now.
Improvements
So what can we do to improve our typing speed? Here are the first things that come to my mind:
Type regularly: The best way to learn a skill that requires a muscle memory is just to repeat the things over and over again. Simply put: the more you practice typing, the faster you will become. Set aside time each day to practice typing, and try to increase your speed gradually.
Use typing software: There are many typing software programs available that can help you improve and measure your typing speed. I usually use 10FastFingers and Type Racer.
Learn touch typing: touch typing is a technique where you become accustomed to using all 10 of your fingers to type without looking at the keyboard. While I am skeptical that this directly increases speed, I believe it can indirectly improve your typing speed by increasing accuracy. I also think that it increases endurance by making the process more ergonomic for the typist since you no longer have to raise your hand as much as you used to.
Improve your typing posture: Your typing posture can also affect your typing speed. Sit up straight, keep your wrists and fingers in a neutral position, and make sure your keyboard is at the right height. Just google “typing posture”. Not to mention that these kind of things are also important for your long term health.
USE VIM! VIM is a powerful text editor that allows users to manipulate text with keyboard shortcuts. It reduces the need for manual navigation and makes it easy to perform repetitive tasks. VIM has advanced features such as macros, registers, and plugins that can further increase efficiency. By using VIM, you can avoid moving your hands away from the keyboard, which can save time and increase typing speed. VIM’s features streamline workflow and increase productivity, making it an excellent choice for programmers and writers.
For developers, I strongly recommend becoming accustomed to using the English keyboard layout since 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).
Glossary
[1] Average typing speed infographic. Ratatype. (n.d.). Retrieved March 3, 2023, from https://www.ratatype.com/learn/average-typing-speed/
[2] Barnard, D. (2022, November 8). Average speaking rate and words per minute. VirtualSpeech. Retrieved March 3, 2023, from https://virtualspeech.com/blog/average-speaking-rate-words-per-minute
[3] Diminishing returns means a special case where an increase in effects start to not justify the increase in costs after a certain point. For more information, see https://en.wikipedia.org/wiki/Diminishing_returns
[4] Histogram and density estimate of WPM, uncorrected errors, Iki, and … (n.d.). Retrieved March 3, 2023, from https://www.researchgate.net/figure/Histogram-and-density-estimate-of-WPM-uncorrected-errors-IKI-and-keypress-duration_fig2_324659119
[5] While there are many sites where you can measure your typing speed, I used 10FastFingers when doint my tests.