Developers Happiness
Development Noise
Productivity
Career
Developers happiness
Development noise
Productivity
Career

What should you be automating in the development process?

Oct 25, 2021
10
 min read
Like it, share it!

From the beginning of time, man has strived to optimize the way he lives, by inventing machines, accessories that will take away unnecessary actions. As our civilization developed, more and more industries were automated with the use of different machinery. And yet, we software developers, despite having much better tools, often fail to achieve this dream. Our daily work is full of repetitive and mundane tasks that we perform manually. It raises a question: Why isn't every process automated? To answer this, we need to understand why we want automatization?

Of course, the main reason is we want to save money. But we can achieve it in two different ways. The firstt one is by performing faster in a more scalable way. The most common example 

Is by using version control systems. Can you imagine how hard it would be to develop an app without it? The second one is by reducing human error. Let’s think about UI tests that are always fully deterministic and make no misclick. Therefore, by reducing manual work, we increase both reliability and increased efficiency.

Our daily work is full of repetitive and mundane tasks that we perform manually. It raises a question: Why isn't every process automated?

Build and Release Pipeline

To find out the best targets for automatization, we should think of our work in the following categories. Where do we lose time, and where do we make mistakes? We can then locate such processes and automate them. Most obvious and important is one related to building and delivering our application. It is well known and there are many  CI / CD  systems that stand for continuous integration and continuous delivery. What's the point of having a fully tested application if, before each change, we would have to waste hours to run each test suit? Or why to lose time in code reviews on simple code styles issues when a simple job can run lint and check that for us? 

Of course, if we develop a small project, we might hesitate to spend time on setting up all the configurations, but luckily nowadays, it's much easier and we can create solid foundations in just a few clicks.


Main jobs
would be to automate:

  • Running unit tests
  • Triggering Linters
  • Code style checks
  • UI test scenarios before merging to develop. 
  • Help with the release of automated regression tests on different build variants. 
  • Create an automated rollout with metrics to check that the new version is adopting well.

This way, we saved a lot of stress, and achieved a safe and predictable release train. 

Alerts and Data Dashboards

Another robust group of processes to be handled for us would be one that contains all the jobs that help measure stability of our system. We should know immediately about any new outage, what’s its priority and act accordingly. Each second might save us loads of money, reputation and reduce overall damage.

Later we should introduce automatic tasks that trigger creation of charts and reports for us, so the business domain can easily understand what happened. This refers not only to serious accidents but we can use the same principles to create funnels for things like analytics events or a/b tests conversions. 

This way we can easily check how well our system performs, were to introduce new improvements and whether the project follows the north star or not. As this knowledge is crucial for every well managed project with decisions made based on data, it should be accessible in a fast, reliable, and efficient way. It’s impossible to achieve that with humans, who can’t work 24/7, with 100% effectiveness and never take sick leave. This can be provided only if it’s done by a program. Our job as developers should be only to code what data we want to gather, the logic behind gathering it, and how to display it to the users.

Everyday Repetitive Tasks

But there is also the last group that is often omitted. We tend to underestimate how much time and energy we lose every-day on small, mundane tasks like updating our status. Because they are scattered and small, we just don’t think it's worthwhile to automate them. But you can’t be more wrong. Our goal should be to eliminate any repetitive chores and use our energy mainly on creative work. If we sum up all those minutes wasted on poor communication, messed priorities, and misunderstandings, we have something worthy of automatization. You should not bother remembering everything, but writing notes takes time, so let technology be your secretary.

Another problem is that you are probably overloaded with useful links, files, and it takes time to find one you need most at the moment. Such tiny inconveniences produce noise that steals your attention and beats you off your beat. And it’s not easy to get focused again when there are more distractions to come. I often find myself irritated when instead of coding I must make some comment on my current task to make sure that my workflow is updated. Considering it happens everyday, we have a really high stack there.

Conclusion

The shortest answer for the question of what to automate in the development process is: everything. Why waste your precious time on mundane tasks? In everyday life we constantly use tools that save our energy and we would be surprised that one doesn’t use them. Like a washing machine. Back then it took up to a whole day to make laundry for one family! Then one with an engine appeared, but still it required a person to control its work. Only when microcontrollers were invented fully automated ones took this burden from us. It is exactly like in your case. You have plenty of different tools to use, but only when they are combined and used by your artificial assistants, you are free to focus solely on creative parts of your everyday's work.

So why do we as developers still have to do some task manually? Why don’t we write some scripts to automate our work? Because the roots of automation are about efficiency and money. Just like in other parts of your life, you don’t assemble your own washing machine. Instead you go and buy ready one. We should use the services of specialized companies to choose from best solutions available, that because of scale are much more efficient. Last but not least, the high percentage of automated processes in a software company is a direct message to its employees. It means that their work environment is modern and advanced, and as such it is a good place to stay.

Like it, share it!
Aleksander Kubista
Android Enginner, Wielkopolskie, Poland

I develop apps for the sheer need of creation, and I love to share my thoughts and give back to the community. I have experience working with super small teams and enormous ones as well. No matter the size, the best way to contribute to a project is to improve the effectiveness of its processes.

See all other articles
Stay updated!
Zigi’s blog is the place to read and hear from developers like you about happiness, noise, productivity and everything that is new at Zigi in one place.
*Enter a valid email
Thanks for subscribing!
Oops! Something went wrong while submitting the form.
No charge. Unsubscribe anytime.
Join our mission
to eliminate wasted time & burnout for developers
Join us! Be a part of our beta group and help us shape Zigi — a tool for developers, by developers.
Spread the word about Zigi, and win a prize
Get rewarded for you’re referrals and score the full Zigi sticker pack.
Get your referral code
Join our mission
to eliminate wasted time & burnout for developers
Join us! Be a part of our beta group and help us shape Zigi — a tool for developers, by developers.
Join Us