Two things hit me today as big lessons I’ve learned over the years. They apply to pretty much any technology-related activity be it programming, application architecture, etc. They are:
Try to Stick with the Defaults
Don’t fight your technology. If you have to spend hours of tweaking just to get something working the way you’d like it to, chances are somewhere out there there’s a ________ (language, framework, app, whatever you’re working with) that’s better suited to your needs.
For the areas where you really do need to tweak and fine tune, that’s where lesson #2 comes into play…
Make Your Customizations Reproducible / Scriptable
If it’s worth spending 30 minutes tweaking, it’s worth spending 45 minutes scripting. This is where text-based UIs like the venerable terminal really shine. Over the years, I’ve developed a simple set of Bash scripts for setting up my terminal environment and various dotfiles with a few commands, and I then use Git to synchronize changes, improvements, updates, etc. to these scripts between machines.
I’ve done some heavy customization to my CLI, but I’ve determined this customization is worthwhile enough when it comes to my productivity that I’ve invested time into making it easily reproducible. In the end, I can have my preferred setup on any Linux machine within 30 seconds.
YMMV as they say, but these two lessons have served me well and I enjoy the simplicity of knowing a familiar shell environment is just a Bash command away.