Reading "Zen and the Art of Motorcycle Maintenance" made me want to understand the tools I use, to tinker with them, to truly make them my own.
I already had an ErgoDox, a highly-customized editor, high income, and a lot of free time — a good foundation for a multi-year obsession with customization.
This post is the reflection of why I — and I believe many other programmers — get into this, how unproductive it can be, and how to snap out of it.
Why do we get obsessed about the exactly right keyboard setup, color schemes, fonts, task management systems?
We programmers like to feel productive. It shouldn't be surprising that I told myself that having 7 layers on my keyboard is simply necessary for productivity. I'll get more PRs merged!
Of course not right away. It takes weeks to develop muscle memory (this is assuming you don't change the setup, and of course you do change it). No, these gains are realized in the long run. This is an investment!
I applied this across the board. A todo app? Tried all of them, and even built my own. Productivity systems? Tried every variation of every system.
But any time I actually tried to measure it, the result was always the same. I'm faster on my ThinkPad using the default settings, and I'm just as organized when I use a plain notebook.
No one in the right mind would spend $500 bucks on a keyboard. But what about a keyboard that is good for your health? Sign me in.
I tried a dozen ergonomic keyboards over the years. Most of them have pictures like this:
Why? I have carpal tunnel syndrome. At some point it was so bad I had to switch to using my left hand when brushing my teeth. I just could not hold a toothbrush in my right hand. Tried every keyboard and mouse under the sun. Nothing helped.
One day I started using a boring low-profile keyboard and paid a lot more attention to the position of my wrists. It didn't fix the problem completely, but it helped a lot.
That's actually what I was told when I had an assessment done at Google. But being a techy, it’s hard to believe that the solution is that simple.
If we don't actually do it for productivity or health reasons, why do we do it?
Desire to be unique — not like others — is a deep psychological need for many, myself included. I grew up in a small Russian village. Half of the students in my school could barely read. So when I started moving from city to city and from country to country, I always carried with me the feeling of being "not quite as"; not being interesting enough.
But being ordinary is not bad. "Cogito, ergo sum" makes each of us irreplaceable and not comparable to each other, by construction. Nothing else is needed, folks. This is, of course, a challenging sell to many, especially in North America where the culture is obsessed with superheroes and outcasts.
Country is on fire? Marriage is falling apart? We can’t fix that, but we can spend hours choosing the best font and color scheme for our editors.
Need to make a difficult decision? Make a risky bet in business? I could do that, but I could also switch my todo list cause my tasks are getting out of hand and it stresses me out.
I believe being overly obsessed with productivity is unhealthy. But putting that aside, in general you do want to be good at what you do. So, yes, learn the tools you use, but most of the gains are in understanding the tools themselves. Learn Bash instead of crafting a perfect
.bashrc. Learn how to touch type fast, instead of rearranging keys on the keyboard.
And don’t forget: we are knowledge workers. So things that affect our productivity the most are high-quality sleep, good air, good diet, etc. Invest into that.
In general, there is nothing wrong with it. If you want to assemble and program your keyboard because that’s who you are, go ahead. That’s a great hobby. If it gives you joy, that’s fantastic. But it’s important to know that is what it is: a hobby, a means of self-expression. Choosing to use a 60% keyboard is like choosing to wear skinny jeans. It won’t give you the productivity boost you are looking for.
The problem is when it becomes an unhealthy coping mechanism. There are better ways to deal with the anxiety created by the lack of control (e.g., meditation, CBT/Stoicism, therapy).
Many great engineers enjoy customizing their dev setup, often obsessively. The given reasons are productivity and health. I think it doesn’t really help with either. Instead, the excessive customization is a way (often not the best one) to fulfil basic psychological needs.