Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Forty years of programming (fabiensanglard.net)
293 points by billiob on Oct 8, 2023 | hide | past | favorite | 172 comments


This is going to be controversial, but what saved me was abandoning a keyboard-intense environment (emacs + command line) for Apple’s Xcode. I do still build much of the time at the command line, but editing code and switching between windows is mouse-heavy.(You can use Xcode as just a text editor if you like.) I cut and paste by selecting with the mouse where possible. I have a gaming mouse with a button programmed for macOS’s “Exposé” so I can find windows back – and I use a single screen, a 27″ iMac.

I have an Apple trackpad which I use to give my hand a break from the mouse, but I find that if I use it heavily for a day or two I get sore fingers. I use a mechanical keyboard. That too tends to cut up my fingers, and I’m on the lookout for a better one, or at least better keycaps.

I’ve been doing this for 45 years now, since age 19. Along the way I’ve used punchcards, line mode editors, TECO itself and two TECO-inspired full screen editors, various full-screen editors like DEC’s EDT, and emacs. I know vi, and will by habit drop into it when editing config files and so on, but don’t subscribe to the view that it solves the RSI problem. So I do know how to edit efficiently using keyboard shortcuts, but now think it’s the wrong thing to do.

I went through a stage where I used emacs and a Happy Hacking Keyboard, and was very sore at the end of it.

I am not slow with my mouse. I can churn out ~2000 lines of good C++ in a day. (But I am not a fan of the language from a typing point of view!)


Having to use the mouse frustrates me. Have you tried an ergonomic keyboard?


Ask yourself why it frustrates you. Perhaps you can’t see exactly where the click will be – a high res screen makes a difference. Perhaps you haven’t learned all the mouse shortcuts. Two on macOS are: triple-click to select a whole line; and click, scroll down using PGDOWN or mouse actions, then SHIFT-click to select everything between the two. Perhaps it’s just a bad mouse.

I use a tenkeyless keyboard, which doesn’t have the calculator block at the right. The ones which have it I find put the mouse too far off to my right. It’s very important to me that there are OPTION and COMMAND keys on both sides of the keyboard, so that the opposite hand is doing the shifting; I’m never pressing two keys at once with fingers from the same hand. I’ve never used an ergonomic keyboard.


Whats the keyboard you have?


Filco Majestouch 2 TKL with Cherry MX Brown switches. I configured macOS to swap the OPTION and COMMAND keys and physically swapped the keycaps using the supplied puller.

This is a Japanese keyboard with German switches. I’ve had it for quite a while. The Cherry patents have now expired so there are now several third parties making copies of the switches, and many makers of much cheaper mechanical keyboards. However, most of those I’ve seen lack OPTION and COMMAND on both sides. The Filco has OPTION, COMMAND and CTRL on both sides (and, of course, SHIFT).

On that last point, I worded my earlier post wrongly. What I should have said was that you never had to press a key and its shifts with the same hand if the shifts are available on the other side.


I'm only 33 but never had any issues with joint pains or anything like that whereas my peers, some younger and some older struggle with this and use various methods like ergonomic keyboards, massage sessions, stretching, etc to help ease the pain.

I've used a traditional mouse and keyboard since I was around 7 and can easily spend a whole day in front of my computer.

Lately I've been wondering if it's simply just my inability to sit still which has helped me so far. I feel like I always need to change my sitting position. I can sink down in my chair, put my legs up on something, move my feet, lean on my desk in awkward positions, stretch and twist my body and so on. Not because anything hurts, but because I just feel restless.

But sometimes when I've been intensely in the zone while programming, I don't move as much and then I might start to feel some stiffness in my arms, fingers, etc. I would also notice my eyes get sore, maybe because I don't blink as much?


I am 36 and I subscribe to notion that no desk or ergonomic chair will help.

Only thing that helps is excercise.

I go to the gym at least 2x a week.

When gyms were closed during lockdowns I did not excercise or had much of movement anyway. Then I got my back hurting and other stuff.

Now I am back at the gym and all issues went away. Also I don’t lift super heavy but moderately like I don’t bench press 100kg so I finish at 70kg usually. So it more important to move than lift heavy. All gym bros will tell you to put on more weights but you don’t have to if it is not your goal. My goal is to be healthy.


Also timers; reminding to constantly switch up positioning. Standing, sitting (especially with legs up), now and then lie down position even (e.g. for when reading specs/documentation).

Switching chairs is another one for me. I do have a HAG Capisco at my fully ergonomic standing desk setup but also work from the couch or kitchen table in between.

But yes, exercise is the main pillar; and AFAIR ergonomics basically means no repetitive or same posture or movement over longer stretches of time; body wants to change position and move about.

Lastly, breaking habit of overwork if current work phase allows (always questioning if the case / if working efficiently).


Exercise helps a lot. Sitting at a desk long-term will destroy your body after decades. Taking breaks and moving your body is important. Things like walking meetings and doing squats and bodyweight exercises are a good investment in your physiology and health.


Rowing is fantastic for this. There is a good balance between cardio workout and strength. If your day job involves sitting in a chair for eight hours a day then the all over effect finds those muscles that you don't use very often and tones them up.


I benefited greatly from an ergonomic chair. The biggest benefit to it is the max height was maybe 3 inches higher than my prior chair, which was enough to change my forearm from being angled upwards to being angled downwards.

Ergonomics are a reasonably complex topic that’s its own speciality and there’s not much in the way of one size fits all solutions.


Some additional notes from reading other comments. I feel the way I wrote the post make it sound as if I'm fine with any setup which is not true.

- Lower than normal desk height is more comfortable.

- Lower than normal chair height is more comfortable.

- Using a laptop is tiring unless it's on a desk.

- Using a laptop on my lap in a couch gives me neck pain.

- I should preferably not have to tilt my neck to look at the center of a screen.

- Using a macbook trackpad over extended periods of time can give me some wrist discomfort. I find myself often twisting and cracking my wris if I don't use a mouse because of the discomfort.

- Some chairs work better than others but I'm not sure what it is. Price does not seem to correlate at all.

Somewhat related:

- Sleeping on a pillow that is too tall gives me neck pain and headache. (from staying in hotels, friends, family, etc)

- Sleeping on very hard mattresses is preferable over soft. (seems more common in asia)


I think it's also just individual differences. Some people are naturally more prone to RSI than others.

I get a bit of pain from long typing, especially writing prose, but it usually resolves itself pretty quick. However I knew a guy during my PhD who was like 30, used arm braces, a standing desk, ergonomic keyboard and mouse and took regular break on a timer AND was under lots of pain. That's bad genetic luck.


The basic advice I got to avoid RSI (from an ortho) was dynamic movement. Move. Change position a lot. Sit back, forward, turn, get up, yell at the neighbors, etc. Any movement is the point, as it activates your tendons and joints. Seems to work.


I coded professionally for more than 10 years without thinking about ergonomics, and without any problems. But then I started to feel pain in my arms, and it took a lot of effort to get it under control. In the end, what helped me the most was using a break program (to remind me to let go of the keyboard, and to do stretches), in combination with an ergonomic keyboard and mouse.

I've written more details about it here:

https://henrikwarne.com/2012/02/18/how-i-beat-rsi/


Also have your screen at eye level, neck bent looking over for prolonged periods.. gives you a neck / elbow pain.


I started experiencing similar forearm pain a few years ago. The split keyboard seemed to help a ton. I also programmed[0] an Arduino with two foot pedals. Left pedal for CTRL, right for SHIFT, both for ALT. Worked wonders. I mostly have the pain manageable now, but it still flares up sometimes, and it was really scary there for a while wondering if I might have to stop programming. To you young guns out there, an ounce of prevention truly is worth a pound of cure. Invest in an ergonomic setup and stretches/exercises now, and don't push yourself into pain while typing. Take more breaks. Once you push your body over the edge it may never quite be the same.

[0]: https://github.com/anderspitman/ergo-pedals


I remapped the modifiers on my keyboard such that the bottom row is

Win - Alt - Ctrl - Space - Ctrl - Alt - Win

This is so that I can use my thumbs for Ctrl and index fingers for Alt. I taught myself to use the opposite side modifiers every time (using the right control for Ctrl-S).

This got rid of the vast majority of unergonomic keystrokes for me.


What if you need to press all three "keys" simultaneously?


The same keys still exist on the keyboard. There is also such a thing as a compose key sequence where you press a few things serially rather than all at once. There are countless answers to this question really.


He probably doesn't use Emacs. :)


I know what you mean. I was forced to use emacs for a year. I found it an interesting coincidence the person who forced emacs on us had the worst carpal tunnel syndrome and couldn't type on a standard keyboard without extreme pain.

I know you can remap your keys but there's inertia to just go with what you're given.

I've also noticed myself switching between Mac, Windows, and Linux, that Cmd-C on my Mac is way less stressful on my hand than Ctrl-C on the other 2 machines. I should probably figure out how to remap those.

PS: If you're curious how emacs was forced, it was because the lead built the project's IDE/build/debugging system into emacs


Try a keyboard running QMK firmware. You can map a single key to multiple codes depending on the length of the key press. I use caps lock as escape if released immediately, and control if held down. Putting the modifiers in the bottom corner of the keyboard was a sadistic design choice.


"escape if released immediately, and control if held down"

Elegant.

And I mean for those two particular modifiers with that relationship, not just the idea in general.


Or evil mode.


wow you woke up today and chose violence, didn't ya?


Forty years is just a crazy amount. I’ve been doing it for 30 and getting paid for 20, and I know my stuff: but not to that level. Fabien is just a demigod. Given the long ass hours I’m pushing 100k hours in this trade, and I feel like I’m really finding my feet in the last 1-3 years.

This is one of those trades where you can do amazing shit on the first day, but you’re still a work in progress just decades in.

I love this shit.


I don't know, I don't think I'll ever feel hyper competent, the way I think of some of these people you come across.

I certainly know a lot more than 20 years ago. But I always feel like there's more and more layers. Just browsing this site I find something every few days to add to my reading list.

In a way that's good, not feeling like I've hit some experience ceiling.


I mean, there’s always a next level, but I’ve seen your comments over the years and IIRC you’re like an extreme low-latency prop shop pro with serious quant chops too?

There’s more elite stuff (RenTech, CERN, the Equation Group?), but that’s pretty elite man.

If that’s not hyper-competent I shudder to think what is.


Well no matter how extreme, it always seems like other people are smarter. For me personally I don't like playing where it's all about latency either.


Interesting! I did some low latency stuff (mikes not ns, this wasn’t HFT) and I loved it. Trade you jobs! :)


Stenography is the most ergonomic method of computer input I am aware of.

Stenography is a mapping of some combination of keys to some output.

A particular mapping is called a "theory".

One such mapping is phonetics, or the sounds of words. Let one key represent the "Kuh" sound, another "ah", and a third "tuh". Press them all down and when released, you get "cat". "Al" "Guh" "Or" "If" "Um" "Algorithm". 5 strokes instead 8. And that's not even trying to be efficient.

Another mapping is to use shapes. Three keys in the top row and one in the middle on the bottom looks like a "T". So, map that to something you associate with T.

A theory can be any mapping you want. Stenography is based on shorthand which was invented in the late 1800s. There are plenty of theories that already exist. You don't need to make your own.

When you write, you use some words or phrases frequently. Map those to convenient keys. Such mappings are called "briefs". Go crazy with them and you can reach 370 words per minute of real-time dictation.

You obviously don't have to be that good. I find that 30 wpm is sufficient to be productive at work. You can reach 70 wpm by practicing 15 minutes a day for a few months. You're a programmer. You can do it.

Expecting a lifetime of computer input? Don't optimize for easy key-to-output mappings such as QWERTY or Dvorak. Learn stenography.

See Plover and Javelin.


For prose, it probably is the best, but have you tried it for programming? I find that my keyboard usage is dominated by text-editing shortcuts and punctuation characters. Not sure how well stenography would fit in.

On a similar note, though, I have amassed a "dictionary" of 50+ bash aliases, 1-, 2-, or 3-characters long.

Some "theories" emerged as well - I have groups of aliases whose names follow a pattern and depend on what subcommand (e.g. in git or kubectl) or options are included in the alias. This is good for mnemonics.

For extremely common commands, I ditch mnemonics and just choose a 1- or 2-character name that has no connection to the name of the command. For example r='cd -'. I chose "r" simply because it's on the opposite side of Enter, and I get to alternate my hands. (I guess this is a "brief".)

What got me into the alias hoarding business was the discovery of complete-alias[1] and, later, the progcomp_alias bash option. Turned out, you don't have to choose between aliases and programmable completion, you can have both.

[1]: https://github.com/cykerway/complete-alias


When I program I write words with two or three strokes thanks to lsp, company, yasnippets and <return> or <tab>. On my keyboard tab and return are accessible with my thumbs. I can perform any task related to my window manager, manage multiple monitors and windows with two fingers of the same hand, without moving my hands from the keyboard.

My keyboard is a macro-keyboard by default, "input" is a specific mode of the keyboard, that's vi but for whole desktop.

I type 120+ wpm, most of the keys I can type is an abstraction, the rest are characters.

All of that said, I do think there's no better thing as a split keyboard for controlling ergonomically your computer.

I was interested in stenography, but that's too much work to probably never reach the velocity and comfort I have right now.


Do you find that you have a particularly document-heavy workflow? Because I find I spend far more time navigating code than writing new code, and I try to let Intellisense do most of the letters. I've never felt that a higher WPM would help me in programming.

(Early on in my career someone I worked with had one of those "spend a whole week testing things and then emit a one character change" times, and that left an impression on me)

Then there's the APL programmers, who are all like "what do you mean 'a word'"?


Dear Vim beginner, before getting a fancy keyboard, do remap Esc to some other key.

It makes no sense to have your most important key where it is nowadays.

The reason the back to normal mode key is ESC is because that key used to be much closer from the home row.

My personal preference is to use Caps Lock because each OS has an easy solution for this simple remap and since it's system wide you can use vim modes elsewhere too (zsh and gdb for me mostly). Also in general it's quite convenient to have escape so close.

Do what you will but please don't suffer uselessly for stupid historical reasons.


This is good advice. But be cautioned--at some point you'll want "some other key" to be the left half of your spacebar or some other such nonsense. And then you'll be one of us. Forever.


Caps lock is such a waste of prime keyboard real estate, even for non-vim users!

For those who don’t use vim, just switching caps lock and control is probably better so you can copy and paste with less contortion.

For vim users, I highly recommend remapping caps lock to be control when held, and escape when tapped.


I jump between using a Mac and a Windows machine for development. Remapping capslock to ctrl/cmd feels more ergonomic, and has the added benefit of making it so I don’t have to remember which machine I’m on.


> caps lock to be control when held, and escape when tapped

Ooh, nice! How do you map it in Vim? Or in MacOS?

I always remap caps lock to control because, Vim or not, I still need control-something all the time. But I always wanted to remap esc to something closer to the home row, but never did since caps lock was already taken :) How do you map the held/tapped keys separately?


Thank you!! I just remapped caps lock to esc and I think I'm in heaven. I've always thought esc was painfully far away, but never thought to remap caps lock.


Just to add to the other ESC remapping suggestions:

Insert mode (i.e. i): space

Exit insert mode (i.e. esc): shift+space

Some terminals have issues with modifiers on keys like space but if you're a vim user on only 1-2 machines and can use something like Kitty then you should be OK.


Huh. I find ESC easier to type than Caps Lock because it is in the corner of the keyboard.

I used to have RSI and what solved it (over 15 years ago) was taking more care to hit the precise center of the key. Using my sense of touch to sense the key's exact location before even trying to activate the key helps me do that. When the key is on left edge of the keyboard, it is easier to do the determination of the exact location (of the left edge of the key I want) because I don't have to worry about accidentally activating the key to the left of the key I want. Caps Lock of course is also on the left edge of the board, just like ESC is, but ESC is also on the top edge, which is an additional help: the easiest keys to type in my experience are the ESC key and the left control key because they are in corners of the board. (The other two corner keys, "pause/break" and the right arrow key, are harder because of how far they are from the home row.)

I never understood the desire many writers on this site have of moving the hands as little as possible. More precisely, I understand the rationale, but I consider the rationale to be misinformed. If you don't move your hands (i.e., because you have a keyboard with only 36 keys or something), you still have to use your arm muscles to hold your hands over the board, and the human brain is better at movement than at using the muscles to statically counteract gravity like that. That is part of it, but there is more. When hitting a ball with a tennis racket, it is ergonomic to take a back swing, i.e., to move the part of the racket that will hit the ball in the direction opposite the direction you want the ball to go, before starting the swing. Very quick back swings are important in typing, too, for preventing RSI (for reasons I don't fully understand). And I think moving my hands around the board (i.e., in the 2 horizontal dimensions) makes it less likely my brain will put the relevant muscles in "freeze mode", which makes RSI more likely. Or something like that.


> Using my sense of touch to sense the key's exact location before even trying to activate the key helps me do that.

I like to use different kinds of keycaps on the same keyboard to give myself tactical hints for this reason. It's common to have `f` and `j` differentiated, but I also have different textures for differentiating the alpha keys from their neighbors and for what I consider "home" for my thumbs.


Vim stockholm syndrome ?

I don't know about RSI yet but I do know one thing : Vim workflow is to make a quick edit and then go back to normal mode as quickly as you can. This prevent accidental inserts and you are always back at the command center for your next edit. The same way some people understood most of the time is spent reading code rather than writing, vim's insight is that more time is spent doing edits than actually inserting text. So maybe strecthing your pinkie to the far (but admittedly easily locatable) corner of your keyboard is good RSI exercise I don't know but the Caps lock is just as easy for your finger to locate and don't require strechting. It's just better.


For me it's the same as them, and it's because I don't bother with home row typing. Too restrictive, my fingers don't easily bend that way. Instead I do a sort of whole-(laptop)-keyboard thing where I know where the keys are relative to the edges, and use my shoulders and elbows to move my hands as much as I use my wrists - no twisting needed, so Escape is as easy to hit as most other keys.


>use my shoulders and elbows to move my hands as much as I use my wrists

Yes, that is what I do. In particular, no muscle ever needs to stretch to anything close to the limit of its range of motion the way I type because the shoulders and the elbows can move over a much larger range than what is needed for moving the hand around its half of the keyboard.

Note that there is a third alternative, namely to keep the palm of the hand stationary and use the tiny muscles that move the finger left or right relative to the palm, which strikes me as even worse than bending the wrist left or right, and there is a keyboard called the DataHand that encourages, nay, requires, that:

https://deskthority.net/viewtopic.php?t=16008

This DataHand keyboard has very bad ergonomics, IMHO, and my guess is that switching to it causes more RSI than it prevents.


After using a keyboard with Esc even further away than usual, I've found myself using Ctrl-[ more often. I should look into remapping capslock.


Please do that, it's a simple option in the settings of any OS.

Why use such a convenient tool as vim if you have to make a weird combination for the single most important key in your editor ?

I know one gets used to anything but still.

(I personally believe it doesn't make you that faster but it does take away the dullness/repetitiveness out of editing)


Honestly even if you don't use Vim it's worth doing. I'm a big fan of interception-tools' caps2esc on Linux.


The reason why I recommended this simple remapping is because there's no need for any tool. In each OS there's a simple, GUI accessible even, option for that remapping.

Combining Ctrl + Esc is even better no doubt but it takes a bit more work

The jk solution is great but it won't be available in other vim modes elsewhere


Binding caps lock to control when held and escape if pressed alone is the greatest


I agree with this, but there is another default combination that is escape , right?

I realized that esc was difficult in vim when I was forced to change due to the original MacBook Pro Touch Bar.


Ctrl-[

It's not bad, but not all that comfortable on my left hand pinky finger.


That’s it! I have come to use this without thinking and I have not noticed any discomfort.


I experienced the same thing in another aspect of my life. My light switches at home can't light the room with just one switch for some reason. Each time I want to enter a room, I have to write LIT in morse with the switch. It was a bit weird at the beginning but now I got used to the pattern and I can do it under two seconds and I have not noticed any discomfort.


inoremap kj <Esc>

:)


It's a great idea but it's not portable in other simple vim modes that generally lack the possibility of such a configuration, and if they do provide it, now you have another configuration to take care of.

Why I like my solution : It takes three seconds to activate in any OS and it's available system-wide


I use this one, too.

I've seen a lot of people recommend jj, but that's part of something I type a lot, so I had to choose another. jk works okay too, because I don't use that acronym.


I thought I was the only one insane enough to do this.


There are dozens of us! Dozens!


This is so useful I have it baked into my keyboard!


Long-time programmer here who is a typing machine, without discomfort, thanks in part to heeding Internet warnings about RSI circa 1990, and to finding what works for me.

One of the things that matters for me when seated at a desk (I also do standing desk) is that I like to be able to have my feet flat on the floor when seated, and then for the keyboard height to be lower than most desks.

If you're similar, and you're considering those powered height-adjustable desks, note the minimum height in the specs of a desk (and that the actual minimum height might be an inch or two higher, due to the top thickness and/or leveling). Importantly, the "3-stage" ones on Amazon go lower than the "2-stage" ones.

You can also occasionally find rare low fixed-height desks. I also once realized that the legs of a university lab's white laminate desks were interchangeable with the legs of matching shorter white laminate side tables. (I quietly swapped a set, under the cover of night.)

On chairs, I don't like armrests in any case, and also, note that, if you have a lower desktop or keyboard shelf, armrests on chairs might bump into it.

If you want to remove arms from a chair that has them, check how well that works before you spend a lot of money. Aerons with arms look like they can come off pretty cleanly. I've had good luck with some more conventional commercial-grade office task chairs. I've also seen office chairs that leave unsafe heavy-duty welded steel frame protrusions out the sides, with corners that could rip into someone's leg someday. Steelcase Leap V2 arms can come off, but not cleanly, so it looks kinda dumb for how much money you spent.


+1 on arm rests. I hate those. They box you in and lift your elbows uncomfortably high thus cutting off nerves in shoulders and arms. The word arm rest implies that these somehow are about resting your "tired" arms. I've never experienced any form of arm fatigue while using a chair. Just not a thing. Complete anti feature. I don't need them. They come off if I have the choice. I won't buy chairs that have them.

Some of my other tricks include walking a lot (during my commute for example) and generally getting up regularly. I have some mini life hacks like getting a glass of water and not using things like water bottles or tea pots that "allow" you to stay at your desk longer. Anything that forces you to get up is a good thing. A simple stroll to the kitchen is a good thing. Standing desks are great too.

Also, because I figured out that a lot of my issues are shoulder related I do some simple exercises to loosen those once in a while. That's also why walking helps. Swimming is also great. If you sit still for extended periods of time, shoulders tend to cramp up and the nerves to your wrists and hands go through there. Where you feel pain and where the problems are are not necessarily the same thing.


I can echo this myself, however what made the biggest difference for me was having my elbows resting on something taking the weight off of my shoulders. Whether standing or sitting if I have to keep my elbows “up in the air” it becomes very uncomfortable very fast, otherwise I have no problem doing 12-14 hours sessions.


There's an elephant in this room. Are you all ignoring it deliberately?

Reading all these comments from people about what they do/don't do. Nobody seems to address the giant stinking pachyderm: are you right or left handed?

Left handers have to exercise their right hands, because of all the kit made for the right-handed majority. Almost all these fancy vertical mice are right-hand only. In fact most mice are RH only. I sometimes use a cheap 2nd hand gamer mouse I bought for when my main one's batteries die: it's RH-only.

Digital cameras? All RH only. Most mobile phones? Mainly for RHers.

We sinister types must use our right. Most right handers barely use their left.

20Y ago, in my mid-30s, I switched to mousing right-handed at home. I'm a leftie, but I worked in support for 15-20 years and I had to use customers' machines the way they were configured. Usually that means mouse on the right. I could but didn't on my own because they're mine.

An ex suggested switching and it really balanced my hand usage. Gave my tired sore left a rest, made my under-utilised right pick up the slack.

I also trained myself to clean my teeth with my right, to practice my coordination.

Never mind rock climbing or whatever. Nobody needs to climb a wall to get to work. But pretty much everyone needs to clean their teeth.

Learn to use your left hand for more. Learn to mouse with it, or use your touchpad or whatever. Learn to clean your teeth with it.

Spread that load out. Even the workload on your hands and wrists, and they'll thank you for it over the decades.


I'm left handed, but I very early on (ie. like around age 5-6) I switched to using my right hand with a mouse. Since getting wrist pain in my right hand, I've purchased a magic trackpad which I keep to the left of my keyboard and I alternate between left w/ touchpad and right w/ mouse. It's worked very well for me!


Same. I'm right-handed, but switch to left-handed mousing when my wrist started hurting. Now I switch back and forth several times per week. Nipped my nascent carpal tunnel in the bud I think.

What's interesting is that it's not as hard as it sounds. You basically just reverse your left/right click settings and your brain picks it up very quickly.


Hmmm. I never switch the buttons and TBH I never understood why that option was there. It's no harder to move between 2 (or 3) buttons with my index finger on either hand.

Do some people use different fingers on the different buttons?


I still find using a mouse with my left hand a bit awkward, but using a touchpad is just fine


Good plan!

I didn't have that option as I was born shortly before Douglas Engelbart did the "mother of all demos". Mice hadn't really been invented yet.

https://en.wikipedia.org/wiki/The_Mother_of_All_Demos

Sadly for me I crippled my right arm in a bicycle crash in April and now it's quite painful to use it for a mouse, so I use it in my left hand mainly now... but I am working on it.


IMO it's easier to get the gestures with your off hand on a trackpad down than the more particular movements of a mouse. It's less constraining and you're likely already used to using it in a similar with a phone


I too have been programming for 40 years, am in early 60's, and amazed that I have no real wrist issues from all that time of typing, etc.

I've also been a pretty avid WASD + Mouse gamer for a long time as well, and I think gaming probably causes me more issues than programming.


I'm in my early-mid 50s, I've been programming for over 40 years and like you I have experienced more cramps and discomfort from Ctrl/Shift + WASD while gaming than any programming I have done.

I am a rock climber, however, so I have some significant muscular development in my forearms. And the thought of that reminds me that from time to time I have had problems with my knees, which started when I was a child. My knees become painful and collapse under me. And the solution has been to do weighted leg extensions to strengthen the push/kick muscles.

So I wonder whether these wrist problems can be overcome by strengthening exercises.

EDIT: and then I scroll down and see that Fabien is a climber. So I guess that refutes my theory.


I've been using a computer for 30 years and have no pain and not particularly strong... Whatever that means


What immediately comes to mind for me is: how much are you holding down? Compare gaming and programming and it's pretty obvious which one is going to be the killer.


Same here, same setup as his 1st step. No need for fancy standup mouse, ergonomic keyboard or all that crap. This guy deserves a "your weakness disgust me" gif on his blog.


That’s a bit harsh. 57 here and my forearms, elbows, and wrists are f…ouled up without an ergonomic split keyboard and some other accommodations. Bodies are different, and if this guy is a rock climber, that might have something to do with it. But flat, tight keyboards give me tendinitis in as little as a day. I can’t even use my laptop without an external keyboard, which kinda defeats the purpose, but it’s what work gave me and it’s more powerful than my current, out of date, PC.


I climb and the typical position at workstation of hands pronated + shoulders forward sucks for postural health. I currently am dealing with bilateral proximal bicep tendonitis from excessive climbing and even being at the computer for a few minutes aggravates it. I wonder if it's possible to rig something up to be able to type in a supinated hand position and if it would be not super infuriating.


Hahah, oh dear, and you claim to be early 60s too? And yet here you are still acting like a teenager on the internet. It's fun to be young, but you have to put it behind you at some point.


I didn't quite make it to forty years, but I think I could say I made it to 37 (1983-2020). I've also spent more time than the average programmer writing on a computer, and I've never had any significant RSI-type issues. This might be a bit controversial, but I think part of the reason is that I'm not a traditional touch typist. That's not to say I'm slow, either. I've probably worked with well over a thousand other programmers, and the only person I'm sure was faster wasn't any of them. It was my mother, who was a professional typesetter longer than I was a professional programmer. Only a handful of other programmers have even seemed close.

So, why do I think that relates to my lack of RSI problems? Because with my seven(ish) finger method my hands constantly rove over the keyboard. What they don't do is stay in one fixed location, with the wrists in the same (usually somewhat awkward) position as only the fingers move. That maximizes repetition - the R in RSI. Minimizing hand motion this way is bad. If you want your hands and wrists to stay healthy you have to keep them moving, just like any other muscle/tendon/ligament complex in any other part of your body. It's silly to think that the general rules of exercise and flexibility don't apply to hands.


I'm not a rockstar, but I've been sitting in front of a computer for most of most days for the past 20-something years.

What I'd recommend is varying everything as much as possible, I found always being in the same position and using the exact same movements day in day out is what seemed to cause problems.

I've got a mouse, a trackball and a trackpad all connected. Trackpad is on the left, others on the right. Trackball is a Kensington Orbit (fingers, not thumb, on ball). When adding a new input method take away the old ones for a week or so in order to create new instincts, or you'll just always reach for the mouse.

Keyboard is just a standard mechanical TKL (the trackball goes where the numpad would) - in my experience programming involves a lot more thinking than typing, and I avoid editors/IDEs which encourage constant hand-contortions to use hotkeys. For me, at least, optimising for keyboard efficiency would be a waste of time.

My 43" 4K monitor set at 100% scaling is perfect. I can see a lot of code side by side. A second 28" monitor in portrait mode usually contains slack, a tiling terminal and the UI (browser/emulator) of whatever I'm working on. On a laptop I'll use multiple workspaces and get by OK, but more pixels are better.

I gave up on ordinary office chairs, I've always had a slightly dodgy back ever since I was a teenager and it got fairly bad a few years ago. I switched to an ergonomic "wobbly stool" and that's worked well - I'm forced to move around because it's never totally stable. Sometimes I stand, but if I'm trying to focus I do still need to "sit and think".


While everyone is different, it's nice to read about other's journey and the hardware they recommend along the way.

I've been developing as long as the author, but lucky enough to not have any serious forearm/hand pain during that time. There was a time a decade ago where I had some mild pain, but taking frequent breaks helped tremendously. And like the author, I started investigating other keyboards as well.

Today I use a Moonlander Mark I and Apple Trackpad on one system, and a Lenovo TrackPoint II and Logitech MX Master 3 on my other system. Both configurations have their merits, and are equally good in my opinion. It's also surprisingly easy to move between them.


I've been using computers since I was a pre-teen, it wrecked both my forearms (and later, my neck) in my early 30's. There was NO WARNING, the issues just happened out of nowhere. I always thought RSI, if it happened to me, would happen gradually and I'd know to stop/rest. The neck stuff has taken a decade to heal and it's still not back to normal.


Just want to mention sticky keys[1], as it seems often overlooked.

Instead of holding the modifier key(s) when activating a shortcut, you can press and release each modifier sequentially.

It does come with some of the fancy keyboards' firmware, but is also a built-in feature of all major OS-es. You can get it without spending a single dollar.

[1]: https://www.emacswiki.org/emacs/StickyModifiers


I am also 46 and can not do much of anything physical with my hands anymore, such as sand, paint, use a screwdriver, etc. Years ago I switched to an ergonomic keyboard (Kinesis Advantage 2) and a vertical mouse. Neither bother me at all, I can type and use the mouse just fine all day. Unsure if the two are related. Does the pain I feel from sanding indicate I'd feel similar pain with a non ergonomic setup? Not sure. But I am glad I made the switch, just in case.


40 years of development here, too .. my solution to the RSI problem, which I discovered in the 80's, is quite simple: change my keyboard and mouse setup regularly - simply don't use the same keyboard/mouse for longer than 6 months, maximum.

Adopting this policy has kept RSI problems at bay, at least in my case. I have 3 or 4 favourite keyboards and I just switch them around ... giving my hands a chance to re-train on different weights/resistances of keys, etc.


After a lifetime of programming I feel like I still have a pretty-good “keyboard stamina”. I attribute this to not having any habits, let alone bad ones. Or maybe they’re all bad. I’ll explain.

I started programming pretty early, but I didn’t have a desk until my first job after college. I pretty-much made do with whatever situation was available to me. I also started working pretty early, doing physical jobs. I bucked hay for local farmers at about 12 and started shearing Christmas trees at about 15. The latter doing a lot of damage to my shoulders over the next few years. In college I rowed crew, which didn’t make things better as far as my arms went.

After college I started programming and I’ve been doing it professionally for going over 30 years now. It’s never really been physically comfortable. Even back then I was good for like an hour-long sit at most before I had to get up and move around and “get the blood flowing“ so to speak. That’s never changed. I still don’t like working at a desk. I stand, I sit on the floor, I sit in comfortable chairs, I lay down on the sofa, I’ve been known to steer a sailboat with one hand and program with the other.

I feel like this is why it still works for me - I don’t repeat my posture much. I have a really, really low bar for my programming “situation” and take full advantage of that.


I am somewhat of an edge case

My left hands fingers are way more flexible and nimble than my right hand, even though I'm right dominant.

I do basically all typing with all my left hand's 5 fingers, accompanied by just two fingers on the right hand.

I have looong fingers so it works out on standard keyboards without any need to stretch.

But yes, never ever put weight on your wrists while typing, same advice as when playing a violin.


im a little older than the author. I also play a musical instrument that I guess you would say is physically demanding, and I have a hobby that is sort of hard on the hands. On the forums I inevitably follow about those activities, there is a sort of background of paranoia about how if you don't do everything perfectly all the time, your hands will be ruined, you will never have seen it coming, and you should base all your decision-making regarding practice time around avoiding catastrophic injury.

I'm sure there are some other people who share my interests who have been the victims of misfortune when it comes to RSI injuries, but I think for the bulk of us who do anything repetitive, it's not incredibly difficult to avoid these issues if you just pay attention to what you feel.

For example, on Friday I noticed that, after pretty much a solid week of intense editing of code (I wrote a large thing and then realized I had gotten it all wrong and needed to move a lot of stuff into different files), I kept noticing that my elbows were killing me because they were grinding into the armrests of my chair. It didn't dawn on me until the end of the week that the reason I don't usually have that elbow discomfort is that years ago I took the armrests off my chair, or as the case with my current chair, I folded them backward and out of the way. I had put them down to clean them or something and forgot about it.

If I mind myself, I'll notice the stuff that makes me uncomfortable. If I try doing whatever that is less and I feel better, then I've learned something. If I stop doing the thing that I've learned makes me uncomfortable, that's great. If I did it too long and I need to visit a doctor or a therapist to help me undo the damage, that's great too.

So long story short, pay attention to how you feel, recognize that however you feel is probably a result of the choices you've made, intentionally or not, and treat your body as a machine that needs maintenance and either find a good technician or learn to do it yourself when it makes sense.


I’m about the same age as the author and also tried the freestyle as my first ergonomic keyboard.

I’m now a big fan of my keybordio model 100.

If you’re young and you plan to do this for a living, a good ergo keyboard with firmware you can customize is one of the best investments you can do for your hands’ (and arms) health.


I've been programming (and gaming) 40+ years now, and weirdly, the main RSI injury I have is actually from when I was a kid using the Atari joystick as a left hander (this one https://upload.wikimedia.org/wikipedia/commons/3/33/Atari-26... )

now any fine motion where I need any kind of pinching motion for more than 30 seconds is super painful and by thumb pretty much gives up (using my thumb to tap the spacebar on the keyboard is fine though).

Since learning about RSI about 30+ years ago, I regularly exercise and stretch my hands, so I think that has helped a lot.


At least he has a desktop. I cringe every time I see someone spend all day on a laptop.


I have found a trackball to be even better than a vertical mouse. Only your thumb moves.

Otherwise it's also Ergodox for me. I switched to Colemak at the same time, also have a programming layer ()[]{} etc. In addition I have a layer for cursornavigation and selection, word wise/char wise/start&ens of line/page wise, comparable to vim mode, but using the default shortcuts for Windows and macos (with the help of Karabiner)

It took a few weeks to get up to speed but I couldn't be happier.


what trackball are you using?


Logitech MX Ergo

https://www.logitech.com/en-eu/products/mice/mx-ergo-wireles...

Note that the tilt only has one level (flat and tilted), the animation might make you think otherwise. I use it in tilted mode.

It is highly customizable using the Logitech options software which I am using on both macOS and Windows. For example you can assign actions to all the buttons that are dependent on the running program, and even involve custom key combinations.

The only downside of the trackball is that you have to clean it once in a while, when the pointer appears to be moving very slowly - simply eject the ball by poking a screwdriver into the hole at the bottom of the mouse, clean out the accumulated dust and push the ball back.


I went tough much of the same in my 30s, and essentially went through the same steps and came to essentially the same conclusion, except in my case it means living on laptops with a trackpad


After less than a decade of programming around 8-10 hours every day, I could barely use my hands anymore. My forarms and shoulders were like marbles. I even stopped playing musical instruments because moving my finders was torture. Vim and split keybord (Dygma Raise) was my solution. I could feel the difference right away now, almost a year later, I don’t feel any pain at all. I feel lucky because I know people who have had to have surgery.


I recommend checking out Talon Voice[0] if you’re experiencing any wrist (or similar pain).

It’s a very intuitive and customizable voice coding tool, and even if you don’t need it at all times, you can use it to lower the strain on your hands. It’s surprisingly productive, too.

[0]: https://talonvoice.com/


I'm curious if typing speed is any indicator of problems, or lack of problems. Per previous comment, I've been "typing" for over 40 years, no real problems, and am a really, really fast typer. My hands don't spend a lot of time locked in one particular position, and my fingers are moving all kinds of ways constantly when typing. Just a thought.


how fast?


60-70 wpm?


I took the opportunity to learn an alternate KB layout (Workman) and I think that has been beneficial for my hands, which are average to slightly smaller than average, so QWERTY movements like T are a slight stretch. Have also got the split KB (Kinesis Freestyle Edge, which is OK. Would like something that can run QMK or similar). Also paying attention to the little nags and working them out is definitely valuable. For, e.g. I run 'g sta' (git status) often, as well as 'g lscm' (git log -20 --pretty etc); now I use Bash bindings to run both with Ctrl+j, and 'cls' with Ctrl+l. I've even started using the KB's 'action keys' (I.e. those ones that aren't part of the standard ANSI/layout) for Winkey+1..n to spare my left hand the awkward chord from winkey to the number row. I also run a trackball for dev and a mouse for gaming so that I split my use over different muscles. Hoping it all keeps any kind of injury at bay.


Some things that have worked for me:

- Fish oil.

- Getting enough protein.

- Yoga. Especially for tight forearms and shoulders.


Just to add, yoga should really be done using a variety of stretches for your whole body. A professional trainer can also show you how to do the stretches properly. I often go straight to what I know works for me though.


Well, I doubt that an ergonomy is the reason here. Going gym consistently benefits much more, rather than switch devices. I have never seen healthy programmers over 30 who avoided physical activity. But I saw how people from constant switching of ergonomic devices and clinics visits just in several months were able to forget about most of the pain in wrists and back just by consistent increase in their physical activity and adding some resistant training. Their back CT looks the almost same, but their lives are significantly improved. I work on any devices and sit on various chairs for almost 25 years, and never experienced any significant pains. Just visiting gym and having some massages. In my case the most significant factor that affects back health is stress, but massages is what help to maintain it.


Only 1 monitor for 40 years? p impressive


i'm the same. i don't understand why some fellow programmers need multiple monitors: one is already plenty enough for me. (i'm using a tiling window manager, switching back and forth between different workspaces, having another monitor would require moving my head while i can instantly switch to another workspace from my fingertips)


I'm the same too. Having multiple monitors makes no sense to me.

With a keypress, I can switch between fullscreen workspaces. Or place two windows side-by-side when needed. My desk is free of clutter, and I never have to deal with configuring multiple displays.

I believe multiple monitors are less elegant and less effective (though a giant workstation full of monitors is perhaps impressive to family and friends).

A similar topic: I also don't understand why some fellow programmers need syntax highlighting. Some programmers have never even tried programming without it! And to them it might feel weird to go without at first, but I think it quickly becomes clear that syntax coloring is noisy and superfluous (and you might end up wasting time picking colors, etc.). Imagine if we did that for natural language (verbs are green, nouns are red, etc.), or math notation (numbers are blue, variables are pink, operators are orange, etc.). The silliness becomes clear quickly.


+1

I've found that, for me anyway, one centered large monitor with enough real estate for your daily tasks is better than N smaller monitors. This is even if "total number of pixels" is larger on the N-monitor setup.

It's one less decision to make 1000 times a day (which monitor should this thing be on?), and reduces neck strain resulting from switching your focus between monitors.


A couple of years ago my setup was three 27" 1440p monitors, these days I am down to one 13" laptop screen and am way more productive! With all that screen real estate, it's way too easy to have your "work" on two of the screens, then Reddit/Hacker News on the the third screen and kid yourself that you are "working".


I usually like 1.

But, it can be nice to have one for output; plots or something.

I assume folks who work in a corporate environment would want one for slack, outlook, or whatever.


You don't need to "move your head around" if you use TWMs like xmonad or spectrwm.


It's been years I have 2 or 3 monitors and I find them annoying and mostly a waste of power.

Every now and again I use them as a reference screen against something I'm doing, but my neck starts hurting pretty quick. Alt-tabbing rocks. They tend to be mostly empty.

Alt-tabbing means improved focus "one thing at a time" too.

I'm thinking to keep a large 32" screen in front of me, ditch the side 32" and get a "portable LCD" to put "under" as if my keyboard is a laptop and I'd have a laptop screen below my main screen. That should be hopefully useful as a reference screen.

Having 2 or 3 of the exact same screen makes no sense to me anymore. We're not with 19" CRT Sony trinitron anymore :)

I'm surrounded by a wall of screens and I don't know what to do with them (that is useful and not distracting).


Portrait displays are worth trying, in my view. I've gone through various iterations of multi-display setups, and I've settled on having 2 x 27" portrait displays at 1440p (or scaled 4K equivalent), one directly in front of me and one to the side, plus a landscape display of any size to the other side.

Both the portrait displays get a good amount of use. The central one is most important of course but the one to the side is useful too as I don't have to turn my head much to look at it. Its usual use is documentation or similar but using it for actual work is no hardship.

The landscape display is mainly there because I work in video games, so I kind of need one. I usually use only about half of it at most, though, to avoid having to turn my head too much. If I was in some other line of work I'd probably have a 3rd portrait display instead.

(I did use the large monitor + laptop below arrangement for a while, and that was good too, but one day I knocked my drink over and it destroyed my laptop. So that prompted a rethink.)


> Having 2 or 3 of the exact same screen makes no sense to me anymore. We're not with 19" CRT Sony trinitron anymore

I used to have three 1080p screens. Now I just have one 4K screen, and I still have more screen space :)


I got a 43” 4K TV that can do 60hz with reasonable signal input latency. You can check the specs of many TVs on rtings.com. Just over $200 at Costco these days.

I personally like to use Divvy to chop my screen into sections but mostly I do 2/3 for my IDE (affords me 3 less-than-full-width columns for source) and 1/3 for the browser. I have wanted to have an iPad for displaying docs but haven’t gone there yet.


Is it as good for your eyes? Aren't TV designed to be looked at from a further distance than arm's length?


Not the GP, but the pixels on my 43" 4k TV are just slightly smaller than those on the 1080p monitors it replaced. I have the TV positioned about an arm's length away. It's farther than the monitors it replaced. And it's far enough away the I don't have to crane my neck side to side. (To that end, I also use a tiling window manager and have ~3 inch gutters on the side.)

I love it and it's just a $200 TCL TV that happens to have good response (thanks rtings.com).


Doesn't even mention what a legend he is one time, just straightforward useful clearly presented info.

Legend.

Also: the part about rock climbing because you can't think about anything else resonates. I run for the same reason.


I can confirm that the vertical mouse (exactly same brand) fixes my wrist issue. I used to feel some pain after playing diablo 2 a few days, a few hours each but now this doesn't bug me anymore.


I have experienced shooting pains along the backs of my hands. I had to lay off typing/mousing for a few days for it to subside whenever I tried typing. After that experience, I learned an alternate keyboard layout (customized-NIRO) and I haven't had any issues since. I don't believe my typing speed changed much if at all, it was all about reducing strain and improving comfort.


The advice given to pianists is valuable for PC keyboard users: "wrists up!"

trackballs are possible to use without fatigue. mice, less so.


Lower back pain is probably the worst problem for many developers. I have ended up doing one minute dead hang every morning.


Ha! Experiences forearm and shoulder pain. Proceeds to mention casually he's into rock climbing. DisplayS photos of games where (jerky) mouse mileage is, to put is mildly, excessive.

Talking about elephants in the room here... I don't think it's the keyboard or mouse, dude! ;)

I've done rock climbing myself. Obviously, it's a huge burden on the ligaments of the upper body. It's also very fun (not in the least because it's a bit scary), but you will feel those wrists a shoulders a bit the next day. Small price to pay, until it because really painful.

I would recommend to the author to try and mix in in some other fun sports like kite-surfing or mountain biking etc. Or dancing (salsa I can recommend if you're open to the latin music). And limit mouse-mileage-heavy gaming a bit maybe? There's a lot of other options (try Return of the Obra Dinn).

Finally, I don't know if other have experienced this, but reflecting a bit on how you do programming can also help. Thinking more, resisting that urge to start typing away did a lot for me personally wrt my wrists and shoulders starting to loving me again. But that may be just me, of course.


I found using a gel pad in front of the keyboard and mouse cured my issues. I was having wrist problems where I got a lot of pain doing bench press or pushups or any pressure against my hands. I discovered this around 10 years ago.


Same on the wrist. I have one of those mice with a trackball on top that you use by running your hand over it. Absolute game changer and not at all difficult to work (probably even more sensitive tbh).


Ha, I was having wrist pain and I got that same wrist rest. I've recommended it to a lot of people. (Although I've never thought about cutting one in half for my mouse :)


I've found that changing keyboards between a flat mechanical and a Microsoft wave keyboard every 6 months keeps the pain away. Don't need anything fancy, just gotta change the exact factors of the repetitive motion.


> Meditation in motion

Is that Pierre-Chauve in the background? Nicely climbing the Rocher du Roi Gros Nez then! I can never get enough of the vistas you get from that crest line..


I find that using the trackpad my wrist is always working to keep my hand over the trackpad without touching it.


Another thing that made a difference for me regarding wrist pain was to switch my keyboard layout to Colemak.


It’s crazy to think that even a rock climber can suffer from RSI. Goes to show it can happen to anyone.


I suspect they are especially at risk. Guy I worked for used to climb and switched to a track ball. When I got into chin ups in a big way within a few months I had some new hand pain. Also heard rock climbing is a young person's game, not that many gray beards, likely because of the toll.


i am early in my journey and would like to take preventative measures before i have to overcompensate with fancy equipment when it is too late.

what is it that one can do without spending too much or making overly drastic changes in how we work?


Standing desks, split keyboards, photos of outdoor adventures... I see these everywhere. Is this the modern developer's midlife crisis at 40?


A WARNING for anyone who thinks this article doesn't apply to them:

If you are reading this post and thinking, "oh I don't have these problems, I'm going to read something else", I encourage you to pause.

Having been in this industry for a while, I have seen RSI-type injuries happen to HUGE portions of my colleagues. I've met many people who have changed careers over this.

The reality is that spending 8-10+ hours a day in front of a keyboard is grueling on the hands, wrist, and arms (not to mention it can be for your back and neck as well).

It isn't a matter of "if", but "when". For some the result is more impactful on their daily life than others, but it does affect nearly everyone to some extent.

So I encourage anyone who is still young, thinking this is a post for "old people", to consider applying some of these principals today in hopes of pushing these problems further down the road or maybe even to put you in the minority of people who never have to deal with them in their career. The apple mighty-mouse thing (whatever they call it now) is horrible for your wrists and hands, throw it in the trash. Consider investing in some of these tools now, so you don't suffer later.

In a similar vein, take care of your posture which can save you from back problems and neck or spine injuries later. Sit/stand desks are great options and readily available now (and relatively affordable). Consider an ergonomic chair as well, and don't be afraid to spend good money on it. You spend 8-10+ hours a day in it. It's worth spending $1,000 on a desk and $1,000 on a chair that will save you thousands in medical bills and a priceless amount of avoided pain down the road. It's funny to me how many engineers making $150k or more a year and won't spend $2,000 on a good desk setup (which lasts for many many years). If you have a work-from-home budget, spend it on ergonomic tools, not a fancy monitor with a higher refresh rate.


Also take frequent breaks! Get out of your chair often. If you're literally sitting 8-10 hours a day, you're doing it wrong.


Good advice. When I was young I used to just "plug in" for one constant (more or less) session all day long. I don't know how I did it to be honest.

But yeah now, I NEED breaks. Walk around, get a snack, go for a quick walk outside. Really anything to break it up. The impact is better on you mentally as well as physically.


I think this is key. I never had too many issues taking breaks, to be honest. Even when 'programming', I spend a lot of the time thinking about what to do, and not actually typing. I heard early on that if you're constantly typing, you're doing it wrong, and I must've taken it to heart.

I'm 44 myself, and fortunately haven't had that sort of pain in my hands/wrists/forearms. Have had back pain though, and that sucks.


I (30m) had only just graduated university (Master of Information Technology, majoring in Software Engineering) when (due to my desk setup that was not ergonomic, sleep position, and other factors) I was hit with an ulnar nerve nerve injury which left me unable to use the computer. It took me six months to recover, and in that time I had to give up my gym habit, all video games, looking for work. I was lucky it happened to me then, and not now. I have a mortgage, and my wife and I are planning children. I can't have this happen again in the future.

The best thing I ever did was get a really good ergonomic chair after this for A$700.


I've been programming since I was 10 and I'm over 60 now. I spend 8 to 10 hours at a keyboard. When should I expect these problems to start?


Am I the only one who finds these "I've been programming since 6" posts silly? I mean, I used to mess up with computers since I was a child, but I wouldn't call that "programming". In fact if I'm completely honest, it wasn't until 5 years ago when I truly started to learn and grow as an engineer, more than the rest of my career combined.

Rather than focused on quantity let's focus on quality. 1 good year of experience is worth 10 bad ones.


This might be particular to the age of the OP. I just turned 47, so I'm one year older than him.

In 1981 (so when I was 5) my parents bought me a Sinclair ZX81. It came with literally nothing except a BASIC interpreter in ROM and a manual. The manual explained how to program in BASIC and had a bunch of listings that you could type in for rudimentary games etc. So when we got our computers at that era all we could do is "program". Was it hardcore software engineering? No. Did we understand it at that age at any meaningful level? No. But it was programming, of a sort.

In the next few years I experimented more and more until I started to grasp higher level concepts.

My point is there was a particular window in time that met these criteria:

- affordable personal computer.

- no (or very few) games available, you had no choice but to write programs.

This was around 1980-1983. Before 1980 most people didn't have access to personal computers. After 1983 you could get computers that could easily read games from tapes or floppies.

So I guess there were a bunch of 5 year olds in that era who were almost forced to program.


As someone 4 years younger, I'd argue the 'good times' carried on until the early 90s, at least for a kid that didn't have any money to buy new games all the time. The games back then were all simple enough that a devoted kid with lots of free time would get bored/beat the game in a day or two, and then you have to find something else to do. Now, there are millions of free games on the internet, not counting pirate/emulation, and also plenty of other media content distractions.

I'd also say that era (88-92) was great for being able to pick up cheap used computers. Commodore 64s could be found at garage sales, and I was fortunate that my father would bring home old IBM PC XT/AT boxes from work that were destined for the dumpster.


Agree, I did program on the Commodore 64 and later Amiga extensively and I too couldn't afford many games. However I'm not sure if I was the typical kid -- in the late eighties and nineties many of my friends had consoles and I had no interest in them because I couldn't program them.


The one sentence that isn't meaningful to the text, and that's the one you wish to comment on?

I started programming a few years later, maybe at 8 or so, but I would absolutely call that programming. I still have the note pads somewhere. It's nothing to be ashamed of, it's a beginner's first steps on a computer that does not exist.


Wait. You started out by scribbling down programs on a notepad and no computer? That's both adorable and inspiring. Were you working with BASIC? I'm super curious what this was like for you.


I did this too! Not on a notepad, but on a Royal typewriter, age 10. My dad had a telecommunications consulting business, based on a remote Univac mainframe he rented time on. He'd bring his Texas Instruments Silent 700 printer-terminal home from work, and I'd sometimes get to play Adventure and what-not if he wasn't using it. I vividly remember typing my first BASIC program on the typewriter, one afternoon after school, and then waiting excitedly for him to get home so I could actually type the program into the terminal. (Pretty sure the program was: 10 PRINT "HELLO" / 20 GOTO 10.)

EDIT: This would have been ~1976.


I did that too. I thought it was common. I learned programming by reading my older sister's Computer Science manual from high school in preparation for me starting high school (2004, Romania).

All school work was on paper so it was a necessity.

But it was fun too. In pointless classes like French, there was nothing better to do. It was worthwhile to work on my personal programs on paper and type them out when I got home.

You had to think about the approach before starting to write it down. I would leave a lot of vertical space in case I needed to put something above. In some cases I would write the code afterwards, draw a rectangle around it, and point to where it needed to move. It was a bit messy sometimes.


I did that, too. Maybe age 6/7. Didn't get a computer myself until I was maybe 11. I learned from library books and ported and modified the tutorial programs for a class mates computer. Pen and paper, what else was there? It was fun and the logic of it was really interesting, but it didn't go very far with the information and equipment of the day (or following decades). What other people found weird was mostly that I wasn't interested in games which is apparently what home computers were for.

I often wonder what life would have been like if I had got some processor architecture manuals and microcontrollers early on. I've only specialized in embedded systems much later in life and spent my earlier life doing other, somewhat adjacent, things.


Adorable? Maybe. Probably also a little bit weird. But kids are like that, they can be a bit weird sometimes. Translating square paper pixel graphics to decimal numbers and writing them down is not everyone's idea of fun.

It was during the first home computer revolution. My library had books on the subject which were intriguing, including the legendary "BASIC Computer Games". Those were written for several different computers, which didn't matter since I didn't know anybody who had them. But soon several of my friends got C64s and we could rewrite them for those.

Which was fun. Maybe not a common pastime back then but not unheard of either. Kids love to experiment and this was just one way of doing that. But it was definitively programming. There's wasn't much else to do with a home computer apart from what few games you had access to.

This reminds me, there was magazines in the regular shops which contained source code listings of programs, including simple games with graphics declared as decimal constants. Before modems that was how many people got their software. Since you had to type them in by hand, it was very natural to make modifications.


> I mean, I used to mess up with computers since I was a child, but I wouldn't call that "programming".

Well, he does call programming whatever he did.

In '83 they have sold 5 million computers according to the wikipedia[1], I am sure tens of thousands of 6 year olds started programming on them.

[1] https://en.wikipedia.org/wiki/Market_share_of_personal_compu...


I've been coding for 42 years (since the age of 13), about 33 years as a professional developer. I do tend to downplay the stuff I did on my own for the first 9-10 years because a lot of my peers started then too, but the stuff since late '89/early '90 counts.

More relevant to the post, I have had some pain in the past, mostly neck/shoulder from the monitor not being high enough, but some finger pain too (tendinitis - even before mice use was prevalent), switching to a vertical mouse has helped to reduce it quite a bit. The mouse I use currently

https://www.logitech.com/en-ca/products/mice/lift-vertical-e...


I'm not sure why it would be silly. I started playing baseball when I was 6, and if I continued to this day I would say I've been playing for 38 years.


The post is about his environment and computing setup. It has nothing to do with programming. The title and first sentence only mention that he's been programming since he was 6 to give context for his long-term computing use and how his life and computing setup have evolved.


I was coding in Q-Basic when I was about 9 years old. It wasn't much more than colored text on the screen and some inputs for a text based choose your own adventure for a little while but I was doing it. I was also playing other Q-Basic games and then reading their code to learn how to do certain things, then tweaking certain aspects of the code to change things, like what was said in messages and the hud and how much the score went up, etc.

Likely the only reason it wasn't earlier is I didn't have access to a computer until then. My parents didn't buy one until around that age, and I was already bugging them about it because my friend had one and was showing me these cool Q-Basic games he found on Compuserve. I started programming almost immediately after we got a computer in the household.

Now granted 5 is pretty young, I didn't even really know how to read then. But I probably would have by 7 years old if there was a computer in the house at that point.

I was also making Hypercard programs on the school library Macintosh (the original Macintosh) around that time, mainly images I drew with clickable portions to navigate to new screens, like navigating a maze.

My more serious programming was when I got a TI-85 calculator in 7th grade, though, so when I was around 12 years old. I started making text-based games on there, then action based games like Breakout, and at that point I was using plenty of for and while loops and checking keyboard inputs and creating menus and slinging variables around and calling functions and everything else.


I've also spent breaks between classes in primary school, at age 6-7, by writing BASIC programs on graph paper. Within a year or 2 I've transitioned to writing in Forth for XZ Spectrum. I used a Roland DX 80 plotter to "print" my source code. I've even sold plotted images from AutoCAD 1.0 for DOS.

I've also learnt Z80 assembly at the same time, coz the "4th Forth by Fébert Csaba for ZX Spectrum" had built-in assembly too.

I've seen my father designing and building a ZX Spectrum clone from scratch. He did explain the process too, so I got to know how a CPU+ALU+RAM+BUS+IO made up a computer.

So I very much consider those years part of my programming career, because they were very much formative and it was a continuum as programming became my career.

Also, don't forget, that all this was cutting edge shit, because there wasn't anything better available for affordable prices for everyday ppl!

even access to the ZX Spectrum was only possible for me, because my father could bring it home from work for the weekends and I could use it a little bit after school, at the University he worked at. my classmates never even saw any kind of computer up close, other than LCD wrist watches...


Some people actually did program when children, as opposed to "messing around".


I'm sure there's a lot of ways to enjoy programming other than "grow as an engineer".

I'm 42 and started programming in BASIC at 9 thanks to a ZX Spectrum my father bring home one day. During a lot of years my programs were all absolute crap by any standards, but I really enjoyed programming little shenaningans and crappy games. I didn't grew up by any engineering measure, but enjoyed the ride a lot.

That's programming too, if you ask me.


I’ve been programming and reading programming-adjacent books since I was about six. It definitely has shaped my views about hyped technologies since I remember the same sort of rhetoric used to promote OOP and XML and Java as is being used today to promote Crypto, AI and Rust.

I don’t know if it’s made me a better programmer, but it’s made me realize the importance of focusing on fundamentals and learning the ephemeral stuff just in time.


Mmm. I've been programming since 11. When I built my first computer (back then), it was soldering components to a PCB, not plugging a thing-that-only-goes-in-one-way into slots/sockets #1, #2, #3 etc.

So I guess I've been programming for longer than him, despite starting several years later in life. What "programming" means has changed a lot over the years though, I'll say that much.


I don't think it's silly, I like to see "how" people work.

The author is not uninteresting. His experience is far greater than most. You should browse his blog and you'll find you'll learn plenty.

Not every post has to be about something extraordinary. We're all aging together. He wasn't boasting his programming experience onto the viewers.


Have you had the opportunity to compare two 20 years old developers one with 10 years of experience and another with 2?


Feels like weird gatekeeping. Doesn’t count as “quality” unless you’re doing it full time as a career?


I started programming in 3rd grade when a teacher kept me in during recess because I was being bullied, and was first paid for programming in 7th grade when I ported a program from BASIC to C and used the money to buy my first computer). Silly? Didn’t feel that way.


Except the article is about 40 years of typing/mouse injuries and how they dealt with them, rather than 40 years of quality engineering output.


It's an extremely small part of the post.


I mean, I also mostly “messed around” at that age and didn’t really consistently program so I probably wouldn’t say that either. But I wouldn’t rule out the possibility that Fabien Sanglard did.


I almost always see it as a red flag. When I hear someone irl say it I interpret it as a sort of clout hack.

"I've been programming since I was six years old so listen to me when I say we should use mongoDB".


It can be meaningful but it depends on how they've been using that time. If they stayed at one company working on one project on a specific feature for 40 years straight, they may be a world class grandmaster in a very specific area which is only relevant for like 5% of all projects but have narrow experience and be incapable of providing advice on most coding topics that affect 95% of projects.


There's also a critical difference in the causality flow. Time alone will teach nothing but cynicism. But a lot of things take a long time to learn. Age and time is not a useful predictor by itself, but it's often correlative.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: