Automation is a game changer in the world of software development, and I can’t stress enough how crucial it is for enabling teams to develop faster and more effectively. If there’s one mantra I live by, it’s this: if it can be automated, it should be automated. And if it can’t be automated yet, then it’s time to invest in your product to make that automation possible.
The Power of Automation
Let’s break down why automation is so vital:
-
Automated Deployments: Imagine a world where every deployment is seamless. With automated deployments, you can refresh every security key, certificate, and environment without the risk of human error. This is the approach taken by Azure DevOps, where they build new environments for each deployment rather than upgrading existing ones. This ensures that you’re always working with the latest and greatest without the risk of legacy issues creeping in.
-
Consistency Over Human Error: Humans are inherently inconsistent. We can’t follow a set of steps in the same way every time, which is where automation shines. Robots, or automated processes, follow a defined set of steps flawlessly. If something goes wrong, you can pinpoint whether the issue lies in the process itself or in the execution. This clarity is invaluable.
Real-World Consequences of Neglecting Automation
Let me share a cautionary tale: the Knight Capital Group. They had $450 million in the bank at the start of the day, but due to a manual deployment error, where one out of seven servers was not updated, they lost thousands of dollars every second. By the end of the day, they filed for Chapter 11 bankruptcy. This disaster could have been entirely avoided with proper automation in place.
Similarly, consider the global impact of incidents like the one involving CloudStrike. These situations highlight the necessity of automated checks and deployments. As the frequency of deployments increases, so does the need for robust automation to manage the complexities that arise.
Embracing Production
One of my favourite quotes comes from Brian Harry, the former product unit manager for Azure DevOps: “There’s no place like production.” No matter how much testing and validation you perform, production issues are inevitable. You can’t simulate the real-world environment perfectly, and that’s why it’s essential to build quality into your processes from the start.
Building Quality In
Instead of merely testing quality in, we should focus on building it in. This means getting your product in front of real customers as quickly as possible. Take Facebook, for example. When developers roll out a new version, they execute calls against both the current production version and the new version simultaneously. This allows them to compare performance and functionality in real-time, scaling from a small user base to millions almost instantaneously.
The result? A staggering turnaround time of about 12 to 13 minutes from code commit to production deployment, complete with full regression testing. This level of automation allows for rapid iterations and quick fixes, ensuring that the product remains robust and responsive to user needs.
Conclusion
In today’s fast-paced market, automation is not just a luxury; it’s a necessity. It empowers teams to deliver features quickly, respond to problems efficiently, and seize opportunities as they arise. By embracing automation, we can ensure that our products are not only fast and reliable but also capable of adapting to the ever-changing landscape of user demands.
So, let’s commit to automating everything we can. The benefits are clear, and the risks of neglecting automation are far too great. Embrace the power of automation, and watch your development processes transform.