Our Thinking Tue 9th February, 2016
Smoothing the path to Continuous Delivery
At Equal Experts, we help our clients improve their software, and their process for delivering it.
Since making change can be difficult, a crucial way we help is to smooth the path towards creating a Continuous Delivery culture – one where our client is able to release new software as it’s developed. In this piece, I’ll look at some of the practices we’ve found helpful along the way.
Why is Continuous Delivery desirable?
Continuous Delivery, to paraphrase Wikipedia, is a software engineering approach that produces valuable software in short cycles and enables production releases to be made at any time. Practised by many industry leaders – including NetFlix, Amazon and Etsy – its benefits include:
- Reduced risk. The short cycle between releases means the change in behaviour introduced by each production release is small – thus there’s less likelihood that a bug will be introduced. The short cycle also gives faster feedback to the development team, with earlier validation that their changes are having the intended effect (or not).
- Reduced time to market. Releasing features as soon as they’re ready, rather than batched up in larger quarterly or biannual releases, gets features into the hands of customers sooner.
- Increased agility. People change their minds all the time, whether they be senior management or customers. This normally means the development team have to change their direction in response. This is much easier to do in a Continuous Delivery culture, as there will be less work in progress, and the release of each feature provides frequent points to pivot at.
Ways to smooth the path
Despite the many benefits of Continuous Delivery, it’s still not commonplace, because it requires a significant shift away from the traditional approach to IT project delivery.
There are many practices that can help achieve this shift, though. Let’s look at two that we at Equal Experts have found essential:
- Start with the best people you can hire.
- Develop a continuous integration, delivery and production mindset.
Start with the best people you can hire
If you’re aiming for Continuous Delivery, it’s vital to put people first and process second. Any team can take a set of practices and try to apply them, but there is no guarantee of success. The likelihood of a team’s success increases according to the expertise and like-mindedness of the people in the team.
Whenever Equal Experts works with a client, we tap into our network of experienced Associates to build teams of like-minded people. Crucially, they are already experienced at practicing Continuous Delivery well. This is ideal for our clients as establishing a Continuous Delivery culture is a bit like picking up a new language – learning from a book is hard work, whereas conversing with people who are already fluent speakers is much easier.
Develop a continuous integration, delivery and production mindset
The goal of Continuous Delivery is to get changes into Production early and often. To achieve this, the moment the team picks up a new feature, the whole team needs to be continuously thinking about the pathway to Production.
Traditional IT delivery separates this process into requirements, design, implementation, testing and finally release. When a team with a Continuous Delivery mindset takes a given feature, it considers:
- How to break the feature into small, testable, releasable chunks;
- How to evolve Production behaviour, from current to the desired state;
- How to ensure and test for backward compatibility, to ensure that Production defects aren’t introduced over the course of the feature’s evolution.
- How to make and commit changes to source control, in a way that ensures the build is always green (i.e. code compiles with no errors, and all tests pass) and the built software could be released to Production.
Tools such as Git, Jenkins and Puppet/Chef are very helpful in doing the above. But what’s more important than the tools (and the expertise in using them), is a deep understanding across the team of what the goal is, why it’s important, and how, at an abstract level, to achieve it.
Follow the path to Continuous Delivery
Done well, Continuous Delivery enables organisations to reduce risk and time to market, and increase agility. But as we’ve discussed, it requires more than just tools and a checklist of practices. The best starting point is with experienced people who have a deep understanding of why, what and how to apply Continuous Delivery (that’s us!).
If you’d like to learn more about Continuous Delivery, I’ll be speaking about our approach at the Pipeline Conference on Wednesday 23rd March.