On automation

Exploring minimalism is a multifaceted journey. As I travel down the path; different ideas, problems, ways and possibilities appear. These branches lead to different interpretations of minimalism, but some of them brings the ultimate vision of more time and inner peace nearer. One of such paths is workflows.

Every human being performs repetitive tasks. The tasks are small in size, relatively easy and doesn't require much brain power, hence we don't think about them. However, they require time, as every task. Moreover, they like to appear in inconvenient times or pile up when we decide to skip them a couple of times, and this adds to the background stress of our lives.

These factors create incentives to reduce the background stress the task at hand creates, and there are possible ways to tackle this problem. If possible, we can eliminate it. If not, we can transfer the task to someone, and that someone doesn't have to be another human.

Enter automation.

Automation has similar promises with minimalism. Less mental load and more time. By creating workflows which can handle all the steps needed to accomplish a task, a 5-minute task can become a 5-second one. While this is a nice and enticing promise, it sounds too good to be true.

Because it is.

Many tasks we do intuitively can't be understood by computers well. This is why we have artificial intelligence and machine learning, but there are tasks we can automate. This automation can be done with dedicated tools or we can write ours, and program our woes away we think. However, wise men have threaded this path before and left us clues.

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.
-- Tom Cargill, Bell Labs.

There's another, visual explanation by venerable Randall Munroe of XKCD.


In reality, the path which looked exciting at first becomes thorny as we start to explore the depths, hence we have to thread carefully, and be aware of the traps ahead.

However, there's no need to abandon all hope.

With little preparation, and by being mindful of what we are trying to accomplish, we can navigate this maze and create tools which can take the loads from our shoulders and bear it without any complaints. The key is remembering two things: keeping it simple and iterating.

The first thing is more important one of the bunch, because as a passionate developer, I tend to over engineer. I need to avoid that, hence I plan for the minimum feature set which the tool needs to get the job done. The second one allows me to improve the tool, without crippling my life and the workflow. These iterations add emerging requirements or the features I thought it'd be useful (hint: I abandon at least half of these ideas since they bring no benefit).

When a tool deploys to production and starts to do its job, the mental space it creates is priceless. Because a job always takes more time than it looks. You mentally prepare for it, think about it until the right time comes and then perform. Offloading this to an impeccable agent is a nice thing.

Lastly, watching the machinery I built run makes me happy and creates a satisfaction which I can't describe.

One such tool I created is Magazine Renamer, which allows me to organize my IEEE magazines when they arrive to my inbox. Another, a more ambitious tool is in the works, but it'll take some time to get ready. Will share that one too, but it needs to be useable first.

I think everyone should automate some parts of their life without getting overzealous about it, because sometimes doing things manually are better, however discussion of this a matter of another time.