Three Benefits of Automating Development

As software developers, one of the most common features we are asked to build is the automation of a predefined workflow. This benefits the client by increasing their capacity to pursue other tasks which require their attention, and it also improves the quality and reliability of the task being performed.

We use automation to improve our workflow, whether it’s writing automated tests that catch bugs, scripts that generate databases, or even scripts that order Jimmy John’s for those times when you’re working on a crucial hotfix and don’t have time to step away from your desk.

Most of us utilize automation in one form or another, but for those who are starting their careers or need a bit of inspiration, here are some benefits of automating your development workflow.

1. Automation Saves Time and Effort

This is the most obvious benefit, but it should not be overlooked. The amount of time we spend typing without adding extra value to our projects is wasted.

Back in my days as an intern, there were a few occasions where I would populate a database by hand only to have someone drop the database and recreate it without backing up the data first. This wasn’t done purposefully, but it was a huge waste of my time. I eventually came to my senses and learned about ways to automate this process.

Now, if I know I will be performing a given task more than once, I typically write a script to do it for me. The initial amount of time it takes to write the script is trivial compared to the time and effort it takes to repeat the same task.

2. Automation Removes Mundane Tasks

On my current Ember project, we use ESLint to maintain code format and help align our code with best practices. This is great in theory, but in practice, it tends to be more bothersome than helpful.

As part of an Ember project, if you are using the plugins for ESLint or JSHint, there are tests generated to ensure that your code follows the rules specified in your project’s .eslintrc.js and .jshintrc.js respectively. This seems promising, but it’s actually frustrating for several reasons. Here are a few examples:

  • You had a failing test because you indented three spaces instead of two.
  • Your build server failed to build your application because you had a failing test because you indented three spaces instead of two.
  • Your application didn’t deploy because your build server failed to build your application because you had a failing test…

I think you understand where I’m going with this.

This made me despise linters for quite some time, until I realized that ESLint has a CLI which has the option to automatically fix your code with the --fix option. With the help of another program called entr, we are able to automatically format our code when saving a file.

brew install entr
find app tests | entr eslint app tests --fix

Saving the file triggers the ESLint autofix command running in a background process.

3. Automation Helps You Achieve Higher Levels of Thought

I believe there is a sort of “Hierarchy of Needs” in programming which requires developers to satisfy the base levels of the pyramid before they can ascend to the higher levels. By abstracting away the mundane tasks that once took up valuable time and effort, we are now able to use those resources to tackle the problems we intended to solve in the first place. This leads to a better design and implementation of the solution to these problems.

I am still in the early stages of my career as a software developer, but the benefits I receive from automating my development workflow will set the standard for what is yet to come. If you have any recommendations for tools you use, I would love to hear about them!