A deep-seated fear of failure and a resistance to change perpetuate outdated deployment approaches for many companies. Greg Cockburn illustrates the detrimental impact of a risk-averse culture on innovation and learning, underscoring the need to shift towards more agile, feature-focused methods.
“Often it’s the case that you have to teach management that if we don’t make this change it’s going to get slower, it’s going to get worse and worse,” says Cockburn.
By embracing automation, Cockburn argues companies can overcome these cultural challenges, enabling faster, more efficient, and more successful software deployments.
OPTIMISE YOUR DEPLOYMENT METHODOLOGY
The traditional approach to deploying new developments was largely calendar-driven. Cockburn says that teams would set a predetermined release date and focus their efforts on planning, building, and deploying the new development to meet this scheduled date, irrespective of whether specific features were optimised on time or completed in advance. This method has now been surpassed, yet some companies persist in using it.
Cockburn attributes this to fear, stemming from past deployments that have failed and created a mindset of avoidance. This reluctance to deploy even minor features hinders learning and feedback opportunities, as a risk-averse culture impedes progress. It’s crucial to educate leaders and management about the risks of stagnation, he argues. Without embracing some level of risk, processes become slower and increasingly problematic. This can lead to an inescapable cycle of fixing bugs, improving performance, and releasing essential features.
“The more modern approach is taking a feature and deploying it as soon as it’s ready,” Cockburn says. This involves selecting a developed feature, applying changes and code through methodologies like Kanban or Scrum, then rapidly progressing through automated testing phases, potentially all within a single day.
The extensive use of automation enhances confidence, including static code analysis for security checks, unit testing, integration testing and even performance testing. These tests are conducted in bespoke testing environments and if all automated stages are successfully completed, there’s a high assurance of deployment success. Additionally, development now includes constructing corresponding automated tests, with testers focusing more on creating these tests rather than performing manual checks.
Cockburn says once “90 percent of the steps” are automated, human involvement becomes limited to the initial development and peer reviews. This entire process can now be further accelerated and refined by generative AI, enabling quicker and more reliable generation of code and testing procedures for new features.
TAKE CONFIDENCE FROM A ROBUST PROCESS
Cockburn advocates for a process so robust that deployments can confidently occur at any time, even Friday afternoon, due to comprehensive testing, security assurances, and automatic rollback capabilities. This level of maturity requires significant effort and time to develop. Many organisations that are stuck in outdated practices schedule deployments for periods of reduced usage, but this approach brings several risks, including limited personnel available for deployment, lack of comprehensive testing, and inadequate coverage.
If an ideal deployment window is still required, natural canary testing is available for deployment in the mornings of weekdays, as users gradually come online. With more staff available, this method allows for early detection of problems and swift rollback, if necessary, as a feature or bug needs to be removed if it has a detrimental impact on the workload, improving the overall reliability and effectiveness of deployments.
“One of my mantras is with anything that hurts, do it until it doesn’t. And people often take the opposite approach. If it hurts, do it less. And that’s why they have a scheduled approach and they do it every Sunday because that way it doesn’t hurt,” Cockburn says. “But what it impacts is their velocity. They can’t get features out, they can’t fix bugs fast enough, and they end up rolling in so many features and so many bugs that when they roll it out on that scheduled time, one big bug that may be introduced now means that all the new features and all the other bugs that were fixed and written have to be rolled back.”
UNDERSTAND DEPLOYMENT CHALLENGES
Leaders need to understand exactly what is problematising deployment. Constant system issues and criticism from all sides leave a team feeling trapped. This must be recognised so new perspectives to stimulate change can be introduced, assuring teams that mistakes are part of the process and emphasising the importance of learning from them to move forward. “The biggest challenge is often morale,” says Cockburn. “Often the poor team in the middle is copying it left, right and centre and can’t see a way out.”
Anticipating mistakes can facilitate stronger team structures, so Cockburn recommends dividing workloads to prevent all staff from firefighting and maintain overall productivity. “Get your testing coverage up, get your pipelines building, understand how to break your system down into components and do test runs,” he says.
Observability is crucial for a well- managed deployment. Maintain a tech debt register to document necessary manual steps, providing a reference for future backlog inclusion and process improvement. Track critical aspects, such as lead time for changes, time to restore service, deployment frequency and change failure rate, and establish feedback loops, even if temporarily manual.
UTILISE AC3’S EXTENSIVE EXPERIENCE
Working with a managed services provider like AC3 can boost deployment confidence and deliver successful outcomes with two key elements: the experience of pushing organisational boundaries having navigated various stages of technological transformation with different organisations, and technical expertise in tools and technology. These combined strengths deliver successful outcomes, and the sooner transformation begins the better.
A single technology leader advocating a single perspective can be limiting, but AC3’s multi- faceted approach allows for flexibility and adaptation. It offers several methodologies to implement change, ensuring that if one doesn’t suit, others are available. This diversity in approach builds confidence and pushes teams beyond their comfort zones. AC3’s role includes challenging cultural fears that inhibit innovation to facilitate growth and quicker production implementations.
AC3’s significant technical skills in various tools and technologies can be just as valuable as strategy guidance. This expertise enables us to quickly set up and test different processes in user acceptance testing environments and production, saving time and effort in dealing with unfamiliar tools.