There are many posts out there calling us to automate everything. And some think that the main reason to automate a task is to save time. While I don’t completely disagree with this idea, I think this is not the main value of automation.
Let’s say for example you have a deployment process. You can write it down and repeat the process manually step by step every time you do it. If the process takes 5 minutes, and you automate it, you are saving 5 minutes every time you deploy. Let’s say you deploy once a day. This means you have saved 1825 minutes a year, which are 30.41 hours… basically about 1.2 days. But let’s say the manual process is long, taking 15, 20, even 30 minutes… now you are saving about 7.6 days in a whole year.
Not that much, right? And it is even less if you take into account that writing the automation script will probably take you at least 1-2 days, which in regular programmer time means about 1-2 weeks. And you also have to support the script, update it, re-test it… So are you really saving time?
The main value of automation is reducing mistakes
Assume in the same example above that you decided to continue performing the deployment process manually. On Friday afternoon someone finds a high-priority bug and management decides to fix it (and assume that it can be fixed in a short time). Everyone is on the effort and you fix the bug. Now you only need to deploy to production.
Remember, it’s Friday late afternoon, you planned to go out with your friends tonight.
So while following the manual deployment process, you skip one of the steps. Not on purpose (obviously :-)), but by mistake. Here’s what can happen:
- You accidentally delete all the customer database.
- You break the backup environment and after the deployment you see that the new version is not good, so you have to do a rollback… but you can’t
I’m sure you can think of more things that can go wrong. So you end up all night at work fixing the system, because you didn’t have automation.
So please, do automate your critical processes, not (only) to (may) save time, but also to minimize mistakes.