Are there, really, developers whose productivity is first and foremost constrained by how fast they can type? If so, what else is known about them? What class of problems are they working on?
It's not about how fast you can type, it's about how effortlessly you can type.
Programming involves long periods of thinking interrupted by short periods of typing. Anything you can do to reduce the mental effort of typing reduces the impact of this interruption to your train of thought.
Try programming by hunt-and-peck typing -- it's certainly possible, but having to think about putting each individual character on the screen is incredibly tedious and distracting. This is why people learn things like Vim motions or minimalist keyboard layouts -- anything that speeds up the feedback loop between your brain and your code is an improvement. It's not a drastic difference, but it's significant enough that I now feel mildly annoyed using a regular keyboard when I have to move my whole arm to reach the arrow keys rather than having them right under my fingers on the home row.
For me its not how fast I can type, my brain(ADHD or whatever this is) needs certain flow of speed; I think of something and want to type it, if I am delayed (e.g. imagine I change from qwerty to dvorak and am still learning) for whatever reason, e.g. key is stuck, my mind goes somewhere else, and then I have to "bring it back".
Also as I am typing one thing I am thinking of another, or even third, so if something goes wrong with the mechanics of the first thing, then whole set of dominoes fall and I have to go back.
Sometimes for a given thought I even type 3rd of 4th word instead of the first if for some reason my keys are not pressed. And then I type a word from the next thought and etc. It even gives me anxiety.
As I am typing the code, I am thinking about the code that is going to use the it, and then the code one layer up, I also think of the machine itself, its wires, cache lines, or I think of how the variable I am typing now is related to its surroundings, I imagine a ladder to the moon each step with its address, and I think how far are things from "me", and so on.
I cant speak of others, but for me keyboard layout and even key feeling/rythm is important just because it allows me to think uninterrupted.
btw thats why I hated the old butterfly keyboards, a tiny crumb gets in and then the probability of a key drops to like 80%, or sometimes it double presses.
I am very happy that apple moved away from the quest of making the keyboard 0 height.
I'm one of the people that uses neovim, a tiling window manager on nixos, and a weird split keyboard.
It's true that it will lead to healthier wrists and more productivity, but thats not the point. I know people with incredibly unergonomic setups and habits (vscode with membrane keyboard and a chronic overuse of the mouse) that get around the same or more actual features implemented as me. There might even be something to be said for more friction forcing you to think more.
The reason most of us do it (at least if we are honest with ourselves) is because it's fun---and that's ok. Jumping around in vim on a split keyboard gives me the same joy that watching my first lines of code execute in Gamemaker Studio 2 did in 8th grade.
It's always worth investing to make your work joyful.
I have a really similar setup to yours. NixOS, Niri, Draculad. I think being forced to use something like Windows 11 with something like VSCode would be very frustrating long term. Mostly the looming knowledge of we can do better, we have done better.
I used to think that typing speed was not really that important, especially when now we have so many LLMs doing the typing for us. But honestly, now I think it's even more important because the specificity and detail in your prompts are paramount to getting a good response, and something like a dictation tool (which is what I'm using right now) is really good for generating very specific prompts.
In fact, I wrote all this out using a dictation tool in ~20 seconds (258 WPM).
Agreed. I installed Whisper on my Linux computer with a program called SpeechNote. The dictation is all done offline, and it is astonishingly good.
I also have a whisper dictation app on my Android phone (the app's ID string is 'org.woheller69.whisper', there's a few Whisper apps with the same name "Whisper", but this one is my favorite).
FWIW this was typed by hand on my phone, but these apps are both amazing.
Built one for myself. It's context-aware and promptable.
Tested well on Linux, not so much on other platforms but in theory should support them.
It's a bit meta but I wrote it mostly using Claude Code. Once I had an MVP, I was able to prompt much faster by just speaking out what I wanted it to change.
I find fast typing is super important to my programming, not because I need to write walls of text, but because if I get into a flow state, I find it irritating if my thoughts are constrained by my typing speed.
There's a lot of ignoring your question and telling an anecdote - some nice anecdotes, though.
I'd guess the answer is yes. If someone (somehow) gets into a junior dev role, has no to little experience, and hunts and pecks 20 words a minute, they'll have to get that up to 50/60 surely before they can be a more normally functioning member of a team, right? I think in some bad cases it could be priority number one.
If your job is producing text in files, you tend to need basic proficiency in typing.
I guess you're rather imagining a really solid developer, types 70/80 wpm but never put any effort in to typing per se, uses whatever system or IDE is the norm and isn't bothered. Learns a few keyboard shortcuts here and there maybe, but again, who cares.
Imagine a counter to your question - if that last developer could click their fingers and get to an effortless, consistent 100 wpm, would they? Should they? I think the answer is yes, and yes. They can still spend as much time as they want staring at the ceiling thinking, with the notepad out sketching, etc.
Now, not everyone wants to think about it, and that's fine, other things matter more in the end. How pleasant of a colleague you are matters more in many cases. But surely the notion itself of typing faster being preferable is easily understandable - programmers are text file producers.
There are developers whose wrists explode after years of holding down the shift and control keys. I honestly can't recommend a split keyboard enough from an ergonomics perspective. It's even more practical than a regular keyboard. You can put drinks or food in between the two halves, and if you get one using laptop-style low-profile switches you can put it in your pocket and take it with you anywhere on the go. Combined with some of those Android apps that give you a VTT and you can fit an entire coding set up in your pocket.
Typing speed might not seem that important if you're looking at the speed of typing and the overall amount of code that an engineer produces that ends up in a PR. But it might take 10x more code that are ephemeral versions that lead up to the full solution. If you're very comfortable with typing and editor commands to manipulate code efficiently then you can iterate faster, creating more intermediate versions of the code that then lead to better overall solutions just because you've tried out more stuff.
Just because it’s not the main bottleneck doesn’t mean it’s not worth optimizing. Also, yes I have seen devs that type so slowly they really would benefit from learning how to type properly.
I actually switched to an alternative layout and minimal keyboard like this just because it’s fun. If I can make my work day more fun, that’s a win in my book.
I recently replaced all my decade old consumer-level battery power tools with contractor-level ones. The old tools were fine to use, but the new ones are just an absolute joy to use. Some of that is just better design and build, some of that is just my perception, but in any case I love using them more.
My "fancy" keyboard is a lot like that. It lets me do some customizations that I really enjoy (ctrl when I hold z and /, esc + win next to a and ', "CAPS WORD", using thumbs for more than just space). I just enjoy using it more. Though it does have a few rough edges I probably need to see if I can fix, I CAN fix them.
I am however thinking that I probably would prefer one of the low-profile ones that is more like a laptop keyboard keys, the regular Cherry Blue desktop keys I feel like I'm tripping over a lot.
Communicating with coworkers efficiently is important for productivity too. While it's true that average speeds are low, I think the ability to quickly and effortlessly write out code or paragraphs of prose when needed is important to productivity.
It's not mutually exclusive but getting into the right posture is key. Otherwise you're just fighting against it constantly. That's why most doctors advise for change of habits as the first thing to look for. This is sometimes difficult as we want to keep doing the same things but changing keyboards ergonomics is a thing you can try. In fact my doctor was the one to suggest that for me.
Most keyboards have not spent a single thought on ergonomics, unlike chairs where it is common. There's not a lot of real research in this area and there are contradicting theories (some physicians even say that creating muscle in certain areas like the neck is not worth in the long term). Microsoft ergonomic keyboards have some studies behind and many people report success on split and column staggered keyboards.
Going to a split, key well board, solved my wrist issues. I had severe issues on a traditional row stagger keyboard and they have just gone. The only time I feel discomfort is when I type on a row stagger keyboard again for two weeks (e.g. when taking my laptop with me during a trip).
If you have small hands and you are stretching for delet/backspace and a small kb allows you to hit this key without strain, it absolutely helps with strain on fingers.
I tried many things over the years including other ergonomics and gym etc.
Changing to a smaller split keyboard helped the most and I have not had pain since.
Granted mine has about 50 keys or so so it's not as extreme.
> You should instead go to the gym and do proper physio exercises
wish more people would heed this advice. my wrists are jsut as good as when I was in my 20's. in my early thirties I was starting to develop issues. they went away as soon as I started deadlifting and pullups regularly.
People will do anything to not address the fundamental weaknesses that are the true causes of their issues. They have wrist pain so they try and fix their wrist with crazy setups, even though they have huge tightness in their traps and never do any strength training. It barely needs anything either, just light strength, high reps low weight. Your wrists can take any keyboard and setup if you don’t avoid physio
And the best thing about doing this is that you can also change your keyboard to something else and use a different keyboard layout as well. They are not mutually exclusive.
My coworker has a similar setup and loves it. Personally, it feels diametrically opposed to the way that I like to use my keyboard. I don't even like holding Shift to type `{`, `_`, etc when programming. I wish I had dedicated keys for those and other common symbols. I don't mind moving my hands a few inches at all, but for some reason, it feels cumbersome to me to hold down a key to activate another layer. To each their own, of course.
There's a non-obvious, but significant, difference between holding with a thumb in a neutral position and holding with a pinky in a stretched position. Layers become effortless on a keyboard like this.
I have my layer switch key configured to require only a button press, then the next key I type will be from that layer. So I don't have to hold it down. It's so much more comfortable to use special symbols this way. I've also done this for my shift key.
I guess that's why the thumbs get used here to activate the other layers. I have to try it, but thinking about it it seems way more ergonomic compared to the usual position of the shift key
This is definitely the case. Since the layer key is at the thumb, it doesn't require moving your hand and you barely need to move your thumb. As somebody who suffers from wrist pain, this makes a huge difference.
Those are slower than fingers and can’t be used as fluidly, in particular when using them as modifiers for keys typed with the fingers with normal typing speed.
Drummers do it. It takes some training because the nerve to your foot is longer than the one to your hand, but with good audible feedback it can be done. (If your feet are a meter farther from your ears then the sound from them takes 3 ms longer to be heard. Nobody types that fast but I'd you wanted a truer signal you could generate one in software.)
Not sure about the drummer analogy, because we don’t type in a rhythm. Hands and feet can maintain the same rhythm, and that has the effect that their actions can coincide with high precision. For arhythmic actions, my experience is it’s more difficult to synchronize to the typical subsecond precision for typing. For example, drum your fingers on a table in sequence, and then try to replace one of the fingers with your foot. It is magnitudes slower. While training will improve it, I don’t think it will be able to match the finger drumming, unless you introduce a longer-running rhythm. Keyboard shortcuts are similar.
What actually has way more of an impact that that is having the home-row keys set to the modifiers. The best part is that it works even with regular keyboard, you just need to have some kind of hot-key tool running on your computer.
I am always amazed by the dedication and craftmanship that keyboard enthusiasts put in their creation.
In the meantime, I have spent my life following the opposite path : minimizing all form of customization so that I can switch computer at any time without feeling lost or missing something ( I have to use computers from several clients all the time).
I won't say I never customize things, but, 99.99% of things, I do not customize.
I just cope with what's there, make do.
E.g. the limit of my emacs customization is Slime for Lisp (and, honestly, it took me several years to pull that trigger).
Same reason I learned vi a zillion years ago, while my friend was pushing emacs. I had to jump around random Unix boxen as a daily thing, and they weren't mine.
I use to type on 60 key boards using layers but when I switched to using a laptop keyboard it would mess me up as I used caps lock to switch layers and I had a navigation layer that used hjkl for arrows.
So what I changed to a TKL 80 key keyboard for QWERTY and then use Colemak Mod-DH on my split (Cantor Remix).
The result is I can type on both due to the context switch. So if I need to use a QWERTY board I am fine.
Also my golden rule with split keyboards is I only use open source designs. I don't want to invest time into a layout if the keyboard isn't going to be available in the future.
Dependence on special hardware instead of generally available ones is the making of future trouble for yourself.
Also in collaborative environments allowing others to work on your computer, assisting you in an easy way, is important.
For people working 40 years alone in a remote cellar the exact very same way throughout, and making several reserve clone of the unique and specialist hardware replacing the worn out ones, this could be ok.
That's also part of my reasoning.
I don't want to feel uncomfortable because of whatever customization I would be missing or make other people unable to use whatever environment or computer I work with.
Most of the time, I am not allowed to plug a personal device or modify the setup anyway.
But I am cool with people that customize everything, from software to hardware, as long as this is not in the path of other people. Everyone can find its one and best way to work :)
On my main keyboard I can activate custom "layers" by holding some special keys, then each layer turns every other key into a special binding.
I have so many shortcuts programmed that whenever I'm working directly on my laptop's keyboard I found myself pressing wrong keys expecting it to do something different. It's really funny how muscle memory works.
My keyboard fits in my pocket. I never have to deal with using a computer that doesn't have it. And, as a bonus feature, you look like a mega-hacker when you take some hand-soldered circuit-board-looking keyboard out of your pockets with blank keycaps and plug it into a computer.
I feel that most tend to not realize that typing on a keyboard like this actually forces you to type correctly. In the past I've gotten by through my own typing style, however since moving to this type of split keyboard I've found myself using every finger to a much greater degree - especially my pinkies.
I got my typing style fixed this way. Not because of a split design, but because of ortholinear design. It makes so much sense to have columns vertically align, since there is no ambiguity what key to press.
I've been doing a similar thing for a while now, but I have a 36-key board. I take a slightly different approach to the one in this article, namely I just have the space key on the left thumb cluster to raise to a layer with the numbers on the home-row keys, and then I have the Shift+Number combinations that you would have on a normal keyboard. I mainly do this so that I'm not completely at sea when typing on a regular board, though one of the great advantages of a 36-keyer (and mine uses low profile laptop switches) is that you can just put it in your pocket and take it around with you. You can cover all of the standard typing symbols in just two layers which are nicely similar to that of a regular keyboard (and if you use Vim keys, that's all you need).
Looking at things like this is like gazing into an alien world. I wonder if people who do this are able to use a regular keyboard layout, or if their muscle memory has been completely replaced with that of their custom input device. A standard full-size keyboard works best for me, having experienced the frustration that is modern laptops' castrated layouts.
I switched to dvorak about the same time I switched to using a split keyboard, and it feels like I've ended up with separate muscle memory for these two different arrangements. I imagine something similar could apply for this sort of thing too.
(I don't get all that much practice with QWERTY, but sometimes I use my laptop without an external keyboard, and I've got a couple of retro computers with inbuilt QWERTY keyboards, and it never takes long before my fingers get back into it. It's not very comfortable, and I don't like to do a lot of typing this way, but I'm not hunting for every keypress.)
Its not as crazy as it looks in my opinion. This is about as far as it goes in terms of customization, maybe a few more layers if you have a specialized workload. Once you are used to changing part of a layout once or twice, you pick up new changes much faster. Every layout feels different to me mentally, its harder to confuse them than one might think.
I'm most of the way to OP for my work keyboard, but at home I just use a regular keyboard as it's shared with family members. I have no problem switching, apart from very occasionally holding down f and expecting that to be shift.
I can easily switch back and forth. I have more than 34 keys, but I don't use the number row or modifier keys. My layout is also columnar, similar to the OP's.
Some observations from someone who has also used minimalist layouts on similar keyboards for a while:
- Thumbs can also get overuse. I would generally only recommend to use one key for each thumb very frequently to avoid too much lateral movement. Also don't go overboard with layer holds on thumbs.
- The thumb key placement on some of these boards, e.g. the placement of the inner thumb key on the Ferris-based keyboard in the linked post, is quite disastrous. Unless you have very small hands, the thumb will be very close to the palm or even under the palm, and this can get very painful over longer periods. Even worse is that if you type very fast, the index finger can cross the thumb. Just try it a few times. If you keep your thumb on the thumb key while doing that, there is a lot of tension in the fingers.
- The obsession with minimalist layouts is to minimize finger/hand movement. But I could find not much evidence in the scientific literature that less movement is actually good. It's also a huge trade-off, because you end up with a lot of holds (which are probably not great for your fingers either) or additional key presses (Callum mods). There are also other ways to decrease finger travel, like using a key well keyboard, which not only reduces distances, but also puts your fingers in a more natural resting position and makes the finger movements more natural (since keys are laid out along the natural arcs of the fingers) [1].
I went away from small keyboards and minimalist layouts. I certainly use far fewer keys than most people and some layers. But I have found that key well boards make more keys reachable and have superior ergonomics.
Also, if you have a finger/hand issue as a result of keyboard/mouse use, visit a medical expert, not /r/ergomechkeyboards .
(I am not a health/ergonomics expert, just speaking from experience. Though it's probably best to ignore this and consult an expert.)
[1] There is a lot of pseudo-science in the whole ergo keyboard community, with folk wisdom like "Dactyl-style squeeze thumb clusters are better, because we naturally squeeze our thumbs to grab objects", meanwhile a lot of folks had thumb injuries from that type of cluster. The only types of keyboards that I could find research papers about were Microsoft Ergonomic Keyboard-style boards, which seem to have their design decisions grounded in actual human trials and some of the early Maltron keyboards.
I didn't see any way to type function keys (f1, etc...). I see some of the allure of minimalist keyboards but when I imagine myself using it it seems painful.
The firmware that is loaded on these devices is very configurable.
There are layers and double/quick/long tap keys that can let you add these keys to the layers.
To use keyboard shortcuts though you need to put a lot of thought into the layout and what shortcuts you use.
The payoff is better ergonomics. No bent wrists (if you type that way) and open chest when typing and less slouching. It opens up a multitude of options e.g. mount the keyboard halves to the sides or arms of your desk chair and code on your loungeroom TV or supine computing.
The downsides is the time spend configuring a layout and learning it.
I started using (programming and everything else) with a 34key keyboard with miryoku layout with inverted T arrow keys & native mouse emulation layer enabled around 2years ago and I haven't looked back.
it's more comfortable, it fixed my pathological touch typing too.
for those a want to give it a try, here are my the problems I encountered so far:
- stuff like Figma where you need to keep holding the space bar to change editing modes, won't work you need to make you custom (single purpose) space button if you want it.
- you can't play video games, unless you make you own custom layer or give each game a custom key bindings. I don't game much and when I do I use a gamepad so this haven't been much of a bother for much
of bother for me but if you do It's something to keep in mind.
- the MCU boards that are available are very finicky,
the nice!nano breaks easily I bought multiple replacements, they are very heat senstive.
I had pins die, the charging circuit die on multiple ocasions in different boards.
also I think using the mill-max pin was a mistake on my part even if it was the recommendation, they more expensive, annoying and
you can't just plug them in a breadboard to test & debug them.
on the web there's also an alternative commendation to use the leftover metal parts of the resistances/diodes. I would also recommend against it, with time the connections
to the board start disconnecting since you probably won't cut all of them to the same exact length and that they wiggle inside the mill-max pin sockets.
just use the standard ones that are used in most PCBs even if they are bigger.
- avoid using jack connectors to connect the sleeves, they can fry your MCUs and when they don't with time they give out and they start to disconnect and need time to reconnect and it makes for a bad user experience.
- if you make a wireless keyboard don't add LED backlights or individual per key LEDs they significantly drain your battery life even when you're not using them.
- Bluetooth connection is still somewhat unreliable, having something with wireless 2,4ghz would be better but I don't think there's an open source solution for that which is off the shelf,
so if you want it you'll probably to make your own or tweak something from somewhere else.
I want to make a keyboard like the one that was submitted here a few weeks or months ago that takes these notes into account but I haven't found the time or the motivation.
EDIT: this one https://news.ycombinator.com/item?id=43255529
I've also seen some people sell some open-source versions in ali express recently for around 60eur pre-assembled. I haven't ordered one so I'm not recommending it, just curious if anyone here ever did.
> - stuff like Figma where you need to keep holding the space bar to change editing modes, won't work you need to make you custom (single purpose) space button if you want it.
Are there, really, developers whose productivity is first and foremost constrained by how fast they can type? If so, what else is known about them? What class of problems are they working on?
It's not about how fast you can type, it's about how effortlessly you can type.
Programming involves long periods of thinking interrupted by short periods of typing. Anything you can do to reduce the mental effort of typing reduces the impact of this interruption to your train of thought.
Try programming by hunt-and-peck typing -- it's certainly possible, but having to think about putting each individual character on the screen is incredibly tedious and distracting. This is why people learn things like Vim motions or minimalist keyboard layouts -- anything that speeds up the feedback loop between your brain and your code is an improvement. It's not a drastic difference, but it's significant enough that I now feel mildly annoyed using a regular keyboard when I have to move my whole arm to reach the arrow keys rather than having them right under my fingers on the home row.
For me its not how fast I can type, my brain(ADHD or whatever this is) needs certain flow of speed; I think of something and want to type it, if I am delayed (e.g. imagine I change from qwerty to dvorak and am still learning) for whatever reason, e.g. key is stuck, my mind goes somewhere else, and then I have to "bring it back".
Also as I am typing one thing I am thinking of another, or even third, so if something goes wrong with the mechanics of the first thing, then whole set of dominoes fall and I have to go back.
Sometimes for a given thought I even type 3rd of 4th word instead of the first if for some reason my keys are not pressed. And then I type a word from the next thought and etc. It even gives me anxiety.
As I am typing the code, I am thinking about the code that is going to use the it, and then the code one layer up, I also think of the machine itself, its wires, cache lines, or I think of how the variable I am typing now is related to its surroundings, I imagine a ladder to the moon each step with its address, and I think how far are things from "me", and so on.
I cant speak of others, but for me keyboard layout and even key feeling/rythm is important just because it allows me to think uninterrupted.
btw thats why I hated the old butterfly keyboards, a tiny crumb gets in and then the probability of a key drops to like 80%, or sometimes it double presses.
I am very happy that apple moved away from the quest of making the keyboard 0 height.
I'm one of the people that uses neovim, a tiling window manager on nixos, and a weird split keyboard.
It's true that it will lead to healthier wrists and more productivity, but thats not the point. I know people with incredibly unergonomic setups and habits (vscode with membrane keyboard and a chronic overuse of the mouse) that get around the same or more actual features implemented as me. There might even be something to be said for more friction forcing you to think more.
The reason most of us do it (at least if we are honest with ourselves) is because it's fun---and that's ok. Jumping around in vim on a split keyboard gives me the same joy that watching my first lines of code execute in Gamemaker Studio 2 did in 8th grade.
It's always worth investing to make your work joyful.
I have a really similar setup to yours. NixOS, Niri, Draculad. I think being forced to use something like Windows 11 with something like VSCode would be very frustrating long term. Mostly the looming knowledge of we can do better, we have done better.
I used to think that typing speed was not really that important, especially when now we have so many LLMs doing the typing for us. But honestly, now I think it's even more important because the specificity and detail in your prompts are paramount to getting a good response, and something like a dictation tool (which is what I'm using right now) is really good for generating very specific prompts.
In fact, I wrote all this out using a dictation tool in ~20 seconds (258 WPM).
Agreed. I installed Whisper on my Linux computer with a program called SpeechNote. The dictation is all done offline, and it is astonishingly good.
I also have a whisper dictation app on my Android phone (the app's ID string is 'org.woheller69.whisper', there's a few Whisper apps with the same name "Whisper", but this one is my favorite).
FWIW this was typed by hand on my phone, but these apps are both amazing.
Curious, what dictation tool are you using?
https://github.com/JinayJain/dictator
Built one for myself. It's context-aware and promptable.
Tested well on Linux, not so much on other platforms but in theory should support them.
It's a bit meta but I wrote it mostly using Claude Code. Once I had an MVP, I was able to prompt much faster by just speaking out what I wanted it to change.
Same, 258wpm is something.
FYI I wrote a comment in the same thread where I described the tools I use (TLDR: Whisper).
I find fast typing is super important to my programming, not because I need to write walls of text, but because if I get into a flow state, I find it irritating if my thoughts are constrained by my typing speed.
There's a lot of ignoring your question and telling an anecdote - some nice anecdotes, though.
I'd guess the answer is yes. If someone (somehow) gets into a junior dev role, has no to little experience, and hunts and pecks 20 words a minute, they'll have to get that up to 50/60 surely before they can be a more normally functioning member of a team, right? I think in some bad cases it could be priority number one.
If your job is producing text in files, you tend to need basic proficiency in typing.
I guess you're rather imagining a really solid developer, types 70/80 wpm but never put any effort in to typing per se, uses whatever system or IDE is the norm and isn't bothered. Learns a few keyboard shortcuts here and there maybe, but again, who cares.
Imagine a counter to your question - if that last developer could click their fingers and get to an effortless, consistent 100 wpm, would they? Should they? I think the answer is yes, and yes. They can still spend as much time as they want staring at the ceiling thinking, with the notepad out sketching, etc.
Now, not everyone wants to think about it, and that's fine, other things matter more in the end. How pleasant of a colleague you are matters more in many cases. But surely the notion itself of typing faster being preferable is easily understandable - programmers are text file producers.
There are developers whose wrists explode after years of holding down the shift and control keys. I honestly can't recommend a split keyboard enough from an ergonomics perspective. It's even more practical than a regular keyboard. You can put drinks or food in between the two halves, and if you get one using laptop-style low-profile switches you can put it in your pocket and take it with you anywhere on the go. Combined with some of those Android apps that give you a VTT and you can fit an entire coding set up in your pocket.
Typing speed might not seem that important if you're looking at the speed of typing and the overall amount of code that an engineer produces that ends up in a PR. But it might take 10x more code that are ephemeral versions that lead up to the full solution. If you're very comfortable with typing and editor commands to manipulate code efficiently then you can iterate faster, creating more intermediate versions of the code that then lead to better overall solutions just because you've tried out more stuff.
Just because it’s not the main bottleneck doesn’t mean it’s not worth optimizing. Also, yes I have seen devs that type so slowly they really would benefit from learning how to type properly.
I actually switched to an alternative layout and minimal keyboard like this just because it’s fun. If I can make my work day more fun, that’s a win in my book.
Yes: https://danluu.com/productivity-velocity/
I recently replaced all my decade old consumer-level battery power tools with contractor-level ones. The old tools were fine to use, but the new ones are just an absolute joy to use. Some of that is just better design and build, some of that is just my perception, but in any case I love using them more.
My "fancy" keyboard is a lot like that. It lets me do some customizations that I really enjoy (ctrl when I hold z and /, esc + win next to a and ', "CAPS WORD", using thumbs for more than just space). I just enjoy using it more. Though it does have a few rough edges I probably need to see if I can fix, I CAN fix them.
I am however thinking that I probably would prefer one of the low-profile ones that is more like a laptop keyboard keys, the regular Cherry Blue desktop keys I feel like I'm tripping over a lot.
Communicating with coworkers efficiently is important for productivity too. While it's true that average speeds are low, I think the ability to quickly and effortlessly write out code or paragraphs of prose when needed is important to productivity.
Conversely, do you think there are developers who would not benefit from being able to type quicker?
It's about comfort, not speed. Moving to a minimalistic keyboard did wonders for me RSI.
I use a layout like this and I'm slower than on a traditional qwerty layout. OTOH, I also have far fewer RSI problems.
Speed is rarely a consideration in the community.
Changing keyboard ergonomics is absolutely not the way to deal with RSI. You should instead go to the gym and do proper physio exercises
It's not mutually exclusive but getting into the right posture is key. Otherwise you're just fighting against it constantly. That's why most doctors advise for change of habits as the first thing to look for. This is sometimes difficult as we want to keep doing the same things but changing keyboards ergonomics is a thing you can try. In fact my doctor was the one to suggest that for me.
Most keyboards have not spent a single thought on ergonomics, unlike chairs where it is common. There's not a lot of real research in this area and there are contradicting theories (some physicians even say that creating muscle in certain areas like the neck is not worth in the long term). Microsoft ergonomic keyboards have some studies behind and many people report success on split and column staggered keyboards.
I’ve never come across a doctor who doesn’t start by advising physio exercises
Going to a split, key well board, solved my wrist issues. I had severe issues on a traditional row stagger keyboard and they have just gone. The only time I feel discomfort is when I type on a row stagger keyboard again for two weeks (e.g. when taking my laptop with me during a trip).
If you hand is in a position that is putting any of your anatomy at a weird angle no amount of exercise is going to sort that out.
It’s the opposite, actually
If you have small hands and you are stretching for delet/backspace and a small kb allows you to hit this key without strain, it absolutely helps with strain on fingers.
I tried many things over the years including other ergonomics and gym etc.
Changing to a smaller split keyboard helped the most and I have not had pain since.
Granted mine has about 50 keys or so so it's not as extreme.
> You should instead go to the gym and do proper physio exercises
wish more people would heed this advice. my wrists are jsut as good as when I was in my 20's. in my early thirties I was starting to develop issues. they went away as soon as I started deadlifting and pullups regularly.
People will do anything to not address the fundamental weaknesses that are the true causes of their issues. They have wrist pain so they try and fix their wrist with crazy setups, even though they have huge tightness in their traps and never do any strength training. It barely needs anything either, just light strength, high reps low weight. Your wrists can take any keyboard and setup if you don’t avoid physio
And the best thing about doing this is that you can also change your keyboard to something else and use a different keyboard layout as well. They are not mutually exclusive.
I don't know about the gym, lifting weights is just another way to ruin your body imo.
Yoga, climbing, martial arts, swimming; there's no end of fun activities that lead somewhere while keeping you in physical shape.
It’s an obsessive thing imo, I don’t think it’s actually rooted in a practical thing. They’re just trying to justify an addiction
Everyone needs hobbies
One man’s addiction is another man’s hobby.
of course not. it's fun to mod and geek out about random topics.
i also assume that if you have RSI/carpal tunnel/etc then experimenting with your keyboards switches from negative switching costs to greatly positive
My coworker has a similar setup and loves it. Personally, it feels diametrically opposed to the way that I like to use my keyboard. I don't even like holding Shift to type `{`, `_`, etc when programming. I wish I had dedicated keys for those and other common symbols. I don't mind moving my hands a few inches at all, but for some reason, it feels cumbersome to me to hold down a key to activate another layer. To each their own, of course.
There's a non-obvious, but significant, difference between holding with a thumb in a neutral position and holding with a pinky in a stretched position. Layers become effortless on a keyboard like this.
I have my layer switch key configured to require only a button press, then the next key I type will be from that layer. So I don't have to hold it down. It's so much more comfortable to use special symbols this way. I've also done this for my shift key.
I guess that's why the thumbs get used here to activate the other layers. I have to try it, but thinking about it it seems way more ergonomic compared to the usual position of the shift key
This is definitely the case. Since the layer key is at the thumb, it doesn't require moving your hand and you barely need to move your thumb. As somebody who suffers from wrist pain, this makes a huge difference.
Unfortunately I developed beginning arthrosis in my thumbs, so pressing space is about the most I can subject them to.
Foot pedals?
Those are slower than fingers and can’t be used as fluidly, in particular when using them as modifiers for keys typed with the fingers with normal typing speed.
Drummers do it. It takes some training because the nerve to your foot is longer than the one to your hand, but with good audible feedback it can be done. (If your feet are a meter farther from your ears then the sound from them takes 3 ms longer to be heard. Nobody types that fast but I'd you wanted a truer signal you could generate one in software.)
Not sure about the drummer analogy, because we don’t type in a rhythm. Hands and feet can maintain the same rhythm, and that has the effect that their actions can coincide with high precision. For arhythmic actions, my experience is it’s more difficult to synchronize to the typical subsecond precision for typing. For example, drum your fingers on a table in sequence, and then try to replace one of the fingers with your foot. It is magnitudes slower. While training will improve it, I don’t think it will be able to match the finger drumming, unless you introduce a longer-running rhythm. Keyboard shortcuts are similar.
What actually has way more of an impact that that is having the home-row keys set to the modifiers. The best part is that it works even with regular keyboard, you just need to have some kind of hot-key tool running on your computer.
I suggest you look into combos (press multiple keys as an extra key).
For example, I don't hold to type either { or _ or any symbol (O can hold of I type multiple symbols in a row though).
https://www.jonashietala.se/blog/2024/11/26/the_current_cybe...
I agree. I also developed serious RSI from overuse of modifiers and cords. Not everyone’s RSI is the same, but just as a caveat.
I am always amazed by the dedication and craftmanship that keyboard enthusiasts put in their creation.
In the meantime, I have spent my life following the opposite path : minimizing all form of customization so that I can switch computer at any time without feeling lost or missing something ( I have to use computers from several clients all the time).
I am absolutely in this camp.
I won't say I never customize things, but, 99.99% of things, I do not customize.
I just cope with what's there, make do.
E.g. the limit of my emacs customization is Slime for Lisp (and, honestly, it took me several years to pull that trigger).
Same reason I learned vi a zillion years ago, while my friend was pushing emacs. I had to jump around random Unix boxen as a daily thing, and they weren't mine.
I'm 100% this for software.
Living off the land with minimal customization.
You can do both.
I use to type on 60 key boards using layers but when I switched to using a laptop keyboard it would mess me up as I used caps lock to switch layers and I had a navigation layer that used hjkl for arrows.
So what I changed to a TKL 80 key keyboard for QWERTY and then use Colemak Mod-DH on my split (Cantor Remix).
The result is I can type on both due to the context switch. So if I need to use a QWERTY board I am fine.
Also my golden rule with split keyboards is I only use open source designs. I don't want to invest time into a layout if the keyboard isn't going to be available in the future.
Exactly!
Dependence on special hardware instead of generally available ones is the making of future trouble for yourself.
Also in collaborative environments allowing others to work on your computer, assisting you in an easy way, is important.
For people working 40 years alone in a remote cellar the exact very same way throughout, and making several reserve clone of the unique and specialist hardware replacing the worn out ones, this could be ok.
That's also part of my reasoning. I don't want to feel uncomfortable because of whatever customization I would be missing or make other people unable to use whatever environment or computer I work with. Most of the time, I am not allowed to plug a personal device or modify the setup anyway.
But I am cool with people that customize everything, from software to hardware, as long as this is not in the path of other people. Everyone can find its one and best way to work :)
On my main keyboard I can activate custom "layers" by holding some special keys, then each layer turns every other key into a special binding.
I have so many shortcuts programmed that whenever I'm working directly on my laptop's keyboard I found myself pressing wrong keys expecting it to do something different. It's really funny how muscle memory works.
So then you'd have to be comfortable with multiple operating systems, IDEs and to some extent keyboard layouts.
If you use a custom keyboard (and layout) then you only have one extra thing to learn.
I can still use VSCode and a regular keyboard/layout but I still maintain my own custom keyboard layout and highly configured Neovim setup.
My keyboard fits in my pocket. I never have to deal with using a computer that doesn't have it. And, as a bonus feature, you look like a mega-hacker when you take some hand-soldered circuit-board-looking keyboard out of your pockets with blank keycaps and plug it into a computer.
I feel that most tend to not realize that typing on a keyboard like this actually forces you to type correctly. In the past I've gotten by through my own typing style, however since moving to this type of split keyboard I've found myself using every finger to a much greater degree - especially my pinkies.
I got my typing style fixed this way. Not because of a split design, but because of ortholinear design. It makes so much sense to have columns vertically align, since there is no ambiguity what key to press.
Remapping my CapsLock as a layer activator has been the best idea of my life.
[CapsLock+Space=Enter, CapsLock+jklm=arrows, CapsLock+uiop=Backspace,PgDn,PgUp,Delete. CapsLock+1-9=FunctionKeys. All that on a 60% AZERTY keyboard.]
Highly recommended !
[Just added CapsLock+f=. and CapsLock+ù=/ , as they are particularly impractical characters to type on a french keyboard]
I've been doing a similar thing for a while now, but I have a 36-key board. I take a slightly different approach to the one in this article, namely I just have the space key on the left thumb cluster to raise to a layer with the numbers on the home-row keys, and then I have the Shift+Number combinations that you would have on a normal keyboard. I mainly do this so that I'm not completely at sea when typing on a regular board, though one of the great advantages of a 36-keyer (and mine uses low profile laptop switches) is that you can just put it in your pocket and take it around with you. You can cover all of the standard typing symbols in just two layers which are nicely similar to that of a regular keyboard (and if you use Vim keys, that's all you need).
Discussed at the time:
Programming on 34 Keys - https://news.ycombinator.com/item?id=32648245 - Aug 2022 (69 comments)
Looking at things like this is like gazing into an alien world. I wonder if people who do this are able to use a regular keyboard layout, or if their muscle memory has been completely replaced with that of their custom input device. A standard full-size keyboard works best for me, having experienced the frustration that is modern laptops' castrated layouts.
I switched to dvorak about the same time I switched to using a split keyboard, and it feels like I've ended up with separate muscle memory for these two different arrangements. I imagine something similar could apply for this sort of thing too.
(I don't get all that much practice with QWERTY, but sometimes I use my laptop without an external keyboard, and I've got a couple of retro computers with inbuilt QWERTY keyboards, and it never takes long before my fingers get back into it. It's not very comfortable, and I don't like to do a lot of typing this way, but I'm not hunting for every keypress.)
Its not as crazy as it looks in my opinion. This is about as far as it goes in terms of customization, maybe a few more layers if you have a specialized workload. Once you are used to changing part of a layout once or twice, you pick up new changes much faster. Every layout feels different to me mentally, its harder to confuse them than one might think.
I'm most of the way to OP for my work keyboard, but at home I just use a regular keyboard as it's shared with family members. I have no problem switching, apart from very occasionally holding down f and expecting that to be shift.
I can easily switch back and forth. I have more than 34 keys, but I don't use the number row or modifier keys. My layout is also columnar, similar to the OP's.
I met someone that could switch between QWERTY and DVORAK without issue. I'm pretty sure they were not from this planet
Some observations from someone who has also used minimalist layouts on similar keyboards for a while:
- Thumbs can also get overuse. I would generally only recommend to use one key for each thumb very frequently to avoid too much lateral movement. Also don't go overboard with layer holds on thumbs.
- The thumb key placement on some of these boards, e.g. the placement of the inner thumb key on the Ferris-based keyboard in the linked post, is quite disastrous. Unless you have very small hands, the thumb will be very close to the palm or even under the palm, and this can get very painful over longer periods. Even worse is that if you type very fast, the index finger can cross the thumb. Just try it a few times. If you keep your thumb on the thumb key while doing that, there is a lot of tension in the fingers.
- The obsession with minimalist layouts is to minimize finger/hand movement. But I could find not much evidence in the scientific literature that less movement is actually good. It's also a huge trade-off, because you end up with a lot of holds (which are probably not great for your fingers either) or additional key presses (Callum mods). There are also other ways to decrease finger travel, like using a key well keyboard, which not only reduces distances, but also puts your fingers in a more natural resting position and makes the finger movements more natural (since keys are laid out along the natural arcs of the fingers) [1].
I went away from small keyboards and minimalist layouts. I certainly use far fewer keys than most people and some layers. But I have found that key well boards make more keys reachable and have superior ergonomics.
Also, if you have a finger/hand issue as a result of keyboard/mouse use, visit a medical expert, not /r/ergomechkeyboards .
(I am not a health/ergonomics expert, just speaking from experience. Though it's probably best to ignore this and consult an expert.)
[1] There is a lot of pseudo-science in the whole ergo keyboard community, with folk wisdom like "Dactyl-style squeeze thumb clusters are better, because we naturally squeeze our thumbs to grab objects", meanwhile a lot of folks had thumb injuries from that type of cluster. The only types of keyboards that I could find research papers about were Microsoft Ergonomic Keyboard-style boards, which seem to have their design decisions grounded in actual human trials and some of the early Maltron keyboards.
ColorForth environment uses only 27 keys. See https://www.greenarraychips.com/home/documents/greg/cf-edito...
The navigation and symbol layer (not the limited number of keys) seem very reminiscent of the Neo layouts.
In german, but should be clear enough: https://www.neo-layout.org/
I didn't see any way to type function keys (f1, etc...). I see some of the allure of minimalist keyboards but when I imagine myself using it it seems painful.
The firmware that is loaded on these devices is very configurable.
There are layers and double/quick/long tap keys that can let you add these keys to the layers.
To use keyboard shortcuts though you need to put a lot of thought into the layout and what shortcuts you use.
The payoff is better ergonomics. No bent wrists (if you type that way) and open chest when typing and less slouching. It opens up a multitude of options e.g. mount the keyboard halves to the sides or arms of your desk chair and code on your loungeroom TV or supine computing.
The downsides is the time spend configuring a layout and learning it.
I have my f key layer set up very similarly to digit layer, so that 1-9 and f1-f9 are the same keys, just on different layers.
I started using (programming and everything else) with a 34key keyboard with miryoku layout with inverted T arrow keys & native mouse emulation layer enabled around 2years ago and I haven't looked back. it's more comfortable, it fixed my pathological touch typing too.
for those a want to give it a try, here are my the problems I encountered so far:
- stuff like Figma where you need to keep holding the space bar to change editing modes, won't work you need to make you custom (single purpose) space button if you want it.
- you can't play video games, unless you make you own custom layer or give each game a custom key bindings. I don't game much and when I do I use a gamepad so this haven't been much of a bother for much of bother for me but if you do It's something to keep in mind.
- the MCU boards that are available are very finicky, the nice!nano breaks easily I bought multiple replacements, they are very heat senstive. I had pins die, the charging circuit die on multiple ocasions in different boards. also I think using the mill-max pin was a mistake on my part even if it was the recommendation, they more expensive, annoying and you can't just plug them in a breadboard to test & debug them. on the web there's also an alternative commendation to use the leftover metal parts of the resistances/diodes. I would also recommend against it, with time the connections to the board start disconnecting since you probably won't cut all of them to the same exact length and that they wiggle inside the mill-max pin sockets. just use the standard ones that are used in most PCBs even if they are bigger.
- avoid using jack connectors to connect the sleeves, they can fry your MCUs and when they don't with time they give out and they start to disconnect and need time to reconnect and it makes for a bad user experience.
- if you make a wireless keyboard don't add LED backlights or individual per key LEDs they significantly drain your battery life even when you're not using them.
- Bluetooth connection is still somewhat unreliable, having something with wireless 2,4ghz would be better but I don't think there's an open source solution for that which is off the shelf, so if you want it you'll probably to make your own or tweak something from somewhere else.
I want to make a keyboard like the one that was submitted here a few weeks or months ago that takes these notes into account but I haven't found the time or the motivation. EDIT: this one https://news.ycombinator.com/item?id=43255529
I've also seen some people sell some open-source versions in ali express recently for around 60eur pre-assembled. I haven't ordered one so I'm not recommending it, just curious if anyone here ever did.
> - stuff like Figma where you need to keep holding the space bar to change editing modes, won't work you need to make you custom (single purpose) space button if you want it.
https://zmk.dev/docs/keymaps/behaviors/hold-tap#quick-tap-ms should work.