For programming, I've found that my time spent navigating the code dominates the time I spend editing it. Bram's recommendation is to generate a tags file right away for every project to keep this time down, and it's excellent advice.
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.
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 must ask: how many people actually use the right shift key when typing? I have grown accustomed to only using my left and was wondering if others shared this behavior.
I touch-type, so I alternate left and right depending on which letter I have to capitalise, i.e. I tend to use right shift for left-hand letters and left shift for right-hand letters. Except that being right-handed means I favour the right shift and use it also for letters typed with the right index finger.
I use both shift keys. Left shift key when the other key I need to press is on the right side of the keyboard, and so on. I also use both of my thumbs to press the spacebar.
A couple of things to watch out for when you are using these three steps:
"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...
I'm surprised this isn't the first. But I guess this is a clear given. Everyone should learn to touch-type, it's so easy and gives your mind the freedom to concentrate on whatever it is you are trying to accomplish instead of finding characters on the keyboard.
I'm very happy I attended an optional touch type class in high-school (on typewriters, actually). My recommendation for kids would probably be to learn to touch type, on a better layout (eg dvorak, colemak, workman).
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.
Absolutely. I learned touch typing on my own during my O'Levels years when I bumped into a DOS-based touch typing tutor. It changed the way I looked at computers.
Ergonomic typing is usually part of the touchtyping class. At least when I was in school 30 odd years ago. I think it was obligatory for everyone but can't remember any grades. Most didn't bother though. (Sweden)
I've worked with a number of engineers in Europe who couldn't type without looking at the keyboard. I assumed that it's not part of every school curriculum there. Or maybe they learned and then went back to hunt-and-peck afterwards.
Is there a lot of variability in international keyboard layouts? I'd expect the base 26 letters + digits to be pretty consistent, but in countries with a lot of accented or alternate characters I could see touch typing being less attractive as a student.
Anyone. I didn't learn to touch type and I'm about as fast as a touchtypist. Indeed, my typing speed went down when I started learning and because I didn't finish, hasn't really recovered since. 99% of programming is thinking and structuring though, so touch-typing isn't all that useful.
I looked at the PDF paper and the results and I don't agree with the conclusions being drawn. The main issue I see from cursory skim is that the 30 participants had a range of typing speeds from 34-79 WPM. I don't consider these individuals typing specialists or professionals based on the low WPM. Now if you consider professionals where they have a requirement of something like 90+ WPM, then I think you are going to see very few people who are not touch typists because it'd be very difficult or maybe even impossible to reach those WPM without touch typing.
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.
> 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.
> then I think you are going to see very few people who are not touch typists because it'd be very difficult or maybe even impossible to reach those WPM without touch typing.
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.
> ...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 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).
Not to mention that when assessing the productivity of information workers, you must also consider the vastly faster feedback loop of seeing what you're typing on the screen in real time, rather than typing in bursts then looking back up in the stream.
I wonder what it is with hacker news and the inability of people on it to understand simple dramatic exaggeration.
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.
Everything. Touchtyping is just not a focus in school any more. Teachers look funny at you when you ask when the kids start touchtyping. They are expected to figure it out themselves. Very funny.
Most autocomplete functions just confuses my fingers and I end up either deleting and retyping, missing a character somewhere or I type faster than the slow autocomplete can fetch data... The linux prompt for autocomplete path and filenames are usefull though.
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.
Admittedly, I had look up what was meant by touch typing; taken literally, how else would typing be performed--osmosis?
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.
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