Vim: Seven habits of effective text editing (2000)
moolenaar.net
moolenaar.net
https://news.ycombinator.com/item?id=15532457 (~2 months ago, 237 comments)
https://news.ycombinator.com/item?id=4620065 (~5 years ago, 66 comments)
All submissions: https://news.ycombinator.com/from?site=moolenaar.net
The problem with this, however, is that it's a pain to remember to generate and update the tags database. Thankfully, you can configure Git so that it builds a tags database for you automatically whenever you clone a repo, and updates it in the background every time you commit, pull, or push.
Instructions here from Tim Pope:
http://tbaggery.com/2011/08/08/effortless-ctags-with-git.htm...
I'm partial to GNU Global, myself, which adds a basic "find references" command, slightly better parsing, and incremental DB updates. Also relatively easy to set up for effortless navigation:
"I want to get the work done, I don't have time to look through the documentation to find some new command". If you think like this, you will get stuck in the stone age of computing. Some people use Notepad for everything, and then wonder why other people get their work done in half the time...
It's not directly related to vim, but... Some tool you use will always seem extraneous to someone further down the stack with more experience than you...
I remember at the beginning of my coding career asking a software engineer what IDE was the best and getting back the answer, "you don't need one, you can do everything in NotePad if you want."
(Suffice to say the impetus to go home and want to start coding from a blank NotePad file that night was dead on arrival.)
Now, if he had asked me why I was asking what IDE was best, I would probably have said "I want to create something as quickly as possible that helps me understand what code does," and then I would have been off to the races. Googling and learning along the way...
https://phys.org/news/2016-02-ten-fingers-fast.html
http://www.i-programmer.info/news/99-professional/9427-you-d...
https://pdfs.semanticscholar.org/c366/89b3803e8744b14bc50998...
A more realistic estimate would be something like 40%. When I choose to, I write C or Erlang, so there is generally not much boilerplate needed in making things go. I would say 60% of my work is architectural stuff. How things should be designed, named, structured. What parts should plug into what, what functions and set of systems of POSIX to use, what makes most sense for future reading, etc.
I think a better conclusion to draw from the study is that touch typing isn't as useful for the lower end of the WPM spectrum. For example, if you are typing at 50 WPM, touch typing vs non-touch typing isn't going to make too much of a difference. The fastest typists in the world though are touch typists.
https://www.youtube.com/watch?v=m9EXEpjSDEw
As for
> 99% of programming is thinking and structuring though, so touch-typing isn't all that useful.
I don't think typing speed is the biggest factor in productivity in programming, but I think you are downplaying it too much. Effective use of keyboard shortcuts, using vim, and having a high WPM typing speed has noticeably increased my productivity.
Anecdata, but: I got ~160 WPM without learning touch typing. I was a regular computer user from the age of 12.
...what? What kind of error-rate? How long could you sustain that? How'd you manage that speed having to glance between source and keyboard?
I'm pretty sure I was the fastest in my high school typing class (because I already knew how to type very well by then) and at my best I could stay a little over 100wpm for a minute or two without any errors, but it was hard. I could maybe get up around 120-130 transcribing speech and letting minor errors slip though. I doubt I get much over 90wpm at my best these days but it's still fast enough to draw the occasional "whoa!" from people watching me. 160 seems... crazy if you're not touch typing, and way above normal even if you are.
[EDIT] sorry about the tone, I'm not saying you're lying, that's just... wow. Crazy fast. Must have really surprised some people, haha.
I'm not sure what kind of error rate. Currently without complete formal training (I did the first stage of Mavis Beacon maybe twice about 6 years ago), I'm at probably 90WPM and I can write without glancing between source and keyboard (Actually, something I like doing is typing while looking directly at someone else. It creeps them out :^) ).
It was weird because the incomplete formal training has actually increased my error rate, I'm using more fingers than I originally did (originally I used maybe 2 - 3 at most) but different fingers like to "step-in" now, which makes it more difficult. It doesn't help that I've switched between QWERTY and workman's layout several times (I can never seem to get the vim bindings nice :c).
Either way, proper touch typing is more than typing fast, it's also about "sustainable typing": posture, strain, reducing rsi - as well as being free to copy (read text to type in, not having to look at the keyboard or the screen where typed text is displayed).
I've not met many people that proper touch type, even programmers. Even if being able to copy a page of example code from a magazine/book is a useful skill.
One last remark to remind you of what happens when people ignore all the above: I still see people who spend half their day behind a VDU looking up at their screen, then down at two fingers, then up at the screen, etc. - and then wonder why they get so tired... Type with ten fingers! It's not just faster, it also is much less tiresome. Using a computer program for one hour each day, it only takes a couple of weeks to learn to touch-type.
Didn't realize that it meant typing without looking at the keyboard. Would have thought this was a given, but in hindsight, I suppose the prevelance of the touchscreen interface probably has something to do with my false assumption.