Are you one of those people who spend countless hours tinkering with configuration for their editors, IDEs, terminals, or other applications? Do you find yourself spending more time on this never-ending rabbit hole of micro-configuration than on actual programming? If the answer is yes (as it was for me at some point), it’s about time you stopped wasting your time.

In this post, I will discuss potential reasons behind this behavior, offer some strategies to overcome it and talk about other serious problems that it may lead to.

Before I continue, let’s make one thing clear. By no means am I saying that there is something wrong with trying to master your tools or attempting to adjust them to suit your specific needs. It’s actually the opposite. I think it’s a great investment of your time that will make you a more efficient and productive developer in the end.

However, it’s important to recognize when constant configuration becomes an obsession and a meaningless search for perfection that’s impossible to achieve anyway. It’s time to learn to accept the “good enough” and move on to more meaningful things that will truly bring you closer to your goals.

People are obsessed with configs

If you were to go on YouTube right now and find any video related to programming, I bet some of the top comments would be one of the following:

  • What’s the editor/terminal that you use?
  • What’s the name of that color scheme and font in your editor?
  • Do you have a link to your dotfiles repository?

Very often, it seems that people completely ignore the content of the video and simply come to the comments section to ask these questions. Why is that? Why are people so obsessed with these seemingly irrelevant details?

One potential reason is that spending time configuring the environment makes people feel productive and can provide a sense of achievement. Yes, you aren’t working on what you should be working on, but at least you are spending time with the tools you normally work with, so you don’t feel guilty. However, the harsh reality is that it’s simply a way of procrastination. It’s trickier to spot because it’s not as obvious as watching TV or playing video games, but the end result is the same - no work is being done.

Another reason is much more profound. In his excellent TED talk, called “The paradox of choice”, Barry Schwartz argues that all of the choice we have in today’s world produces paralysis rather than liberation. With so many options to choose from, people find it very difficult to choose at all. He gave an example of a study on investments in voluntary retirement plans. What was found was that for every 10 mutual funds the employer offered, the rate of participation went down 2%. You offer 50 funds, 10% fewer people participate than if you only offer 5. Why? Because with 50 different options, it’s so damn hard to decide which fund to choose that eventually, people end up not choosing at all.

We can clearly see this phenomenon at play with highly customizable editors like Neovim, where the customization options are almost endless. There are so many plugins to install, so many options to explore and so many color schemes and fonts to choose, that people feel paralyzed and simply look for someone else to make that decision for them. This perfectly explains the flood of questions we see everywhere about other people’s setups.

Another thing is that even if we manage to overcome the paralysis and finally make a choice, the fact that we had so many options to choose from makes us less satisfied with our choice than if we only had a handful of alternatives. Why? Because it’s easy to imagine that we could’ve made a different choice that would’ve been better. That imagination causes us to question the correctness of our choice. If you only had one option instead, there would be absolutely no overthinking, because there was no other choice anyway.

Once again, we can transfer that observation to our domain. The fact that we have so many customization options for our work environment makes some of us feel that what we have right now is not enough, and there awaits a perfect keymap or color scheme right around the corner that will make our setup perfect. It’s easy to imagine that if we just had a different terminal setup or a different IDE, we would become much better programmers.

Accept the good enough

Now that we know some potential reasons as to why people spend so much time on configuration, let’s talk about what we can do about it.

The first and most important step is realizing that the perfect setup doesn’t exist and will never be achieved. That realization in itself might be very liberating and free us from perfectionism, which is the enemy of progress.

As an example, learning to accept the “good enough” allowed me to setup this blog from scratch one year ago in a single evening. I used a free theme created by someone else. It was far from perfect and there were things I didn’t like. Also, I didn’t have a comments section or any other way for people to engage with my content. But I was completely fine with that since my goal was to start writing and not tinker with yet another configuration, so I resisted that urge.

However, if that little mindset shift is not enough for you, it might make sense to introduce some small rules for yourself. I suggest following ThePrimeagen’s advice on approaching your configuration. He recommends revisiting your configuration only once every couple of months, which I think is a very healthy and sustainable approach. In the meantime, take a mental note of the things that are annoying or slowing you down so that you can address them when the time to overhaul comes.

On the other hand, if your goal is to start with an editor like Neovim, don’t bother initially trying to setup everything on your own. Just copy a config from someone you follow that uses Neovim or start with this really cool project called kickstart.nvim. That will allow you to start using the editor as soon as possible so that you can see whether it’s something for you or not. And then, after some time, you will know which things need to be adjusted.

Stay away if you’re a beginner

I would argue that the consequences of perfectionism can be more severe if you’re just starting out in programming. If that’s the case, stay away from all of that for as long as possible. Your goal is to learn programming, so focus on that. Learn the fundamentals first. The time to learn and configure tools will come eventually, but this is definitely not the right time yet. If you try to do everything at once, you will be frustrated and overwhelmed. That may ultimately cause you to give up programming entirely.

The urge might be really strong because being able to engage in online discussions about editors, IDEs, and terminal setups (or understand memes) can give you a sense of belonging to the programmer’s community. But please, don’t let these shiny things distract you from your real goal, which is learning how to program.

It’s not just about configs

Honestly, it would be great if all of this was only about tinkering with our configuration. At the end of the day, who cares that some of us might spend a couple of hours every single day searching for the perfect color scheme for our Neovim setup?

Unfortunately, the problem with striving for perfectionism is that it can also manifest itself in other, much more significant, aspects of our lives. For instance, not realizing that “perfect” doesn’t exist can make you feel dissatisfied with your current partner, the place where you live, or the job you have. This could also mean that you may end up waiting for the perfect moment in your life to start chasing your goals, which will obviously never come.

If the arguments presented in previous sections weren’t convincing enough, let this motivate you to fix your obsession with configuration because, as you can see, your overall well-being is at stake.

Summary

I hope you found this post useful. I wrote it as much for you as for myself - to constantly remind myself that striking a balance between spending time on customization and actual coding is essential. And again, as I mentioned multiple times throughout this post, remember that it’s not merely about our configs in the end.