As a developer, the code I commit during a typical workday varies greatly, but about 8000 characters of code might be an okay estimate.
Before I le...
For further actions, you may consider blocking this person and/or reporting abuse
Touch typing? Absolutely.
Vim? Sure. It's available in all macOS & Linux systems and easy to install on Windows or most major IDEs. I can still use a non-Vim editor just fine.
Non-QWERTY? I can't justify this. The issue for me is portability: as soon as I want to use a public computer or a coworker's computer, I'm fumbling trying to remember the old muscle memory. It also prevents anyone else from using my machines (which, admittedly, could be a positive). Also, I can't easily rearrange the keycaps on a laptop, which is mildly infuriating even if I never look at the keys.
Speed can be compensated with practice. Ergonomics can be compensated with keyboard designs.
I would not recommend switching from QWERTY to COLEMAK to anyone that already can type on QWERTY.
In my case, I struggled to get rid of some bad habits because I was already used to type on QWERTY but without a system.
Therefore changing to COLEMAK helped be to "reset" my muscle memory.
That said:
It's not that bad. On newer macOS versions as well as on most Linux Distros you can change your Layout to COLEMAK with a couple of clicks in under 10 seconds. If someone needs to use my computer I can switch it back in the same time.
If I have to type on QWERTY I'm still fast enough to type a couple of lines on a public computer. It actually helps if I deliberately look at the keyboard while typing.
I never bothered changing the keycaps. The only scenario where this causes some minor inconvenience is if I need to hit a single key out of the blue without being able to position my hands on home row before.
Great point with the Non-QWERTY keyboards.
Even when it comes to Vim, I have co-workers who have customised their Vim config just enough to have it wreak havoc when they jump onto other keyboards (even something as small as re-mapping the leader key).
I've been using COLEMAK for several weeks and wishing I'd done it years ago; it's incredible how much easier it is on your hands. Everything just makes sense (although there are a few mildly awkward patterns here and there). I highly recommend to try it out to everyone who can afford the adjustment period and primarily works on their own machine.
In college I took a semester (10 weeks) of typing. We met 3 days a week in a one hour class led by a professional typing instructor. Total class time was 30 hours.
Total homework practice was about 90 hours.
This amounts to 120 hours of work total.
The payoff has been 30 years of excellent work as an IT Software Developer . One of the best investments in my life.
I honestly had to look up what touch-typing was. I assumed some crazy 10x developer typing technique.... then realized it was the regular home-row thing I was were taught in high school.
Is typing not taught in school? It was literally the only computer class I had (they had computers, but clearly didn't know what to do with them). I am suddenly wishing I was working near my colleagues, just to see how they are typing. I am stupefied find out that touch-typing isn't necessarily how they are working, this would be much harder, but I guess not unusual.
Don't know how things were in your school system, but for me, typing classes were an elective. Also, in my typing classes, I was one of the few men (actually... boys) in the class. It was treated as something that was taken by those who were expecting to become secretaries. But oh mannnn, am I glad that I took those typing classes. They are the single-most utilitarian classes that I've ever taken - in any subject.
Exactly, that's what I'm wondering, if it is not always taught now, with the assumption that kids just figure it out. Looking back, it probably was treated a bit like an office trade-skill, but I agree, it was probably the most practical thing I learned in school, especially given that I can take it for granted.
Great post, I can definetely relate!
I'm now only a year away from my bachelor and yet, started learning touch-typing only two months ago.
I never learned it at school and for some reason never had the motivation to do something about it myself. It was kind of like eating Asian cuisine with sticks - the way I did it was not the official and most efficient way, but it seemed to work for me.
Until at some point I came to the conclusion that, as a person that is planning to get more into software development, I simply have to acquire that skill at some point. Might as well be now.
So I started taking some online-classes and boy: my writing became frustratingly slow at that time. Re-learning something is truly a lot more difficult than learning something from scratch.
Eventually I became faster with time. I am still in the learning process. Yet my writing speed has hugely improved even now. Also, I'm more convenient with hitting the right keys.
What I found out as well is that the right or wrong keyboard can make a huge difference!
Keep it up. It's hard but you will benefit from it every day for the rest of your life (:
Typing is definitely an important software development skill, but hardly the most important one. I do plenty of typing, but I do far more thinking, analyzing and discussing (most often resulting in less typing). If I typed at half the speed, that would be much less of a problem them if my logical and critical thinking skills were only half as efficient.
As I see it, typing is a job description for software developers in the same way that writing emails and sitting in meeting rooms is a job description for managers: it might cover a fair part of their spent time, but it's not their main skill, nor the key to their added value.
That's not the point of the article though; It's not about effectively saving time over the day, but not losing your line of thought in those rare moments when you actually do have to type a bunch of code.
The point is that typing needs to be friction-less, so it doesn't get in the way.
Fair point. I've seen far too many people obsess over perfectly minimizing the amount of characters that they type (rather than optimizing their high-level flow), that that's what I read into this article too.
I started learning typing at a young age, but didn't get serious about it until I knew I was going to end up in tech around my early teens.
At that point learning to type was more about being able to type something in chat before I was about to re-spawn in Halo than learning any valuable skill!
Even then I was able to type decently fast, with bad habits, and looking at the keyboard. This worked for a good while as I knew what I wanted to type, and just needed some visual feedback. I slowly was able to look less and less at the keyboard over time, but I never found it to be that big of a deal.
I only really had to commit to touch typing once I got an ergonomic split keyboard, where "reaching" for other keys became impossible as the distance went from an inch or so to almost a foot between where my hands were placed. Such a setup bashed out the rest of my bad habits. Even today if I have to type a
&&
or*
I'll probably look down on my keyboard to double check the placement of those keys. Does it hurt productivity? Maybe, but so does spelling variable names wrong, and not thinking of a good name in the first place!Now I'm not sure if touch typing is the most important skill developers don't talk about, I think communication is probably the #1, as you can type slowly, but be more effective when you type. You also can be writing code that is highly complex, where typing it is actually the "easy" part.
As for QWERTY vs COLEMAK, as some of your other commenters have already noted, I would not recommend this if you're already very proficient in QWERTY. I would also be hesitant to even attempt this because I can't count the number of times that I've had to walk over to someone else's keyboard and sit down to crank out a few lines of code. (Often, when we're in the middle of a troubleshooting session, I say something like, "Here... do you mind if I 'drive'?") And obviously, if I was trained in COLEMAK, that would be incredibly awkward.
However, I must ask: Do you know how we came to have a (default) QWERTY layout???
QWERTY was created with the express intent of being inefficient! It's true. You can google it. You see, back when all typewriters were manual, and all data-entry was done on typewriters, if you hit the keys too fast, you could jam the lever arms together as you were typing. So one way to minimize this problem was to put the keys in a configuration that was sub-optimal. Of course, with enough practice, any configuration can be utilized in an extremely fast manner. But QWERTY kept most "casual users" from jamming the machine.
QWERTY has been proven to be less efficient than other configurations. So... since none of us are typing on manual typewriters anymore, why haven't we moved away from QWERTY?? The answer is that it's a textbook example of "entrenched standards". The (societal) cost of trying to switch simply isn't worth it. So even though QWERTY is demonstrably inferior, it will probably never go "out of style".
This is completely untrue.
And most of it comes from debunked dvorak propaganda. :)
smithsonianmag.com/arts-culture/fa...
I learn something new every day!
Code quality is infinitely more valuable than code quality. Indonr see how touch typing is relevant at all but I might be missing something. Most the time coding should be thinking and designing not typing. Typing is kind of a small part of it.
I'll admit that when I'm coding, no-look typing is probably more of a "nice to have" than a necessity. I say this because most coders spend the vast majority of their day reading code (and, obviously, understanding it) rather than typing code.
But I definitely would not say that "touch typing" is irrelevant. Most coders still spend a good portion of their time (too much time) doing "other" things on a keyboard - writing emails, specs, chat conversations, etc. Touch typing allows me to crank out a high volume of detailed info in an incredibly short period of time.
Even when I'm doing "pure" coding, sometimes it's incredibly valuable to never have to look at the keyboard. You know those periods - when you know exactly what you need to crank out and you're "in the zone". During those times, I find it incredibly useful to be able to get all those digital characters on the screen without ever having to look back at my keyboard.
once you get used to not looking down at all whiel typing, you almost forget the keyboard is even there and focus on what's on the screen and on your own thougts, which to me seems very helpful in staying focused on the important parts of programming: the logic. Sometimes I even close my eyes for a few seconds while typing to structure my thoughts into something I can actually turn into code (or words, when I'm writing prose)
I have been working on my touch typing on keybr. It's great so far. I already am seeing great benefits, but struggle to touch type outside of practice.
I was mostly a two finger typer for years, made an effort a few years to get better and benetited greatly from it. Making another run at it now.
One thing keybr has highlighted that most of my issue is in my left hand. It's so uncoordinated.
Idk if I understand the reasoning behind COLEMAK... Did a little reading it just puts most commonly used letters on the home row. The history of QWERTY is important though as it originated as a way for keystrokes to be from different sides of the typewriter so that you could type more efficiently without the risk of the strokes crossing each other. I can imagine that QWERTY is and should be the logical choice, mainly because it's the defacto standard. Then again I learned close to 30 years ago to "touch type".
As this article points out though. You can type as fast as you want ramblings, but thought needed typing is slower anyways. So stick w QWERTY
Touch typing is indeed huge, but I think you're missing a non-obvious reason why it isn't talked about: A non-negligible number of people learn to touch type alongside learning to program. I was like this (I could barely manage 10WPM in school, now I can type so fast that I have to limit myself just so my keyboard can keep up), and many other people I know are like this too, they either learned to touch type as a side-effect of learning to code, or got exponentially better at it as a result of learning to code.
Keyboard layouts, however, are largely pointless for many people. Aside from the portability aspect, many people aren't actually limited by the keyboard layout as much as a lot of people seem to think. The limiting factor is often the hardware not being able to keep up, usually due to either poor rollover properties, or the designers cutting corners under the assumption that certain sequences of keys are not likely to be used. I've actually tried multiple alternative keyboard layouts over the years (Both Colemak and three different Dvoark variants (classic, one-handed left-side, and the programmer variant), and none of them, even after practicing enough to touch-type without having to focus, actually improved my typing speed enough to matter. The only time I ever got close to enough improvement to consider was testing a Velotype PRO (a rather interesting syllabic chording keyboard design), but you need actual hardware for that, and there's no way I'm shelling out more than a thousand dollars on a keyboard that can't even really be used for coding.
I don't think changing from QWERTY to COLEMAK is worth it.
But if you typed with less than 10 fingers without a system on QWERTY for a long time, it's possible that the habits you formed make it actually more difficult relearning on QWERTY and it is easier having a fresh start.
Nowadays you can change between COLEMAK and QWERTY within seconds on modern operating systems.
I will agree with the touch typing and also with the VIM (I'm actually still practicing both moving over from the beginner phase).
But the changing keyboard layout is something I could never agree with. Cuz like you said, it'll take a considerable amount of time to get used to and I don't only use one pc and sometimes I don't have access to any of those (being the personal or the work one).
So the first 2 skills are usable in pretty much any scenario and it's true that once we achieve a level of proficiency on both, writing code (or anything else) just flows naturally.
Learned Touch Typing (1 month), Colemak DH keyboard layout (1 month), and Vim/Neovim last year on top of my full-time job as a Software Engineer. Really worth the effort and suffering. As a book author said, these stuff are more of an emotional challenge than physical/technical one. You'll really feel like shit in the first few days, but it's expected, and you must persevere and strategize. These stuff led me also to more productivity hacks using Karabiner Elements and/or Better Touch Tool apps.
Been a Colemak user for over a year, I must say the typing experience is good. Although you somehow spend saved typing time to config apps that navigate using the default QWERTY layout (Vim for instance, but that easy to fix)
I just type instinctively and still somehow get 82 WPM.
I do use most of my fingers while typing, which I assume is the most important part, except I rarely use my little fingers for letters and instead keep them mostly reserved for the shift key.
Most importantly though, I've noticed that typing speed does automatically increase when you stop looking at the keyboard, as you save the time of visually targetting where your fingers need to go, and it allows you to focus more on the text in front of you, which is usually what you care about.
EDIT: After breaking my last keyboard, I decided to not get one of those glowy gaming-keyboards, but a simpler design. I ended up getting one that had completely unlabelled keys (Das keyboard 4 ultimate, in case anybody cares) and on top of looking pretty nice, it made me realize that I was still looking at the keyboard when placing my hands on it to start typing, which is probably the most crucial moment after having a thought to not get distracted. A few days later, I was used to just feeling for F and J without taking my eyes off the screen :D
(Fun fact: As I was typing the above paragraph I spent at least half a minute looking out the window while typing, which I found helps me a lot with focussing on what I'm trying to express.)
VERY interesting post on a (seemingly basic) aspect of coding that most coders never talk about. When I was in high school, I took two semesters of typing, during which I got to about 70-80 WPM, and I've pretty much been there ever since. At the time, I didn't take those classes thinking "this will be a key part of my professional life". I took them basically because I had to fill out my course schedule.
But I've said, on many occasions and to many people in the decades since I took those courses, that the single most-useful courses I've EVER taken were: typing. Given my career field, many people would assume that my "most useful" classes would have been computer-specific, or, maybe, math-specific. But hands-down, the most utilitarian skill I have EVER learned is... typing. I'm a programmer. And a writer. And a general computer addict. And my hand is hovering over a keyboard for most of my work hours. And during every one of those hours, my typing skills keep paying me back over and over again.
When I first got into computers in college (back when dinosaurs roamed the earth and microcomputers were just coming out), I quickly figured out that one of the best things I ever did was to take two typing classes in high school. I never tried any alternate layouts (the one I saw hyped back then was Dvorak), but I had fun dealing with ASCII layout vs Selectric layout (they're both QWERTY, but the difference is in the shift of the upper row number keys). That's less of an issue now that Selectric layout won out, but I had a programming job where I was regularly having to switch back and forth. I eventually got to where I could acclimate to one or the other after a few minutes. Nowadays, the most irritating aspect of layout is the placement of the \ key. I've gotten so used to the rectangular enter key with the \ key above it that I make sure the keyboards I buy use that, instead of having an L-shaped enter key and the \ key elsewhere (usually to the left of the backspace key).
And, yes, one of the major advantages of touch typing is that you have to think a lot less about typing, and can just think about the code or command you are doing. I don't know what my typing speed is, but I've gotten comments about how fast my keyboard speed is.
Interesting ... I'm a horrible typist (hitting the wrong keys ALL the time, it's quite embarrassing TBH) but somehow I still don't believe it impacts my productivity nearly as much as other things do (e.g. focus and being/staying "in the flow").
Oh, and I do like VIM and am reasonably productive with it (as with keyboard shortcuts in general).
Thanks for the post, I loved reading it. Especially the resources for helping learn. I had been looking for a few basic not-so-gimmick-y options, and these two look like they fit the bill.
Nice to see Colemak being mentioned! I've been using it for over 10 years and had no idea if it was still a thing among others!
I took a typing class in 7th grade, with mechanical typewriters, before computers. In retrospect a wise investment, probably the skill from high school I value most today.
The simplest way is to use chat rooms in the dark. :)
It is true, all the time I tell my team to use all fingers to write. Some use only 2 fingers, others cross their hands.
Thanks @davidsanwald Interesting.
I was thinking about typing skills for developers recently.
Could you please include a definition of touch-typing in this article?
I think there's no sharp/exact definition.
Just have to say, that I was able to type without having to look at my hands even before having learned propper touch typing. That said being able to actually type using propper 10 finger technique feels very different from the way typing felt before. Sure I could type without having to look but it still required much more attention compared to now.
Here's a good resource for touch typing code syntax: typing-code.com