Automation is essential for modern software development. However, the allure of push-button deployments can be a siren song that distracts us from the primary focus of a DevOps culture: winning in the marketplace. We use automation to improve our financial security either by increasing revenue or reducing costs. If automation is not making a noticeable difference to customer value, it’s likely not worth the effort.
Automation is the most visible feature of a DevOps culture. It is easy to understand, and many teams can see tangible benefits almost immediately. Automation is a big deal, and we know that because:
All the Unicorns are Doing It! Unicorns are always bragging about daily production deployments and measuring deployment time in minutes vs hours/days. These unicorns have invested heavily in automation in order to trigger production deployments, perform infrastructure changes, and run a full suite of unit tests, integration tests, non-functional tests, contract tests, and smoke tests, without human intervention. These tests run continuously because the effort to do so is low, and so that problems may be detected and addressed immediately.
Senior Leadership is Asking for it! Continuous Delivery is discussed in blogs, conferences, and industry reports. The Forrester Research group has declared 2017 to be the Year of DevOps, Thoughtworks reported in 2012 that they “cannot see any situation where attention in this area [Devops] will not have a positive benefit”, and vendors are aggressively promoting their latest DevOps tooling. DevOps automation is promised as a more effective method of software delivery, and our senior leaders are taking the call to action seriously.
Automation is a strategy, not a goal
The most basic example of automating a manual process is writing a script to execute tasks that would otherwise be typed into an interactive shell. It can be this simple, and the benefits are clear. A scripted process is:
1. Faster to execute
Time spent typing commands, mistyping them, inspecting output, or waiting for command completion is eliminated.
2. Resilient to error
An entire category of possible errors is eliminated. In the simplest case, it is no longer possible to mistype commands.
3. More predictable
The process will function the same way every time. If something goes wrong, we can be confident that the process itself is not the cause.
The different faces of financial security
Here’s how automation can help us improve our financial security:
1. Improving the morale of our teams will decrease turnover
Not enough attention is given to morale within the typical enterprise environment. From my experience, as productivity and team morale decrease, employee turnover increases.
The cost of turnover is high. Turnover results in lost knowledge, and reduced productivity during the recruitment process. After recruitment, the new team must re-establish trust according to Tuckman’s stages of group development. Agile leading-edge practices recommend that organizations “protect the team”from unnecessary changes to team composition, distractions, burnout. Agile teams“take time to grow” according to Atlassian, and any change in team composition will reboot the cycle and force growing pains to recur.
The solution is clear, automating mundane and predictable activities during deployment sends a clear message to team members: your time is valuable and protected. When the risk of burnout is lessened, we expect that fewer team members will turnover.
2. Capture new markets
Shorter development and deployment cycles enable us to be first to market for new features or applications.
3. Catch up and outpace competitors in existing markets
Moving faster than your competitors allows you to outpace and eventually take the lead. If test and deployment activities are automated, the only bottleneck is development time. In the book “The Phoenix Project”,Gene Kim places the fictitious company “PartsUnlimited” in this exact situation. The book is well written and considered essential reading for anyone curious about DevOps culture.
4. Improve product quality
A higher quality product will either command a higher price on the market, or reduce total cost of ownership. Having a buggy user experience, unreliable performance, or stability issues generally translates into reduced sales. Running tests more efficiently and effectively enables teams to detect and resolve quality issues earlier resulting in an improvement in the quality of the product.
5. Improve the resilience of our services
Every minute spent resolving high-severity issues is time not spent capturing new business or new revenue streams. When patch work solutions become the norm, and systematic analysis of failures is avoided, systems become increasingly unique (like a snowflake), more difficult to understand, and therefore less resilient. A more resilient system affords us more time and resources to grow and improve.
Once you decide to improve automation there might be some pitfalls that you encounter. Stay tuned for Part II, where I will outline some of the Pitfalls of Automation.