Importance Of Automation

If you are a programmer, you should strive to avoid any task that a computer can do.

Do programmers really do manual tasks?

Yes! You might see developers manually editing code that can be scripted, or entering data that can be consumed programmatically.

Experienced programmers are accustomed to slow, buggy software, and it's easy to become tolerant.

To solve the opening problems of his chess machine, Belle, Ken Thompson typed in opening lines from the Encyclopedia of Chess Openings (in five thick volumes). Religiously, he dedicated one hour a day for almost three years (!) to the tedious pursuit of entering lines of play from the books and having his Belle computer verify them. The result was an opening library of roughly three-hundred thousand moves. The results were immediate and obvious: Belle became a much stronger chess program, and Ken probably aged prematurely. Later Ken developed a program to automatically read the Encyclopedia, allowing him to do in a few days what had taken him three years to do manually.

(Emphasis mine, from

Is it always worthwhile?

xkcd has discussed whether the time saving is worth the implementation time.

Automation skills are incredibly valuable though. You might be able to edit five lines manually, but what happens when you have 500 lines? If you've learnt editor macros, you can scale your edits.

This applies to many programming tasks. Can you script your editor, VCS, build tool or test process? Unattended git bisect is an incredibly powerful tool if you've learnt how to apply it to your domain.

What if I need intentional human intervention?

This should be a single button press. Anything else is make work.

If you've never experienced continuous deployment before, it's delightful.

An automated process is repeatable, subject to version control, and encourages regular running. It's much easier doing ten small deploys when it's automatic. Small deploys are lower risk too.

It also forces you to consider steps which haven't been automated yet. Does your new version require a database migration? If the deploy is automated, these requirements become visible.