Stop Customizing Like A Crazy Person

Stop tweaking your .gitconfig, .vimrc, netrc, bash_profile, bashrc, .profile IntelliJ seetings, keyboard mappings, color schemes and while you’re at it, put your mouse and attendant pad back on the right of the keyboard!

Deep customizations are the root of all evil, premature optimization is probably ok.

If you customize your tool to an extreme, what do you do if you:

  1. have to remote into a machine without your precious customizations to troubleshoot
  2. have someone come over to your desk to work
  3. go over to someone’s desk to work

All this customization is a distraction and creates unnecessary problems once you leave your customized environment. Most of these customizations are cosmetic and aren’t really helping you be productive.

Deep customization is a smell. Stop doing it.

Meaningless Suffering

There is meaningless suffering and also meaningful suffering.

Meaningless suffering comes from unhonored agreements, meaningless exercises of process and ritual, and misinformation. The discomfort of realizing your tools don’t work as advertised, or the frustration of slow feedback — human or machine.  Jumping through hoops that add no value and long interactions that break concentration or flow during the day. These are all sources of meaningless and fruitless suffering. The subjective feeling of discomfort felt does not bring any meaningful result to you in the end. It’s a total demoralizing wash.

The notion that we seek pleasure and avoid pain is depicted as natural. Behavioral Economics would have something to say about why we don’t all aspire to be investment bankers and traders, why people would do things with no economic guarantee and thus a lesser degree of certainty of comfort in life. We do things that cause us suffering willingly as well, but the nature of that suffering is meaningful.

Meaningful suffering comes in the form of discomfort and strain in the pursuit of a personal goal. Falling off a skateboard over and over and over trying to ollie a flat gap. Sweating like a feral boar in a Floridian swamp running in the morning before making your commute. The endless repetition of writing in an unfamiliar human or computer language to gain proficiency. These are examples of meaningful suffering, their outcome is positive in the end.

The distinction is important. Accepting the conventional idea of “suffering is bad, let’s just not suffer and get the same positive outcome,” is a specious argument. The suffering is intrinsic to the positive outcome. To learn anything is by necessity hard, true learning and growth usually is.

Convenient Practices

We do what is fast and easy.

I can buy a delicious Filet-o-FIsh from McDonalds in six syllables and twelve seconds.

I walk up to the counter and say “Hi – Filet-o-Fish, to go.” and swipe my Amex. I don’t sign anything, specify any preferences for the sandwich or sizing. It is the easiest part of my day.

However, eating the Filet-o-Fish is pure poison and is a wrecking ball for my health.

You do what’s fast (12 seconds) and easy (repeatable, short ordering). If I had to pay with cash, that would make it harder. If it was necessary to choose between Cod, Plaice, Salmon – I would have to take time and deliberate. If I had to give them my name so they can call it out, I would hesitate (mostly because I’m a weirdo and dislike having someone yell my name out from behind a counter). The absence of all these things reduces my mental barrier and unwillingness to order this tasty mouthful of poison.

Think about the practices involved in writing software. If I have to wait 40 seconds for a compiler before running automated tests, I’ll hesitate. If I have to merge from master every time I want to commit to git, I’ll hesitate. If my deployment involves eight steps with five stateful systems, I  will hesitate.

Further down the line, if I have to dig into a log to measure throughput in a system. I will measure less often. If I have to login to a ticketing system to figure out what to work on next, I will become demoralized and annoyed.

We do what’s fast and convenient not out of laziness but because it’s meaningless suffering to do otherwise. Meaningful suffering, however, will bet he subject of a subsequent post.

Why Argue About Editors?

Different types of systems attract different favorite sets of editors. Lisp-like languages end to encourage Emacs usage, Rails users often favor Textmate, Java users are often praying to the JetBrains IntelliJ IDEA gods. On occasion though, worlds collide and bizarrely unpleasant face distorting feelings of Religion and Tool Chauvanism rear their ugly heads. People want to fight about editors. Team members who’ve sunk a lot of time and attention into tweaking their dot-files and honing their skills at navigating at Ludicrous Speed don’t want to hear about ctrl-p, e-lisp or paste rings — they want to hate your tool and with it, your face for believing differently.

To quote someone with a lot more than me to say about objective truth: “you have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.”

Should we still debate and argue knowing that there is no singular editor worthy of our complete and undivided dedication? Is there any point to getting competent at using a singular tool at all? Why become competent in anything if sinking that time into competency is just an exercise in manifold futility?

In my youth I was convinced vi{,m} was the one true editor (I mean, it fit on a floppy boot diskette while Emacs didn’t) and I could fly around my buffers using a cryptic and mentally internalized mapping of keystrokes. After spending some time in the JVM based language gulag archipelago I was convinced of the JetBrains tools efficacy due to commercial tool curation of features.

After spending time with different editors in a few different languages as hobby and work tools, I began to experience decision fatigue about a year ago. I couldn’t screen in and out of a remote IntelliJ session, I couldn’t customize Vim without crawling face-first into hell, I couldn’t navigate in Emacs efficiently without inducing tinnitus in my ear-drums from the pounding of keys. All hope seemed lost.

I’ve come to think about editor debating as more than bike shedding, more than a bunch of people trying to trolls/flame/peck and annoying each other. It is (when done fucking respectfully) a form of spiritual exercise. Pierre Hadot, the historian of philosophy specializing in ancient western philosophy had the interpretation that ancient philosophy was a form of spiritual exercise. The way philosophy was taught at the academy, to Hadot, was specialized and detached from everyday life. Academics would try to take the knowledge of antiquity and formalize it into a linear series of unavoidable conclusions, ultimately leading to an academically acceptable “oh, I get it,” moment that indicated your understanding of a corpus of knowledge.

Stripping editor debates down to their conceptual content is missing the point. We should hate other editors, have a favorite, have a least favorite. Disagree and strive to prove each other wrong.

“For Aristotle,” as for others, Hadot says, “the discussion of problems was ultimately more formative than their solution.”