Automation doesn’t always save as much time or effort as we expect.
The xkcd cartoon above is looking at automation as an investment. Does the work I put in now eventually save more work than I put into it? Automation may be well worth it even if the answer is “no.”
Automation can be like a battery as well as an investment. Putting energy into batteries is a bad investment; you’ll never get out as much energy as you put in. But that’s not why you put energy into batteries. You put energy in while you can so you can use some of that energy later when you need it.
Write automation scripts when you have the time, energy, and motivation to do so and when nothing else is more important. (Or nothing is more interesting, if you’re looking for a way to procrastinate without feeling too guilty. This is called “moral compensation.”) You may indeed save more work than you put into writing the scripts. But you also may save mental energy just when you need it.
Suppose it takes you an hour to write a script that only saves you two minutes later. If that two minutes would have derailed your concentration at a critical moment, but it didn’t because you had the script, writing the script may have paid for itself, even though you invested 60 minutes to save 2 minutes.
If your goal is to save mental energy, not time, you have a different strategy for automation. If a script executes faster than a manual process, but it takes a long time to remember where to find the script and how to run it, it may be a net loss. The less often you run a script, the chattier the interface should be.
The same considerations apply to learning third party software. I suspect the time I’ve put into learning some features of Emacs, for example, will not pay for itself in terms of time invested versus time saved. But I’ve invested leisure time to save time when I’m working hard, not to save keystrokes but to save mental energy for the project at hand.
Related post: How much does typing speed matter?
Another big win of automation is that it makes it easier to hand off to other people, eliminating a bottleneck (and increasing bus factor).
Adding to Adam B’s comment: The script also works as a documentation of the process which stays up to date by definition.
Thanks for sharing your thoughts. I completely agree!
I like the battery argument! I’d like to supplement with two other arguments in support of automating. Imagine that it takes as long or even a bit longer (in total time spent) to create automation of a task X than to do X manually the needed number of times. Creating the automation may still be worth it when:
(1) you enjoy it more than the manual repetitions and/or
(2) it trains skills useful for other tasks in a way that the manual repetitions do not.
Along this line is using automation to get rid of boring, monotonous tasks so you can work on things that are more exciting.
Dear John,
There’s another advantage to automation that you haven’t mentioned: improved accuracy! If you have a lot of complex processing to do, then a correctly specified and implemented script will do it perfectly every time, while calculations by hand are prone to lots of errors. Of course, it’s not trivial to correctly specify and implement the code, and software bugs will compromise the result. But that’s true of by-hand processing as well, and in fact when tasks are done manually they have to be implemented correctly *every time* they are done, while a program just needs to be done once.
I use some automation scripts as a way to “remember” all the steps needed for complex, but rarely used processes. For instance, Ubuntu Linux is quite a popular system in academic circles, but it needs a few tweaks to lessen the future support load; it is also a good idea to activate the firewall, install fail2ban just in case the user feels the need to install sshd, and to put things like python-numpy on because so many things require it.
This tends to be a long, complicated process that isn’t easy to memorise. Put this in a script, and the process is done correctly each time, and can be done by unskilled users as well.