Isn't there a saying "weeks of programming can save hours of planning".
Plus a decent IDE will eliminate the need for this type of thing.
Isn't there a saying "weeks of programming can save hours of planning".
Plus a decent IDE will eliminate the need for this type of thing.
I am convinced, although only based on anecdotal evidence, that a lot of the vim/other-editor vs IDE debate is significantly based on how fast you can type.
2. There are a significant number of programming tasks where the typing-to-thought ratio is relatively high. Refactoring is one. Debugging is another. UI code, or anything with a tight feedback loop to something visual, and particularly CSS, is another. In my experience, the faster you can type, the more likely you are to solve these problems by trying things, rather than attempting to guess what is happening in your head. IMO the former is radically more productive.
3. Slower typers tend to look for GUI tools for things that are probably best used from the command line (git is the paradigm example here).
I am passionate enough about this that I have gone as far as organizing typing speed competitions on my team.
Obviously there are exceptions to the rule. I have also worked with excellent programmers who can barely touch type, although they still suffered from some of the above issues.
There are numerous ways to achieve results here, and typing speed falls behind simple automation in many cases.
Getting a habit to automate away repetitive tasks is, in my eyes, the number two skill a programmer should develop and rely on.
(Number one being relentless improvement of skills.)
I might agree for a few cases of repetitive refactoring, but debugging? Definitely not, that's really something where you spend 99% of your time observing, conjecturing, thinking.
Edit: Oh, I had not read the following sentence with care:
> In my experience, the faster you can type, the more likely you are to solve these problems by trying things, rather than attempting to guess what is happening in your head.
That's not debugging. It's just trial and error until the output randomly happens to be the expected thing. That's a terrible way of doing. Gee... if you don't understand what is going on, you cannot consider the bug is fixed. You may even have introduced more problems than you corrected. What's wrong with thinking to sort the problem out once and for all, instead of rushing anywhere like a headless chicken?
But it seems to be the current method, especially in web development. It probably explains a lot of things about the sad state of those applications.
And if you don't know all the hot keys they know, then they will probably think you are ignorant. It's unfair, but happens.
“In the early days of Silicon Valley, there was an annual programming contest on Memorial Day. When Donald Knuth (the world’s greatest programmer) entered, they gave him an old batch computer to work on. He had to carry punch cards back and forth. The others, great programmers of the time like Alan Kay, John McCarthy; got the ‘modern’ time-sharing systems.
“Donald Knuth had that old, punch card computer, but finished his program an hour before anyone else, and his algorithm was the fastest executing. They asked him how he did it so well, and he said, `With that kind of computer, you think carefully before typing. You don’t want to make mistakes, like carving in stone.”
Sounds like your old programming friend has learned that lesson.
Pretty sure he meant it the other way. He doesn't want to work with people who would judge him for typing slowly.
In Visual Studio C# land, long identifiers are compensated by really good autocomplete. Most of the characters on screen aren't hand-typed. Frankly, if we're going to have computer-aided-software-engineering then the computer can damn well do the typing too.
Could someone like Steph Curry or Kobe Bryant be an effective basketball player if dribbling the ball took conscious effort? Probably not.
Code is typed. Typing it slowly slows you down. Just like a slow compiler does or a slow IDE or even a slow computer with spotty internet.
Remove bottlenecks until speed of thought and imagination is the bottleneck.
It's possible that typing is a bottleneck, but I bet if you calculated your actual keystrokes, you'd find that it's very few words per minute.
The point is that you shouldn't need to be particularly fast.
There is a different side of this coin, actually. Having a compiler that takes a really long time to compile the code gives a different type of friction than a compiler that works blazing fast. The former makes the programmer want to avoid unnecessary compilation, which works amazingly well for some types of people (I am this type, so I speak from experience).
Though this doesn't work for a text editor, I believe. Editor should be as powerful and fast as possible, and I wouldn't trade my Vim for anything else (maybe Emacs, but I'm too deep to go back and invest in learning it, only to discover that I got no further than with my current setup).
Edit: Spotty internet connection has its good side, too. One learns to read locally stored documentation instead of relying on StackOverflow, which is a big gain in the long run. Similarly slow desktop computer: if the program runs acceptably on my (slow) machine, it will be so much faster on something better. (Though I only write command line tools and network daemons, so I may be biased here.) All boils down to friction profile, which bubbles different things up to the surface.
Slow typing doesn't capture your attention, if you touch-type. Your hands are typing while you go on thinking.
If you get to the point where typing is the bottleneck you are not thinking enough and you should be working on some more difficult problem instead.
Building simple things that solve real problems pays really really well.
I think there's something to the idea that typing faster could help you think faster when it comes to text, but not sure it applies to software development.
If you know you want to type "for.bar(new Baz(qux))" and you have to wait for a menu after ".", after "new" and after "Baz(", the line mat take 6 seconds rather than one.
Even if this is not an issue, most IDEs require you to know lots of keyboard shortcuts by muscle memory to be efficient anyway.
VimSpeak: https://www.youtube.com/watch?v=TEBMlXRjhZY
Using Dragon: http://ergoemacs.org/emacs/using_voice_to_code.html
Using Kaldi: https://www.reddit.com/r/speechrecognition/comments/5p3uxb/p...
This toolkit seems to be the most widely used: https://github.com/dictation-toolbox
Better predictive typing would also be useful. Computer languages often greatly narrow what you probably want to type next, because of scope, for example.
You still want predictive typing, for example. If I want to refactor a variable name, indent a region, or create a class from a template, having a smart assistant that could be invoked with voice would be helpful.
As for people being able to type faster than voice recognition, I think voice recognition at 100 won would be fine for most people:
https://www.ncbi.nlm.nih.gov/pubmed/10166812
It certainly would be nice on my iPad.
I can't really think about a problem while I'm typing. I can think, or I can type what I've already decided to type. Worse, the longer I'm not thinking about the problem, the more I lose my place. So for me, typing speed is critical. I need to get the part I'm working on out as fast as possible, so I can get back to thinking about the problem.
Now that said, we tend to justify the abilities we have, and discount the abilities we don't. I'm a very fast typist, so I do have some skin in the game to think typing is important. I suspect that people who are not fast typists also have some impetus to think that typing speed is unimportant.
Nonetheless, I do think what I said above is a factor, at least for some people.
On the other hand, if I can make typing less of a strain, my brain will find better things to do, like thinking ahead. I'll try working without looking down for a few weeks to lose my habit of looking at the keyboard. I've had partial success in the past, but with some keys I never gained the motor skill. The most annoying for me are the keys 9 and 0. I always fumble on these when I try to reach them.