Software development teams are beginning to realize the benefits of continuous, test-driven delivery of new releases.
Instead of a single, milestone release (waterfall development) or multiple, internal test releases before major external ones (agile development), continuous delivery focuses on constant releasing of features to market throughout the development process.
The goal of continuous delivery is that code is always ready to deploy and features are constantly rolled out independent of ‘releases’ – and doing so properly requires realtime data.
Continuous delivery reduces technical debt, minimizes the risk of rolling out new features, and enables rapid data collection from live customers. The ability to share and act on internal and external data in realtime is crucial to the success of continuous delivery. We’ll take a look at how continuous delivery has benefits across the organization and some best practices for implementation.
Continuous delivery benefits more than just developers
The application of lean UX methodology to software development has benefits to stakeholders across the organization. These benefits are about more than simple speed – they are about collecting data and granular control over feature release cadence.
Product managers can quickly release lightweight features instrumented with analytics and get immediate feedback on what they’ve built in a live environment, which leads to better products. QA teams breathe easier when releases are no longer painful, high-risk events. Marketing teams looking to promote new features and improvements don’t need to wait for a milestone to do so.
All these teams share from the emotional benefits of moving away from high-stress, high-risk milestone releases. Atlassian has a great overview:
Best of all, continuous delivery benefits end-users of software. More frequently testing and releasing features leads to better outcomes.
Automated, realtime testing is crucial for continuous delivery
Continuous delivery does require some infrastructure investment: automated testing of individual dependencies on systems, data, and hardware is a crucial part of building each feature. The expected new behavior for each feature should be mapped to dependencies and automatically tested as part of the development process.
Operational infrastructure is also important – and this is where a realtime data component comes in. The results of these test should be pushed to dashboards or monitoring tools used by key stakeholders in the development process in realtime, so that feedback-based decisions can be made quickly and developers make the required changes. Failing is okay – as long as it leads to quick improvement.
Feature flagging lets you roll out features independently
Feature flagging is a concept that provides technical and non-technical decisionmakers with control over which features are shown and to what customers. Including feature flags lets you turn features on and off independently from code releases, and more advanced platforms give you granularity to roll out features to certain % or cohorts of users.
Realtime feedback on product usage data as it’s deployed is crucial to the success of continuous deployment. Your ability to expand or turn off features is only useful if you know how they are impacting business and usage metrics in realtime and have the ability to quickly act on that information.
Continuous delivery = continuous improvement
Continuous delivery doesn’t just require a different tech stack or release process – successful implementation requires a mindset shift across the organization. Teams who can move to continuous delivery can continually adapt their software to user feedback and market demands, leading to better results.