Environment: preview · Version: v0.2.0-preview.10

Videos

Embracing Automation: The Key to Transforming Your Development Process and Boosting Confidence

When it comes to developing complex products, one of the most significant steps we can take as developers and engineering teams is to embrace automation. In my experience, this is not just a best practice; it’s essential for success. Alongside reducing the size of our backlog, essentially making our deliverables smaller so we can iterate more frequently, automation becomes a cornerstone of our development process.

The Power of Automation

Automating everything is crucial for instilling confidence in our engineering teams. Here’s what I mean by that:

  • Automated Testing: This is non-negotiable. We need to ensure that every piece of code we write is automatically tested. This not only saves time but also helps catch issues early in the development cycle.

  • Automated Deployment: Continuous deployment to production hinges on our ability to automate the deployment process. The more we can automate, the more frequently we can release updates.

  • Automated Validation: Collecting telemetry data from our products allows us to validate our assumptions and decisions automatically. This feedback loop is invaluable.

A prime example of this can be seen in the Azure DevOps team. When they transitioned to deploying their cloud version of the product, they faced significant challenges. They were accustomed to biannual releases, but suddenly, they were aiming for three releases every week. This shift required a complete overhaul of their approach to automation.

Tackling Technical Debt

The Azure DevOps team had to confront their technical debt head-on. They were dealing with poor-quality code and a testing infrastructure that was, frankly, terrible. Imagine waiting 48 hours to find out if a code change was successful! Their regression suite took even longer, up to a week. This was simply unacceptable.

To address this, they focused on reducing their cycle time, the time it takes to learn from an idea to deployment and back again. They identified their testing infrastructure as a major bottleneck. By converting long-running functional tests into short, efficient unit tests, they flipped their testing pyramid. Over four years, they transformed their testing strategy from 80,000 long-running tests to an impressive 880,000 short tests. This monumental shift reduced their feedback loop from 48 hours to just three and a half minutes.

Empowering Developers

One of the key changes they implemented was enabling developers to run command-line calls to set up the necessary components for local testing. This meant that developers could have a local copy of the system running, allowing them to test their work in real-time. This empowerment not only boosted individual confidence but also fostered a collective sense of capability within the team.

Building Customer Confidence

As we improve our internal processes, we also enhance our customers’ confidence in our product. When things go wrong, and they will, it’s crucial to own up to mistakes and rectify them swiftly. Customers who have faith in our ability to fix issues will be more forgiving when problems arise. They’ll understand that mistakes are part of the journey, especially when they see our commitment to quality and improvement.

The Importance of Quality

In complex systems like Azure DevOps, confidence must permeate every level of the organisation. Each team member needs to trust that the components they rely on from other teams will meet the necessary quality standards. This trust is built through a shared commitment to quality and attention to detail.

Conclusion: The Path to Continuous Delivery

In summary, the journey towards continuous delivery is paved with automation. There should be no room for manual testing in our processes. While we may need temporary solutions, like the Twitter sentiment bot that monitored negative feedback during deployments, these should only serve as crutches while we work towards full automation.

By pushing the boundaries of what we can automate, we not only improve our code and quality but also enhance our engagement with customers. The road may be long, but with dedication and a focus on automation, we can achieve remarkable results. Let’s keep pushing forward, embracing the challenges, and striving for excellence in everything we do.

Debug: Kind=page | Type=videos | Layout= | Section=videos
Bundle files (1):
Page template:site\layouts\single.html