Table of Contents
The Zen and the Art of development environments Maintenance
To work on tools is not to work To work on tools is to meditate Stagnation is born from excessive meditation Meditation is not a mean to escape duties He who ignores his tools is bound to struggle He who cares too much about his tools is bound to struggle Harmony is to be sought after Harmony cannot be reached by endless tweaking A wise farmer knows the difference between harvesting and sharpening his scythe A wise farmer sows his fields and prepares his scythe while the plowshares grow That division is Harmony From Harmony comes productivity A wise programmer is a wise farmer.
Work time, especially when in front of a computer, has a tendency to break free from its constraints and devour our daily lives and all of this is our own doing. Our culture of being active 24/7, of overworking to burn-out, leaves us with no time for ourselves but most importantly often deplete our mental energies leaving us incapable of any serious work. At that moment, we become mindless procrastinating drones vicariously watching our lives pass us by while we struggle to keep up with the latest memes, trends, tech or tips from some productivity guru.
I regard the always-on-til-we-burn-out mentality as one of the most important problem that afflicts our restless modern society and while I too struggle with this, I humbly believe that a solution or a fix can be implemented, our lives can be made less frenetic, that we can rest without guilt and can focus on improving the quality of our time.
As this is a monumental problem spanning all aspect of society, I will start small by confronting it in one of its gnarliest and most diffuse incarnation: The Quest for the Holy Grail of Tech-Productivity.
The Quest for the Holy Grail of Tech-Productivity
Gear is the ultimate procrastination. (Max Joseph)
Too often I see people caught up in an endless tweaking of their dotfiles and their settings, always searching for the ultimate workflow, distribution, editor, or tool to speed up their productivity. Such Holy Grail not only does not exist but its search is a dangerous, possibly mortal, pursue for one’s own productivity or free-time if this happens off the clock.
While achieving a higher efficiency or simply reducing when working (vi users I am looking at you) is a rational aim, we ought to be aware of the opportunity cost of such an endeavor; asking ourselves at the end of the day “Was it worthy? Have I really gained a tangible advantage? Have my efforts paid off or have I wasted my time?” would make us confront the ugly truth that too often the time we spend on our new favorite tool wasn’t a good time-investment. When we look at the bigger picture we see whole teams of developers, or even companies, struggling with this urge. Always trying to follow the buzzing hype train can lead to ruin.
Fighting Tooling Alcoholism with time-constrained metawork
Trivial or unnecessary work done to avoid having to perform the real task at hand while simultaneously taking the credit for it.
We should always be mindful of the relationship with our tools and the time we spend with them; neglecting them can lead to useless fatigue, while spending too much on learning not-necessary ones is procrastination at its finest. What we should strive to achieve is a self-control on our tool-crawling tendency and a balance between our productive time and our leisure breaks; self control is unfortunately hard to achieve, thus I suggest controlling tooling alcoholism by constraining metawork-activities (which are necessary), allotting to them a predefined amount of time and possibly turning them into a sane “housekeeping” habit.
I have find my personal harmony by self-imposing a periodic (usually on a weekly basis) predefined amount of time (1-2 Pomodori) I can allow myself to spend mindlessly tweaking/exploring new tools for my development environment. In order to make this binge worthwhile, during work, I write down what bothers me and how exploring new solutions might help so that when the time to cares for the tools comes, I have at least some guidelines on what to look for. At the end of the binge, having satisfied my need for distraction, I can usually critically assess whether what I experimented with has enough potential to transition to my routine or if it would be better to stick with the tried and working tools.
It should be noted however, that I will always do this exercise, especially if my “Bothersome-Things” list for that week is empty, in that case I will most likely spend time on “ricing” my system and that is my favorite thing to do since it works like a sort of meditation practice. I relax while focusing on creating an harmonious aesthetics for my machine, tweaking every inch of the interface to my liking while delving through the dotfiles, making myself more and more familiar with my digital penguin friend; all of this immersed in either a podcast, video, audio-book or a new release from my favorite musicians.
I have no illusions, while not the final panacea, this habit helps me keep under control my tooling cravings, allowing me to spend time either on truly productive tasks while limiting the over-workification of my free time.
In the next installments I will dive into how I built my development environment to achieve maximum efficiency with minimal time investment, and when I say minimal I do mean it. Until then, may the zen be with you.