Make Progressive Delivery Happen – Whether Shift-Left or Shift-Right
There's a transformation happening in software development: Progressive Delivery.
It lets you rapidly release updated apps while still maintaining quality and control. Better still, it can have a big impact on the job satisfaction and day-to-day experience of developers.
At SmartBear, we're in a unique position with this change happening in the market. We have a range of tools that improve the quality of software development, aiding management, design, testing, and observability. And because our portfolio is so broad, we can help you achieve Progressive Delivery with ease.
How can you attain it with a combination of shift-left and shift-right approaches? Read on.
The History: How Did We Get Here?
Throughout the course of software development, teams have continued to adapt to new environments, continually being pushed by new ideas and technologies.
First came the Waterfall Methodology. Teams tracked requirement lists, worked on high- and low-level documents, and released very infrequently. With this method, software was typically developed to be shipped with hardware such as CDs. However, mistakes in the software could cost companies millions of dollars, creating large amounts of stress and pressure surrounding a release.
After Waterfall came Agile, where the principles are to fail fast, work in sprints, and get quick feedback from users (like weeks or months). Agile picked up speed with the beginning of Saas and greatly reduced stress levels surrounding releases. It also decreased the cost of mistakes as it became easier to fix code and provide patches. However, “no release Fridays” were still in effect.It also decreased the cost of mistakes as it became easier to fix code and provide patches.
Following Agile was Continuous Delivery, which promotes massive test automation, multiple release environments, and automated rollback. This methodology led to the rise of DevOps teams, CI tools, automated pipelines, and cloud deployments. It also made for low-stress releases where mistakes could automatically be rolled back.
Okay, now that we know where we've been, let's look to where we're going.
What Is Progressive Delivery?
Progressive Delivery may be the future, but it's also a natural progression of this software development history.
Gone are the days when development teams could work on and test their releases for long periods of time. Now, the pressure is on to build and release ultra-fast – multiple times per day for bug fixes and small changes. In fact, elite teams are deploying into production in users' hands “thousands of times per day.”
On top of this, there's also increasing pressure to keep users engaged by frequently delivering new features in order to stay competitive. This includes new modes, worlds, flows, interactions, skins for game developers, and filters for mobile apps.
We conducted a survey last year where (on this graph) you can see the release frequency across multiple industries. The average is four times per month, i.e., weekly releases.
The downside of this speed is that when you ship changes more frequently it's riskier. If a change is broken or doesn't provide the best user experience, it could impact many users in production, leading to frustration and the permanent loss of valued customers.
So how can you make deployments less risky, to the point you don't even have to think about it? And is there a way to enable true experimentation? This is where Progressive Delivery comes in.
Progressive delivery is a risk-reducing iteration on Continuous Delivery that allows for a clear separation between the “deployment of code to production” and the “release of features to users.” It allows development teams to deploy code with no change to any user and then delegate the release of features to users to other team members.
Starting with a robust Continuous Delivery pipeline, Progressive Delivery lets you selectively release new features to different subsets of users both inside and outside your organization, as shown below.
Why Should You Shift Left and Right?
Progressive Delivery is primarily about shifting right. This is because it's about progressively releasing to larger and larger subsets of users while continually observing system behavior, usage, and error logging for those users.
However, teams can become too dependent on shifting right. This often means they stop investing in the discovery/design phases and test automation, which can lead to disaster.
Our solution? Invest in both approaches, also called shifting up! When you invest in shifting left, you improve preparation and avoid defects in the first place. You can achieve this by adopting TDD and BDD and doubling down on massive test automation. Then, when you invest in shifting right, you limit the blast radius of the defects that leak through. This can be attained by adopting feature flagging, observability, and roll-back capabilities.
How to Achieve Progressive Delivery With SmartBear Tools
As a reminder, SmartBear has tools across the SDLC that can help your team with design, massive test automation, stability monitoring, and even test management.
Here's an example of how your teams can achieve Progressive Delivery with both shift-left and shift-right approaches using SmartBear and partner tools:
- Your developers are already building new features and writing scenarios using Cucumber Open – the open-source framework for test automation. To utilize feature flags as part of Progressive Delivery, they use the new Cucumber Split plugin to test all the possible permutations of the feature flags.
- Once they're happy with the code, they commit and trigger the CI/CD, which then uses BitBar to run massive test automation across multiple mobile devices and environments in parallel.
- This gives them the confidence to deploy their new code to production with features disabled. Then, they enable specific features to a subset of users using our partner's tool Split.io.
- At the same time, they use Bugsnag to monitor the production code live, trigger warnings via slack, and automatically file Jira defects if those new features are buggy.
- Finally, they aggregate all these results about their release health within our Zephyr Test Management solution.
The Pressure Is On – and Off
From Waterfall, to Agile, to Continuous Delivery, software development has come a long way over time. But Progressive Delivery is undoubtably the future.
It takes the pressure off developers by making releases less risky and keeps users engaged by frequently delivering quality new features. You can achieve this by adopting the shift-up approach, which avoids defects early on and limits the blast radius of bugs that inevitably sneak through later. And with the help of SmartBear tools, Progressive Delivery can now become a reality for you and your company.
Don't already have SmartBear tools? Start a free trial with any of our products today.