Personal Productivity Stack Exchange is a question and answer site for people wanting to improve their personal productivity. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have been using Typing Master to learn touch typing, but it doesn't cover the symbols and numbers I user as a programmer to any significant extent. Is there any touch typing software that is more targeted to programmers?

My best technique so far is to enter in sample code as a typing drill text.

Here is part of my C# typing drill text

using System;

public class HelloWorld { }

public static void Main(string[] args) { }

var wordlist = new[] { "C#", "and stuff" };

var passed = new List();

var failed = new List();

DateTime today = DateTime.Parse("12/31/2010 12:15:00 PM");

var s = "Hello!";

var nums = new int[] { 1, 2, 3 };

var hero = new SuperHero() { Name = "Batman" };

Shape s = new Shape();

Circle c = s as Circle;

c = (Circle)s;

share|improve this question
In addition to taking you may want to consider speech recognition: – Franck Dernoncourt Jul 22 '12 at 16:50
What I do is I get a text editor with autocomplete, and figure out how little I have to type before using autocomplete accurately. – Muz Aug 10 '12 at 21:18
@FranckDernoncourt Meh; I have yet to code using voice recognition in any meaningful way, and I've been trying once every year or two for the past ~20 years, across a wide variety of languages and paradigms. – Dave Newton Aug 14 '12 at 0:33
How difficult is it to just keep practicing typing the symbols your language(s) require? Most of what you type isn't special characters, followed by parens, then curly braces, then square brackets. You can also consider re-mapping them. Your IDE already completes the closing symbol for you, too. – Dave Newton Aug 14 '12 at 0:34

14 Answers 14

up vote 28 down vote accepted

Maybe this web app is somewhat near what you're looking for:

Also take a look at this one:

share|improve this answer
Heh, I remembered this question and saw the blurb in the feeds a day late. – Dave Newton Aug 24 '12 at 14:23
Nice, this looks to be better than the type Racer universe that I found – Adam Aug 28 '12 at 14:46
Looks nice, but doesn't work, at least not with a non-US keyboard. For some reason it doesn't recognize non-alphanumeric characters correctly, so it misses its point (maybe still in development)?. – Dalker Aug 29 '12 at 4:33

I simply wouldn't worry about being able to touch type the symbols for programming. I can type around 100wpm when I'm writing an essay, but would never hit that programming. You just don't write code in the same way you write an essay. Especially using C# in visual studio where you have intellisense writing a lot of the code for you. If you want to look at some metrics, you should analyse how many lines of code you check in to source control on an average day - and I think you'll be very surprised. If on average you are writing more than 10 lines of code a day you may want to analyse your development practices (reference). Given that you probably write very little code, the efficiency gained by being able to touch type the symbols is fair outweighted by the cost of learning how to do it. This of course doesn't go for being able to touch type normal text. I agree with Joe that everyone using a computer should be able to touch type. Even as a developer, you'll spend a lot of time writing reports, emails, bugs, specifications etc.

share|improve this answer
I agree with Brian. Most of the time in programming, we spend times figuring out the solutions, not typing commands.. – Hoàng Long May 10 '12 at 9:20
The amount of code committed per day and the amount of text ( and symbols) that is typed during programming are very different. This is especially true if you count all the commands (Ctrl-F, Ctrl-H, etc ) and if you are not using a mouse. I do agree that the majority of development time is spent NOT writing code, but I don't think it follows that learning to touch type brackets and what not is a waste of time. – Adam May 24 '12 at 13:21
@Adam - You can get better at typing brackets with every day coding, but taking time specific to touch typing code that could be spent on other development techniques that require less code in the long-run. – JeffO Sep 13 '13 at 20:10

I bought "Typequick" and set aside a practice time everyday for about a month. Pianists and other musicians do specific drills every day, even when they practice whole pieces or perform every day. I randomly fetch it out again, but its model no longer helps me improve my speed, or more importantly accuracy. [I've yet to find a tool for 'advanced' learners.]

The real benefit of a Typing Tutor is the speed test. You get a unbiased, quantitative measure of your performance. I've seen a number of freebie/open-source ones on-line.

The hardest time is when your established "hunt and peck" or "many fingers" speed is faster than your touch-typing speed. When the pressure is on, you feel tempted to "just get it done".

The more you practice the drills and touch-type in your work, the faster & more accurate you'll be...

If you think you're good, IIRC typing schools used to graduate people at 100+WPM. The world record is 200-300 WPM.

Some one the best programmers and SysAdmins I've worked with are also very fast/accurate typists. It does improve your (coding) output. Plus it impresses clients.

I worked with a programmer who inspired me to lift my game. He'd spent a year in the wilds of Canada working on TELEX (50-baud, 5-bit), and had learnt to type at 66.66 WPM (line speed). The speed helped him code, but what really impressed me was how quick he could bang out other documents. A weekly report, documentation or a request...

share|improve this answer
+1 for mentioning non-coding documents. I'm a 90+WPM typist and get more code written because I spend less time writing emails, documentation, reports, PP.SE posts :), . . . – Belisama May 3 '12 at 10:34
Regarding the 200-300WPM numbers; court reporters and the like use a different typing system based on chording and routinely do 250WPM. See for some eye-opening reading and an OpenSource program for using the system on consumer qwerty keyboards... – retracile May 3 '12 at 17:38

You can use Keyboarding tutorial and typing test and add your own text. It would be interesting for example, to see how typing speeds differ between languages as different, or unusual syntax starts to take effect. In general I think that touch typing is a vital skill for anybody using a computer at all and well worth the time. My personal way forward (I was already a pretty good typist) was to rearrange the labels of the keys on the keyboard so that there wasn't any point in looking down.

share|improve this answer

I've been programming for just under 30 years, and just recently (5+ years) realized I still couldn't touch type the symbols and editing keys (Insert, Page Up, etc).

I tried forcing myself to try without looking, and made many mistakes along the way. But I kept cheating and peeking at the keyboard.

So I decided to buy the following keyboard: (About $130 CAD at the time, not cheap!)

Das Model S Ultimate Keyboard

It is a high quality mechanical keyboard WITHOUT any characters or symbols. So I was forced to learn and master the keyboard layout, and can say that I can type any symbol now without much trouble (a few are tricky!).

Also, make sure all keyboards you use (work, home) use the exact same layout. Most are the same, but some have weird Enter keys that are 'L' shaped, or a vertical edit key layout rather than horizontal, etc).

One caveat of this keyboard is when you are not programming and your fingers aren't on the 'home row', and you need to just quickly type a 'U' or something random for some prompt, it's funny how hard it is to find a certain key in a blank keyboard without your hands in the familiar position!

I find I did this NOT to improve my programming speed, but to improve my programming flow. By keeping my eyes on the screen it seems to make programming faster and smoother.

Another thing not mentioned was avoiding using the mouse while programming. I would advise learning all the keyboard shortcuts so you can almost eliminate your mouse usage while programming. Such as going to the end/beginning of a line, end/start of the entire document, hilighting a word or line (for cut/paste etc). Anything to keep you in the flow.

Good luck!

share|improve this answer
Can you follow up with whether or not this keyboard (or blank keys) helped your non-programming speed? Also, aside from they keys what else about it makes that price worth while? Their web site is very vague on what high quality switches and nice feedback actually does for you in the end. – Arbalest Sep 28 '13 at 21:35
Sorry, didn't notice your comment. I'd say it didn't help my non-programming speed, as it wasn't applicable since I was already a 'non-programming' touch typist and never looked at the keys. It did help with numbers and the other symbols. The build quality plus the 'feel' of the keys are top notch. What it does? Nothing much, maybe add a few words per minute (speculating!). It just feels 'right'. But most mechanical keyboards do. Matter of preference I suppose. – Doug.McFarlane May 16 '14 at 19:23

Just do a lot of programming and you'll pick it up over time. I never learned how to touch type traditionally, it was just lots of time in front of my computer programming and gaming, because of the latter my left hand sits on WASD when idling :D

A lot of people are shocked at how fast I can type and I never did any formal keyboard training, just lots of typing.

share|improve this answer
I agree. I noticed I wasn't too quick at symbol typing at the start, but after 10 years or so, you should be able to hit any symbol without looking at the keyboard. Make sure you use the exact same keyboard layout wherever you program! Do you want a challenge? Buy the DAS Model S Ultimate Keyboard, it is a completely blank keyboard! A great way to show off your leet status! ha – Doug.McFarlane May 4 '12 at 18:06
I was considering getting the das but then I met my black widow and I'll never be without it again. – Daniel Imms May 4 '12 at 23:10

I touch type as a programmer, but many years ago I picked up the basics from Mavis Beacon Teaches Typing (on my Amiga!) which was useful in getting a benchmark / WPM speed, but since then I've just refined my 'technique' by typing. There are some keys I occasionally get wrong because I don't use them so frequently, but that's what it boils down to... how frequently do you need to press those keys. I have found that I can't "hunt and peck" anymore, I just don't know where the keys are the way that my fingers know.

Something that might be helping me is that I use an ergonomic keyboard and that helps me maintain a relaxed approach to my keyboard, I notice it when I have to move to a standard keyboard, not only do my wrists ache but I'm just bad at typing and make more mistakes. What kind of keyboard are you using?

You could try forcing yourself to just use the keyboard more and ignore the mouse. I have been lazy in the past but recently changed where I sit and my mouse is not as useful as it was before, so I've been training myself to use only the keyboard. I have noticed performance gains and I'm better at controlling the computer just with the keyboard, again it's time spent at the keyboard practicing and accepting that I'll get a few wrong keystrokes but viewing it all as practice - like a code kata which are well worth spending 15min a day on and drilling those keystrokes with... it's there to help me get better.

The last time I took a test I had a WPM of around 130, but when writing code it is lower as Brian notes too. I simply can't think in code as fast as I can type - seems to be bursts of activity on the keyboard, I'll get down a method (a few lines at most) and then stop and think what do I need to do next.

I'm also a big fan of CodeRush (for Visual Studio) and know that makes me more productive on the keyboard. I don't have to reach for the angle brackets much or ! or many of the symbols because it writes that for me so I'm coding at a higher level of abstraction from the keyboard, I can think in terms of what I want to write rather than the technicalities of how to get the keystrokes I need to do that writing. I know there are other tools out there for .Net (Resharper, JustCode) and there are enhancements for other IDE's too. Then there's zen coding (if you do html and are happy with css this can really speed you up)

share|improve this answer
CodeRush looks pretty neat in terms of removing key strokes. I just use a wireless Microsoft keyboard. – Adam May 24 '12 at 13:17

Investigate the code generation/auto-completion/navigation/auto-formatting/refactoring capabilities of your IDE.

You'll spend less time typing what your IDE can do for you.

A few examples from the Eclipse IDE:

  1. Generate constructors, setters/getters from instance variables.
  2. Complete the rest of a variable or method name after typing the first few letters.
  3. Organise imports (add/remove imports based on usage.)
  4. Format code.
  5. Extract code block to a method
  6. Jump to next/previous problem
  7. Jump to/from declaration
  8. Expand a code-template...

'main' becomes

public static void main(String[] args) {
   | [<--cursor positioned here]

Number 8 illustrates this quite well. No amount of touch-typing practice will beat expanding a 4-letter code-template :-)

share|improve this answer
This is a good answer to a larger question - "How to be a productive programmer" - Simon's Code Rush answer is similar, except, with Code Rush, you type "b" for brackets, so learning to type symbols is not needed really – Adam Jul 24 '12 at 13:16

Type Racer has typing universe for coding text. A universe is similar a separate stack exchange site, in that app is the same, but data is different. In this case this means you can compete against others typing a bunch of code.

share|improve this answer
It would be much better if the testing code was indented properly. – charlemagne Aug 26 '12 at 0:30

When I wanted to develop my typing skills I used TypingStudy, which was a great help. It also helps if you want to learn to type with Dvorak or Colemak properly. Let me know if it was useful for you too.

share|improve this answer

I built this thing for myself in Python, and I like it better than anything I found online:

from time import time

def training(test):

    print "Enter : {}".format(test)
    start = time()
    result = raw_input("Enter : ")
    if test == result:
        print 'Your time : {}'.format(time() - start)
        print 'You did not enter the string correctly'


>>> training("ap, a[, a], a}, a{")
Enter : ap, a[, a], a}, a{ # test line
Enter : ap, a[, a], a}, a{ # line I entered
Your time : 7.25224089622
share|improve this answer

This works fairly well for me. You can use any text as basis of your test:

Here are some I've saved:

I've used to generate a sequence of special characters in order to create these tests. You can use this to create your own hardcore typing trials!

All special chars and numbers:

share|improve this answer

I know this is an old post but maybe someone will still get some use out of this.


It is a typing program specifically for programmers and lets you practice using real code in many different languages. It even lets you upload additional languages if it doesnt already have it. I have been useing it to practice C# and it has helped a lot.

share|improve this answer

I have been developing an application for several weeks now for this very purpose. You can take a look at the demo for the application, faster. This project is currently under development and open to contributions.

Currently the application provides code snippets to test your typing skills. Unlike traditional typing application, faster provides snippets of valid code, training you to type the special characters such as {, }, [, and /. Words per minute and accuracy are calculated as you type allowing you to get instant feedback. A keyboard is displayed suggesting which keys would be pressed by the finger that should be used to type the current character. Hands are displayed to suggest which finger should be used for the current character.

In the future I plan to include the following:

  1. More informative results explaining the metrics gathered.
  2. The ability to select a programming language to type in.
  3. Sounds to help indicate your accuracy.
  4. Ability to upload any source code to train with.
  5. User accounts to keep track of personal metrics over time.
  6. Display most common typos.
  7. Enhanced data visualizations around performance
share|improve this answer
Hi there - can you expand on this to explain why it is suited to programmers? – Rory Alsop Sep 11 '15 at 6:24

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.