Automate Everything

Automate Everything

How a small, two-hour investment can save hundreds of hours

It took me a couple of hours, but I managed to automate two big processes:

  • Migrating extremely big ActiveCollab accounts (which can take more than 24 hours);
  • Integrating with translation services.

Before the automation, I had to manually migrate every big account. It doesn’t seem like much — all it takes is entering a few commands in a known sequence, but the hidden costs are much greater. Costs like switching context, finding which account needs to be migrated, communication, etc. It adds up.

Also, translating ActiveCollab to different languages is not that difficult, initially. But what happens when we update a piece of text or introduce a new feature? Then we have to contact the translation service again, send them the new text, and go through the same process — every time we release a new update.

So it took me a couple of hours to prepare and test the jobs that’ll automate this, but it was worth it. This small investment will save me hundreds of hours in the future.

Using Jenkins for task automation

After we set up the servers with Ansible, we use Jenkins for task automation. Jenkins is not the prettiest solution, the interface is far from user-friendly, and there’s a ton of XML behind it. But despite it all, it earned my love for being a productive and reliable worker.

Every time I start making a new Jenkins job, my thoughts go:

Is there an end to this! How many times I have to run a command and wait until X,Y, and Z are done!?

But it gets better:

I’m so glad I set up those jobs; it took me a few hours but they’ll save me and my team hours of repetitive work — hours we can use better.

What automation brings to the table

Let’s talk a bit about how automation affects your team. When you start and see the benefits, you’ll shudder at the thought of going back to old ad hoc solutions.

It’s reliable

Creating a job in Jenkins is simple procedural programming (at least I see it as such), but testing and making sure it’s good takes a long time. The number of automated processes will go up as time goes by, as will their reliability. Most of our jobs have been executed a few hundred times, some even a few thousand times — that’s how they earned our trust.

In case something goes wrong, we get an email notification with all the details (on job failure, the whole output is logged). Jenkins also keeps the records of those details, so solving the problem is easy.

It lets you dream big

We, as a society, fear automation takes away our jobs. But this kind of automation is good. It frees us so we can work on more useful things (like improving our product or giving better support). In some cases, it enabled us to deliver things we could only dream of — like supporting official ActiveCollab translations in many languages. Without automation, we’re constantly under the burden of repetitive work that’s prone to error.

It spreads knowledge

There’s an amazing side effect to automation that tends to go unnoticed — it acts as documentation too. Sometimes when an employee leaves the company, they can take the knowledge of some processes with them.

But if the process is automated, following best practices (clear and unambiguous input parameters, commented steps, guides) — the negative impact of someone leaving is greatly diminished. This is a huge advantage for any company planning to stay in business for years to come.

It lets you recycle solutions

Once I write a job, I often revisit it and use it either as a basis for a new job (Jenkins supports quick duplication) or as a place to remind myself how I solved a particular problem (like “commit if there are any changes” group of commands).

This recycling saves me a lot of time. Today it took me only 15 minutes to write a job because I already had the foundation, a similar job from another project. Instead of having to write and test everything from scratch, I just changed a few parameters and steps — and I was done.

It promotes working smart

Lastly, automation directly influences your team culture. By implementing it (and lead by example, instead of “because I said so”), you promote the idea of working smart and using every minute efficiently. Computers should be the ones doing repetitious work, so we can focus on creative problem-solving.

Considering all this, let me boldly offer this advice: Automate everything!

Or at least try. Once you start, a new world of possibilities will open up and you’ll wonder how you managed to get anything done before. The benefits will quickly become visible and you’ll get addicted to this new concept.

Close