... under (re)construction ...

Zen Symbol

The Zen and the Art of development environments Maintenance

Table of Contents


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 way 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.

Burning out

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 problems that afflict 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 one's own productivity or free-time if this happens off the clock.

While achieving a higher efficiency, improving ergonomics, automating tasks or simply reducing keystrokes (vi users I am looking at you) are all rational goals, we ought to be aware of the opportunity cost of such endeavors.

Asking ourselves at the end of the day "Was it worth it? 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.

More often than not we forget that tools invite tooling, complexity is always creeping in and we ought to actively try and limit it, however I will return to the discussion on complexity in an another essay.

xkcd: Is It Worth the Time?

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 found 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 a 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.

More on this