Use Caution When Applying Automation

As a big believer in automation, I certainly can say I’ve gone both ways on the spectrum: I’ve executed things manually, and I’ve automated the system so well, it had more code in the automation scripts than the app itself. Both have been dear mistakes. And I see that I’m not the only one making them.

Automation is a powerful tool, especially if you can achieve end-to-end automation on your software development pipeline. You get the requirement, and you develop the feature, then from the first commit you kick off a chain reaction until your feature ends up in the production system. In your automation, your code is built, tested and even deployed automatically. It’s no small treat to achieve that, and it’s admirable. But it’s also a hell to maintain that state.

In some teams, you’ll find a tendency to over-automate everything. Literally, every single thing. Occasionally, they would spend more time on automation than delivering features. They may even automate their automation processes (once, I saw someone generating deployment scripts and executing them within the same deployment pipeline).

These teams may receive a bug in production, which would require them to run a script to fix some data. But those automation zealots in them would take that script, and put that behind an admin page, an API, or a command-line tool that can be called if needed again.

The problem is, you’ll be spending so much time making that automation, you’ll be losing the value of doing it. There’s even a xkcd cartoon on the topic called “Is it worth the time?”:

Credit: xkcd.com - Is it worth the time?

Keep in mind that this chart is over a five-year period, not a single year. So, when it says, “if you’re spending 1 hour every day on a task, you would save 2 months by automating it”, it’s over 5 years. You would only save 12 days a year.

Before you jump the gun and make up your mind, you need to remember that time saving is not the only benefit of automation:

  • There’s the cost of training when a new team member joins and adapts to that mundane task.
  • There’s the cost of human error while doing that task.
  • A manual process can also bring down the team’s morale over time.

All of these should be taken into consideration when choosing to automate or not.

Now, make a calculated decision: Is it really worth spending time to automate that mundane task? How much real pain this manual process causes us? What else can we benefit from, besides the saved time & cost? What are the downsides?