Hacker News new | ask | show | jobs
by leereeves 3750 days ago
I touch type ("ten finger system") but I can see a point to the argument that it's not necessary to program well.

Typing is only a small part of programming, and touch typing isn't a huge benefit even for that part, considering all the numbers and symbols used, auto-complete for identifiers and keywords, and macros for common idioms.

And it painfully overworks the right pinky.

3 comments

As a self-taught somewhat-ten-finger-system typist that bangs out 120 words per minute in English ...

I disagree. Being able to think through my fingers has helped a lot. It's hard to explain so let's use a driving analogy. Think back to how good your driving was when shifting wasn't muscle memory, when you had to think about the clutch every time, or when you had to think about just how much brake to apply and how much throttle in various situations. Or even when you had to think about how much to turn the wheel.

When all those basic tasks required higher-level brain function involvement. How much did you actually focus on the road? How much could you think about choosing the most optimal lane? Etc.

Even something as simple as keeping appropriate safety distance for the speed you're driving. When it becomes intuitive, you're free to think about other stuff.

Same for typing. When I think "string template" and `foo ${bar}` flies out on its own. That helps. It means I can think about more important things.

If you don't like my driving analogy. Pick up a skateboard. Or rollerblades. Or a hoverboard. And try to hold a conversation while you learn how to ride.

I completely agree, if you have to think about where to put your fingers to type, or look at the keyboard - then you're not thinking about the code you're writing (or at least, you're not 100% thinking about it).
I see your point. Typing is not the main part of programming, so just typing faster than your colleague doesn't make you feel that much more powerful.

Let me give you another example that maybe drives the point home better: Have you seen the videos of how Minecraft was made? A very short amount of time was spent on getting the I/O to the filesystem to work, of setting up a window and filling it with colors, of creating the basic 3D world. I believe that is a huge part why not everybody can write a successful game as Minecraft. Because I don't have trained the routines, I need to spend a considerable amount of time getting all these basic things done before I can start with an actual 3D game. Thus an experienced game developer is already done with his first demo in the time I am done with the basics. And at this point he has a demo to show for, I have nothing. So he even gains more motivation in the same time to continue, and he may even gain some first user feedback. This will make him code longer (huge benefit, I give up at this point) and he will also develop more in the direction that is fun for players (huge benefit two).

It is hard to connect directly the geometrical transformation math to making a game that is more for the players. It is in fact not directly connected. But if you don't sit down to learn the "boring math" you can't get there. That's what typing faster is for. It's not yielding benefits directly. But if you learn that, learn your text editor, learn your language, learn some design concepts, you will reach a level of competence that is not reachable without. Of course you could also do other things to get the ideas from your head into the computer faster, like voice input, or flow programming with touchpads. But then you need to get into these very well to get them out of your way as well.

> Let me give you another example that maybe drives the point home better: Have you seen the videos of how Minecraft was made? A very short amount of time was spent on getting the I/O to the filesystem to work, of setting up a window and filling it with colors, of creating the basic 3D world. I believe that is a huge part why not everybody can write a successful game as Minecraft. Because I don't have trained the routines, I need to spend a considerable amount of time getting all these basic things done before I can start with an actual 3D game. Thus an experienced game developer is already done with his first demo in the time I am done with the basics. And at this point he has a demo to show for, I have nothing. So he even gains more motivation in the same time to continue, and he may even gain some first user feedback. This will make him code longer (huge benefit, I give up at this point) and he will also develop more in the direction that is fun for players (huge benefit two).

I think Minecraft's success is mostly luck and doesn't really prove anything. A lot of very experienced game developers write games that fail, all the time.

You're right that as a programmer, when you start working on something you're not yet familiar with then there will be a period in which things that are routine and automated for someone experienced in that area are not yet routine for you and you haven't yet automated them. I just don't see that as particularly important. You learn how to do these things, then you automate them, and you've only needed a small one-off extra effort compared to the experienced programmer doing the same thing. 80% or more of the work of writing a program isn't solving business problems directly, it's writing the tools that make it straightforward to do the actual business problem solving. Most of the skill of doing this is transferable, and learning 10-20 languages really doesn't involve that much overhead.

Angry Birds' popularity was mostly luck and timing. Minecraft was doing something that wasn't very well represented in video games and touched on people's creativity, primed as children with Lego blocks, and helped create a whole new genre. I don't think there's a parallel universe where Minecraft was created and did not become a hit.

Sure, he did get lucky that Penny Arcade (and Kotaku, and a bunch of other sites) covered his minecart rollercoaster video to get that initial burst of attention to his project, and maybe you could argue that it was lucky that he stuck with the project's development for two years in relative obscurity for it to get developed enough to help reach its overnight success.

However, I definitely feel it was a novel enough of an experience that it would have eventually found a way to hit the mainstream and been a big hit regardless.

No, I haven't seen those videos, but they sound interesting. Could you provide a link?

I agree a mountain (of trivia, routine tasks, and communication barriers between man and machine) stands between our ideas and working code, and it's essential to deal with all that in some way.

But there's more than one way to do it.

> And it painfully overworks the right pinky.

Wut?

I've been touch typing for years, and none of my fingers have experienced any strain, or ever been overworked. In fact, the reason I learned how to touch type was to _reduce_ the strain on all my fingers.

Perhaps it depends on what you're typing.

The right pinky is used for the most common symbols, and for the ENTER key. It's really bad in C/C++, with {} and [] and ; and = and _ everywhere.

Or maybe it's just different between individuals.

Interesting, I touch type okay enough but don't use the pinky for symbols/ENTER. I use the ring finger of my right hand for symbols/ENTER and and the pinky for just the shift while pressing symbols with middle/index finger. I use pinky on my left heavily though, I wonder if it's a sign of anything (unbalanced typing?).
If you use some symbols very often it makes sense to put them somewhere more accessible. For me { is Alt+j and } is Alt+k, [ and ] are a row above. Creating a custom keyboard layout is very simple.
I use my ring finger for those keys. It's much easier.