Customization
https://www.joelonsoftware.com/2000/04/12/choices/
Most advanced users use several computers regularly; they upgrade their computer every couple of years, they reinstall their operating system every three weeks. It’s true that the first time they realized you could completely remap the keyboard in Word, they changed everything around to be more to their liking, but as soon as they upgraded to Windows 95 those settings got lost, and they weren’t the same at work, and eventually they just stopped reconfiguring things. I’ve asked a lot of my “power user” friends about this; hardly any of them do any customization other than the bare minimum necessary to make their system behave reasonably.
As a professional software engineer, it bothers me how little most people seem to be into customization of their setups, be it digital or physical. Sure, I get it if you don’t want to be one of the guys with thousands of lines long Vim config, but most people have not even tried an advanced text editor like Vim. The biggest warning sign in my opinion is if the person prefers to use Windows or Mac, over Linux. In my experience the people very into customization are almost all also great at their jobs, although I know some people who are not into customization at all and still very good.
My main customization:
- Using Linux exclusively for almost two decades.
- Using Vim for over a decade.
- In Linux I use tiling window managers (i3 and sway, but have experimented with others too).
- I use mechanical keyboards and have done basic research into key switches.
- I use a Keyboard layoutKeyboard layout
different from the local one. - I build my own PCs (well, just one so far)
- I compared dozens, maybe hundreds of programming fonts and chose the one most to my liking, which I use everywhere (DM Mono).
- Similarly, compared dozens of terminal color schemes to find my favorites, which I use other GUIs as well, including this website: Tokyo Night.
- I use Firefox (instead of the more common Chrome).
- I have experimented with different terminal emulators (currently using alacritty).
- Experimented with different Unix shells (still using Zsh with a quite large bunch of tuning).
- I have learned to use new wave Unix commandline tools such as
ripgrepandfd. - Constantly write scripts to automate things I do commonly. You should do this often enough to need a git repository for your scripts and dotfiles.
Also a bit related, some things I do because I have some pride about being a software professional (but don’t think most others do):
- Program outside my work. Have technical hobbies like making games, running local AI models, and maintaining this website.
- Practice TypingTyping
. I’m still bad but I definitely put effort into this. Admittedly quite many programmers I know type better than I do.
- At some point I tried out learning DVORAK too, but decided against it.
- Practice coding challenges such as leetcode. While I don’t think it’s that useful to do regularly, I think programmers should purposefully go through them at some point, if only to realize they are not quite as smart as they think.
- Study programming languages that I use (C++, even though I dislike it), and ones that I want to use or just understand (eg Rust, C, assembly).
- Learn to use
gitproperly. Can you do rebases, reorder and squash commits? Do merge conflicts make you panic? - Think about ergonomics of a life spent in front of the desk…
