Touch Typing for Programmers

43

29

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;

Adam Bell

Posted 2012-05-02T17:40:39.157

Reputation: 1 374

In addition to taking you may want to consider speech recognition: http://productivity.stackexchange.com/q/3605/2476

Franck Dernoncourt 2012-07-22T16:50:02.767

1What I do is I get a text editor with autocomplete, and figure out how little I have to type before using autocomplete accurately.Muz 2012-08-10T21:18:13.793

@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 2012-08-14T00:33:30.957

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 2012-08-14T00:34:59.737

Answers

34

Maybe this web app is somewhat near what you're looking for: http://typing.io/

Also take a look at this one: http://wpm-test.com/programming-typing-test/

bWowk

Posted 2012-05-02T17:40:39.157

Reputation: 578

Heh, I remembered this question and saw the blurb in the feeds a day late.Dave Newton 2012-08-24T14:23:00.913

Nice, this looks to be better than the type Racer universe that I foundAdam Bell 2012-08-28T14:46:13.450

1Looks 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 2012-08-29T04:33:15.877

18

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.

Brian

Posted 2012-05-02T17:40:39.157

Reputation: 1 382

5I agree with Brian. Most of the time in programming, we spend times figuring out the solutions, not typing commands..Hoàng Long 2012-05-10T09:20:14.020

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 Bell 2012-05-24T13:21:49.353

@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 2013-09-13T20:10:28.020

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...

steve jenkin

Posted 2012-05-02T17:40:39.157

Reputation: 101

2+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 2012-05-03T10:34:07.503

2

Regarding the 200-300WPM numbers; court reporters and the like use a different typing system based on chording and routinely do 250WPM. See http://plover.stenoknight.com/ for some eye-opening reading and an OpenSource program for using the system on consumer qwerty keyboards...

retracile 2012-05-03T17:38:01.217

5

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.

Joe

Posted 2012-05-02T17:40:39.157

Reputation: 6 332

5

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!

Doug.McFarlane

Posted 2012-05-02T17:40:39.157

Reputation: 261

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 2013-09-28T21:35:51.050

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 2014-05-16T19:23:36.693

3

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.

Daniel Imms

Posted 2012-05-02T17:40:39.157

Reputation: 131

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! haDoug.McFarlane 2012-05-04T18:06:16.483

I was considering getting the das but then I met my black widow and I'll never be without it again.Daniel Imms 2012-05-04T23:10:00.537

3

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 :-)

gahrae

Posted 2012-05-02T17:40:39.157

Reputation: 131

1This 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 reallyAdam Bell 2012-07-24T13:16:04.040

2

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.

AnniI Andersen

Posted 2012-05-02T17:40:39.157

Reputation: 21

2

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

http://www.keyhero.com/custom-typing-test/

Here are some I've saved:

I've used http://www.dave-reed.com/Nifty/randSeq.html 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:

`1234567890-=][';\/.,~!@#$%^&*()_+{}|":?><

Alexander Rechsteiner

Posted 2012-05-02T17:40:39.157

Reputation: 121

2

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)

Simon Martin

Posted 2012-05-02T17:40:39.157

Reputation: 573

CodeRush looks pretty neat in terms of removing key strokes. I just use a wireless Microsoft keyboard.Adam Bell 2012-05-24T13:17:09.783

2

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.

Adam Bell

Posted 2012-05-02T17:40:39.157

Reputation: 1 374

It would be much better if the testing code was indented properly.charlemagne 2012-08-26T00:30:59.063

2

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)
    else:
        print 'You did not enter the string correctly'

Demo:

>>> 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

Akavall

Posted 2012-05-02T17:40:39.157

Reputation: 121

1

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

Walker Randolph Smith

Posted 2012-05-02T17:40:39.157

Reputation: 111

Hi there - can you expand on this to explain why it is suited to programmers?Rory Alsop 2015-09-11T06:24:46.867

1

One more brand new free touch-typing service for coders:

SpeedCoder http://www.speedcoder.net/

You can choose from 12 popular languages or upload custom code.

Evanto

Posted 2012-05-02T17:40:39.157

Reputation: 396

1

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

Try http://typing.io/

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.

simbiote4

Posted 2012-05-02T17:40:39.157

Reputation: 11

0

https://www.tipp10.com/en/ is an open source typing training program that was recommended by Stifting Warentest (the German version of consumer reports).

It allows you to load your own texts for practice and you can simply add code.

Christian

Posted 2012-05-02T17:40:39.157

Reputation: 1 485