Typing.io: Typing Practice for Programmers
typing.io
typing.io
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.
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.
Intellisense in general is kind of expected now in any IDE; it is like the buttons in your car to slide down your windows (old enough to remember the handles :) ), they are nice and expected but you wouldn't base your buying decision purely on that.
Who are you arguing against though? Nobody ever made that claim, or as far as I can tell, even implied it.
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.
I don't think so. We ought to be able to describe our own experiences without making a claim about productivity in general. It seems clear to me that peeters was doing exactly this, and not implying that his experience ought to be indicative of others.
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.
Probably less about typing, then, though.
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.
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.
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.
The bottleneck in programming lies in designing something that works correctly, understanding someone else's design or legacy code, designing test cases, debugging problems, addressing performance issues. It is a brain-bound problem, unrelated to motor skills.
I have never thought "this project would have succeeded if only everyone on the team had been a faster typist!"
On the other hand, when we are on the same page, slow typing is seldom a problem.
Seriously though, were there any useful ideas developed regarding code input besides code macros with variables? Any hints?
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) (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.
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.
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.
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.
Either way, it could watch for bad habits and common mistakes, show aggregating stats, etc.
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.
Sorry, but it's probably worth about $25 to me, not $600.
- 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…
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?
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.