
Typing.io: Typing Practice for Programmers - DocFeind
http://typing.io/lessons
======
peeters
All this does is make me realize how much I take my IDE for granted. In no
example that I tried did I even get past the first line before I missed using
IDE autocomplete or shortcuts. It got under my skin that I had to type out
each character.

Take the Scala example. I would NEVER type "@SerialVersionUID" with correct
casing. I'd maybe type "@Ser" and then auto complete. Or "@SV" and then auto
complete. I can't recall the last time I typed an entire type name. Or
finished braces using Enter + "}" instead of CTRL-SHIFT-Enter.

The UI is well made though.

~~~
Edmond
I have to somewhat disagree, I think autocomplete is one of those IDE features
that is no doubt quite useful but I think its contribution to developer
productivity is greatly exaggerated... frameworks that are well designed for
instance are far more important contributors to developer productivity...

so my question to you is, what if a tool has a framework that allows you to
get a lot done with significantly less coding but lacks autocomplete, would
you not consider it?

Full disclosure, I am the founder of a browser based IDE software company so
my take may be biased, but I have also written enough code to kill a horse :)

We currently don't have code completion though it is on the product road map.
Our middle-ware however almost completely eliminates writing code for doing
C.R.U.D operations, sending email, uploading files, doing configurations and
using http restful services... I think such advantages greatly outweigh the
lack of code completion.

I do concede though that maybe in your specific case, code completion is a
major productivity booster.

~~~
kevinkyyro
Your disagreement is kind of out of place here; no claim was made of where the
productivity boost of autocomplete ranks against other development factors.
Besides, whether or not you use autocomplete is orthogonal to your framework
choice.

~~~
Edmond
* no claim was made of where the productivity boost of autocomplete ranks against other development factors

No, but it can be inferred.

I agree that code completion and framework choice can be mutually exclusive;
my general point is that a developer's decision to use a tool should consider
other productivity factors, not just the expected ones.

~~~
dopamean
The guy literally said that this app made him realize how much he takes his
IDE for granted and then he provided examples of what he meant. I don't see
what there is to disagree with there or what could be inferred .

------
padolsey
Nice UI! For programmers trying to improve their general typing speed I reckon
it could help, but for me it creates an almost uncanny experience.

In the JS test I found it incredibly difficult to type out
`/^(?:parents|prev(?:Until|All))/`, because my mind interprets it somewhat
like its AST -- i.e. I see a delimited regular expression with an uncaptured
group nested within another uncaptured group. I focus on the operators then on
the contents. But by the time I've done this I end up typing it out slower
than if I was just transcribing character by character. And so I started to
wonder if this is something it's "okay" to be bad at...? I mean, if I focused
on it character by character, word by word, then I may gain speed, but I would
be totally ignoring the meaning of the characters -- and I would also stop
being a programmer.

Maybe my mind just needs to become more attuned to reading code... maybe this
experience reveals that I do not read code often enough. Intriguing.

~~~
CoryG89
I was thinking all of these things too as I was trying it. I think there is
something fundamentally wrong about this. I don't think the words per minute
for a programmer's typing is important. As you say, to get the higher score,
you must simply type as you read character by character, but this is not what
programmers do. I don't see much value in this because of that. If our jobs
were to transcribe code that someone had written out by hand then this might
be something worth its disk space. If we find code that we want to copy
exactly without trying to understand its meaning, we have a clipboard for
that.

------
jbcurtin2
This tool is perfect. - I'll recommend to you that you're marketing it all
wrong. - I'd make this into a tech-interview/learn a new language site. Before
I crack any book for any language, I download gists of the code and start
typing it out.

Imagine, python/c the hard way in this? What is a namespace? What is an
import? Inline explanations of what you're doing would go a long way.

Dare I say it, this could be the first Learning-Development-Enviornment I
like. You're doing yourself more harm by only letting people use those 16
languages.

~~~
parm289
Spot on. This would be great as a way to learn new frameworks/libraries as
well.

~~~
esmevane
I completely agree.

Additionally, in the process of mimicking code, the only thing I could do was
think about what I was writing - and in some cases I discovered that I would
have done it differently than some of the libraries I use every day.

------
petercooper
Learning to type quickly is a valuable skill. But with programming, is typing
speed a common bottleneck? It seems akin to learning how to turn a steering
wheel more quickly or how to hammer faster.

~~~
ics
I think it really depends on your process. If you're _efficiently pragmatic_ ,
then maybe your work environment includes an IDE with tab-completion, project
skeletons, lots of snippets, and plenty of experience tying together existing
frameworks and other tech to achieve your goal. On the other hand, some people
actually want to do that sort of dirty work (even in verbose environments)
because they get an overview of every single thing that's going into their
program as they build it. They'll be a little slower than the first person but
potentially have a much better grip on the underlying architecture of what
they're working on which is incredibly valuable as you move forward and make
decisions. So for these people, faster rote typing could be beneficial.

~~~
ics
Too late to edit, but if anyone reads this comment later please also see this
post:
[https://news.ycombinator.com/item?id=6908248](https://news.ycombinator.com/item?id=6908248)

There's a neat part of the article that might better demonstrate what I'm
talking about.

\---

> Because I was young, super-anal, and wasn't on SSRIs back then, I once asked
> Carmack why he didn't use libraries for common functions that he could share
> between engine revisions. Carmack's a super-nice guy, but on this one
> instance he used the "Well, I think my methods work pretty well..." defense.
> I never suggested coding style changes again.

> But, really, for him it made no sense to share code, because, like a bee, it
> was just as fast to write new code. The template was in his head, he types
> really REALLY fast—why bother importing something?

> Don't take this to mean his code was spaghetti—it was actually some of the
> easiest-to-understand code I've ever worked with. It has an almost
> indescribable quality of "obviousness." Like, you know when a really good
> teacher explains something, it seems obvious? That's what his code was like.
> I mean, OF COURSE there's a loop where you service the pending events and
> call a refresh on the UI layer.

------
hcarvalhoalves
The problem is that nobody writes code like that (char by char, like prose).
You often jump back and forth between statements and parens, and code from
inside out.

~~~
spc476
I write code like that. I tend to have a good idea of what the code should be
doing, and write it out, char by char, like prose.

I also avoid IDEs and prefer text editors. In the twenty-five years of
programming, I've not found an IDE I like, and I suspect I'm a langauge-maven
than a tool-maven
([http://osteele.com/posts/2004/11/ides](http://osteele.com/posts/2004/11/ides))
(as long as I can type, I can try out a new language; I don't have to wait for
a specific IDE to come along first).

Edit: add a link about language-mavens vs. tool-mavens.

------
neil_s
Why would programmers need a separate tool for programming practice? Isn't the
act of programming itself the best form of typing practice? I don't see a
market fit for this for the stated purpose.

Also, the UI when you make a mistake is confusing, I didn't realise I had to
backspace and correct it. While that seems obvious in hindsight, I actually
opened it in a different browser to make sure I wasn't just hitting some bug
before reading the comments here and realising.

------
farnsworth
This is pretty cool. One thing that bugs me is that the code isn't formatted
the way I write. For example, my muscle memory does not involve typing a space
inside parens - "function ( selector )". I miss those every time.

~~~
Zitrax
Could be nice if they allowed you to apply your own code style
(autoformatting) on the source first.

------
keesj
Couldn't stop myself from trying to use tab-completion.

~~~
kbouw
^this

------
jdalt
I love this site. I went through every lesson like 6 months ago because,
although I could type prose very quickly, I had not mastered the programmer
typing that it takes to quickly experiment on the unix shell or hit opening
braces and parens with consistency.

Although typing certainly isn't a big development bottleneck, being able to
type fast lowers your overall cognitive load and lets you stay in the problem
domain you're working on.

It's not like loud noises are a programming bottleneck either -- but it's
certainly nice to eliminate a nuisance.

------
jreimers
What's the motivation behind doing this exactly? Why not actually write some
code to practice...writing code.

~~~
teleclimber
Their pricing page shows that it has what appears to be a nice set of features
to actually help you get better (note to site owner: might be an idea to put
this on the main page).

Despite that I can't imagine myself typing code just for the sake of typing
code. Seems to me this would make more sense as a plugin for an IDE. Watch my
every keystroke as I do real work and show where I am constantly having to
correct myself, and offer ways to prevent that.

~~~
dmnd
I'd definitely pay for a "typing analytics" addon to my OS, or maybe my
editor, though I think that is needlessly restricting things. It depends if
there are mistakes and advice that are specific to writing code versus just
general typing.

Either way, it could watch for bad habits and common mistakes, show
aggregating stats, etc.

------
eonil
Implementation's good, but the concept and idea is completely useless at least
for Objective-C/Cocoa. All the symbol names of the Cocoa are strictly designed
to be used with auto-completing _IDE_ support, not bare editor. That's why
they're fine to go such long names. The IDE is a required part for development
just like Smalltalk.

And a lot of other language/libraries/frameworks are also silently presume
auto-completion support. Even on C/C++. I highly doubt usefulness of this even
on other languages.

Maybe it would be more important to be familiar with specific auto-completion
IDE behavior rather than training yourself to type faster.

------
thatthatis
This is an example of a product I would buy, but would never buy as
subscription software. $60/year to infinity is about $600 at a 10% discount
rate.

Sorry, but it's probably worth about $25 to me, not $600.

~~~
ps4fanboy
I was also disappointed it was subscription.

------
lucb1e
Typed a few lines of Javascript, then hit ctrl+d to insert an EOF character
(this usually closes my node.js shell). Now I've got this bookmark :/

------
djent
Something that bothered me about this is the fact that I prefer to type
brackets - (), [], {}, <> \- at the same time, and then move my cursor inside
them to type. It makes sure I don't forget a closing bracket, and it's faster
than searching for the bracket + shift key twice (once at the open bracket and
again at the closing bracket).

------
pioul
I like how it can help dive into interesting open source code, as well as the
look and feel of the app, but two things are holding me back:

\- Like @padolsey, I do need some time to understand what I'm typing; I'm not
sure practicing typing and learning from someone else's code are compatible

\- More than code formatting, which has already been talked about, programming
environments also have a direct impact on what characters need to be typed

So even though that tool stems from a blending of two great ideas (increasing
code output, and learning from the best), I'm still pondering whether these
two would be best left apart:

\- Reading (and contributing to) someone else's code to learn from it

\- Optimizing your coding environment to increase your output: great
IDE/editor, clever shortcuts and auto-completion, custom snippets…

------
ddoolin
This is really cool. I love the UI and the idea and the execution. I actually
learned a lot of Objective-C without Xcode and no autocomplete so it was
interesting to see how I've learned to work with Xcode/AC since then, ha.

------
iam
I found this really fun, I tried half the languages there. But why do the
lower level languages like C/C++ have actual logic in them (e.g. if/else/||/&&
) while the higher level languages just have module/class definitions?

It's not exactly an apple-to-oranges comparison. Like I just got 100+ wpm in
Ruby but what's the point of feeling good about that when it's just typing out
a list of symbols over and over again?

------
austinl
I would recommend Type Fu as a similar alternative that's freemium and offers
more features atm. You're not typing code, but it can generate some
interesting data, and scales the difficulty level as you improve. It also
supports a bunch of different keyboard sets, so if you've always wanted to try
learning Dvorak it's a solid choice.

[http://type-fu.com/](http://type-fu.com/)

------
benzguo
Typing practice seems like a waste of time unless you're actually bad at
typing. Learn vim, use autocompletion, and write real code.

------
krick
Cool idea and everything, although all that "IDE FTW" comments are partly
true. But nevertheless it's cool to read code from different projects while
practising at typing.

But, _pricing_ , really? I guess I'll write such an app for myself. Not that
$5/month is a lot, but the idea of _paying_ for that is just ridiculous to me.

------
krick
Also, it's really annoying how every new service out there thinks that
everybody has google account. You want me to pay for your service and don't
even let me register there? Well, I don't have google account. And I never
will.

------
zarriak
The calculation for unproductive keystrokes should have typed keystrokes on
the bottom.

------
dsego
Croatian keyboards really suck for coding
([http://allixsenos.deviantart.com/art/Croatian-keyboard-
layou...](http://allixsenos.deviantart.com/art/Croatian-keyboard-
layout-2-265178713)).

------
arthulia
I find that covering up the next letter with the arrow makes this very
difficult.

~~~
sachleen
I was confused by it as well. It expects you to backspace and fix your mistake
before continuing.

------
shakeel_mohamed
FWIW this has been posted a few times already, nonetheless it's a great app

------
brianzelip
nice site; I like that they've implemented a css based laptop to show an
example in versus using an image. see [http://typing.io](http://typing.io)

------
notpg
I don't think typing is what slows me down while programming.

~~~
AJAlabs
I don't see the point to this.

~~~
notpg
As in, my typing is reasonably fast, but I don't think I need to practice
programming-style typing to increase my productivity. The logic, design, and
debugging is where my time is spent.

------
dapz
Does this have comparative summary statistics for these exercises? I did 45
WPM on the first Scala lesson; is this average, terrible, or good?

~~~
matwood
Good question. I did 44 WPM on objc and 51 WPM on java.

------
Daishiman
I like it. It would be nice to see a comparison to where you stack up related
to other people as far as speed and productivity.

------
maxehmookau
Not sure how much use the Objective-C one is. I spent most of my time in XCode
pressing tab, not actually typing code.

------
tunnuz
Probably whitespaces should be ignored (except where they are mandatory, e.g.,
Python).

------
clutchski
Touch typing is like cursive writing. I want to be able to do it, but I
probably never will, and I think that's ok.

~~~
nwinter
Are you a programmer? I wonder what you think of this argument: [http://steve-
yegge.blogspot.com/2008/09/programmings-dirties...](http://steve-
yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html)

------
Taurenking
Nice web app! One thing though, notify the user when he has Caps Lock on ;)

~~~
eric_h
What programmer has a caps lock key? It's mapped to Ctrl on my machine.

~~~
evincarofautumn
Any time I’m working in a C-like language and need to type something in
SHOUTY_CASE, usually macros/enumerations/constants.

------
creed0r
This is the most stupidest thing I could've ever imagined.

~~~
deeteecee
i don't wanna go that far and say that but... I saw this AND belt.io. and im
just not seeing any reason for either... like i've tried thinking for a while
and have thought of NO USEFULNESS for either tools.

