Almost a week ago, I attended a training for Scaled Agiled Framework also known as SAFe. During the training, the trainer focused a lot on agile and he made sure that people understood that automation is a cornerstone of SAFe. He used the usual paradigms of continuous integration and deployment but as with many others he focused on the “do less” aspect of automation to make his argument. With this post I would like to talk about what I understand as a stronger argument when trying to convince about the merits of automation.
Automation offers two major benefits that although seem different they are intertwined:
- Doing less as human.
- Predictability through repetition.
Yes, with automation humans are required to do less. Depending on what we can automate there are different gains and depending on the required effort we make a conscious decision wether we should invest in it. When trying to convince management about investing in automation, this is the usual argument. Your team will do less trivial stuff, thus allowing them to be more productive in the same time frame. That means, you get more from the same people.
In my opinion this is a very tough argument to prove, especially when automation doesn’t exist with the team or company culture. I’m not saying it’s not correct, it’s just, that measuring the benefits against the investment is not always easy and requires long term projections and calculations. It’s also very dependent to the size of the project. Even with the best calculations, if you ask the people involved how much it has helped them, you’ll get a different answer from each because of our subjective perception of help.
I believe that there is a stronger and more convincing argument, one that is measured with a yes or no answer instead of subjective quantity. Some questions to answer are:
- Is there more confidence and trust to the deployment.
- Do customers complain less about mistakes and mishaps?
- Do customers anticipate each new release with new features?
If you can reply yes on such questions then you simply can’t argue against automation. If you are facing problems that are derived from a no to these questions then consider the following as an argument to invest in automation as soon as possible. Automation replaces trivial tasks that are error prone with predictable repeatability. Humans and especially software engineers are creative beings but also flawed. It really doesn’t matter how good we are, we are bound to make a mistake especially when the action is trivial and meaningless and we don’t put your heart into it. It’s human nature and I really believe that at the beginning the best of the software engineering breed made this instinctive realization during an era where software has still a hard time getting developed, tested and deployed. My argument is that the best of the engineers put some off-project time to make their life easier and happier but they quickly realized that they also improved significantly professionally as they became more efficient and trustworthy in their team.
Trust and confidence from the consumers of a software application is something that can’t be quantified. You can but I don’t believe there is a point in saying “my users have 60% trust that the new release will not interfere with their job”. Either people trust and are confident that the new release will work in their favor or they don’t. When they don’t then problems start and it is very difficult to regain that trust. Humans can overlook a couple of mishaps but once a certain limit is broken then we can be very tough on our judgement regardless of the circumstances.
Automation offers this most important safety line. It provides confidence that your efforts will not break the hard earned trust with your users. By extension, it allows you to experiment with new features with the same user base because you know that the established pattern still works. Also, as users are happy and see new features arriving without grief, they build a sentimental binding with the application. They will even accept an incomplete feature because they know that in a reasonable amount of time they will get something extra and while nothing is broken. In the unfortunate case that something went wrong and we broke something, the users know that a fix will be quickly delivered with a very low chance of breaking something else. From the engineering’s side, this is all possible because there is a confidence in the quality of the automation. For the software engineers it can only get better because the last mishap will be added into the automation and should never happen ever again.
This is priceless and it’s worth every cent of the investment. This is what brings you to the top and let’s you stay on the top. It’s an investment often underestimated. For some of the services we use online, it’s estimated up to a 80% of the total effort, to build the automation pipeline that lets us, the users, seamlessly use our favorite services. Is it worthwhile? Just ask yourself. Are you still using services from Google, Microsoft, Apple, Netflix, Spotify etc? Are you still using your favorite application in your phone although in your app store there are countless others that do exactly the same thing? Why do you stay loyal?
I’m not sure why this argument is not the one pointed out the most when discussing the benefits of automation. Usually it’s there implicitly but as people tend to focus on the numbers on slides they often miss the most obvious thing. Without automation across the entire pipeline your software cannot survive in this period of software engineering often annotated with the word “cloud”. We are living the end of the first cloud tsunami and many ISV’s didn’t survive because they couldn’t adapt fast enough. It’s not they could not put their software on a remote server. It’s that they could not do it with quality and confidence so they lost their users to much faster evolving and trustworthy alternatives. And, it is said that the second wave will have a much higher impact.