automation: n. the technique of making an apparatus, a process, or a system operate automatically
A major buzzword in the software engineering space is automation. “Can we automate this task?” is a refrain frequently heard around the office.
It even makes a frequent appearance on Reddit’s r/programmerhumor:
If we’re going to be so enamored with this concept, then it seems important to unpack some of the underlying assumptions.
Automation should save time in the long run
Consider the dishwasher; a standard home appliance. Instead of standing over the sink and handwashing each individual item, you simply load the item into the machine and let the automatic process take over. Rather than spending hours after dinner handwashing your plates and cutlery, you spend a few minutes loading a machine.
In this case, the results are immediate. Minutes instead of hours. In software development, the saved time often doesn’t show itself until further down the line.
Still, if the work we are automating doesn’t save time in the long run, then what is the point? Many software developers automate monotonous tasks. Things they don’t like doing. And this is certainly a reasonable excuse.
Nevertheless, taking the time to write a lengthy executable script is only valuable if there is a repeatable time savings.
One scenario might be a setup script for your team’s on-boarding plan. Unless your team frequently wipes and re installs their computers, this won’t help the existing developers that often. But, it can greatly reduce the friction associated with a new hire. Thus, saving time in the long run.
Saved time is only valuable when it can be used for something else
Think back to your dishwasher again. It does save you time. But saving that time with your dishwasher frees you up to do something else.
With the time you save not hand washing dishes, you could read a book. Play a game with your kids. Or be productive doing a more focus-dependent task.
This analogy breaks down in a work environment. We might use a dishwasher in our personal time to gain more leisure time. Time to relax. But within the work space, there is always more to do. Always another task. Be sure to consider this before fighting for automation. Are you just trading one menial task for another?
Automation can have multiple benefits
Recently, I learned that modern dishwashers use around four gallons of water to run an entire load. While running water in the sink can use that much in two minutes. This makes the automation of a dishwasher an incredible value proposition right off the bat.
This demonstrates that automation doesn’t have to just save time. Computers are known for being especially fast. However, when writing scripts, we also gain the accuracy of computers. By eliminating some of the human element, we can improve the quality of work, returning a product with fewer errors than its manual corollary.
Automation still requires human oversight
“Did you turn on the dishwasher?” The number of times one spouse has asked another spouse this question immediately before bed is impossible to count. But it clearly identifies the fact that even the best automated processes require oversight.
In software development, we rely on cron jobs for generating nightly, weekly, or even monthly reports. Did those reports run? There have been times when a report was used so infrequently, that it was months later, during an internal audit, when another team finally realized nothing had been running.
Should the team’s Software Reliability Engineers have designed a system to check for outages? Perhaps build a dashboard to display a history of the work? And then setup a bug alert when the report doesn’t run? Absolutely. But all of these things still require human oversight to make sure the automation is acting correctly.
Automation takes time to setup
Automation is rarely a holy grail. It takes time to setup. Even when we use others work and tools, we still have to configure our application to run within their parameters and learn to interpret the results.
Do we gain speed and efficiency with automated testing? Yes. But we also spend precious development time staying up to date with the latest releases and ensuring things keep running smoothly.
Automation is amazing. But there are several assumptions that you should be aware of:
- Automation should save time in the long run.
- Saved time is only valuable when you use it for something else.
- Automation can have multiple benefits.
- Automation still requires human oversight.
- Automation takes time to setup.
If you enjoyed this post or found it helpful, would you do me a favor and hover over my picture up top and click, “Follow”?