Feature toggles allow teams to continuously deploy, but also allow them to perform big bang releases, which are still a favourite with Product Managers and users alike.
When thinking of rolling out a big feature, one dreams of pressing down on a single plunger, watching their product spring to life with gusto, and taking the day off to celebrate their success.
The plunger, in the above example, is a feature toggle. Sharing toggles, at first glance, makes sense when you want to launch a whole bunch of changes at the same time. Take this example, where we’re offering customers the opportunity to upgrade their subscription to receive access to a premium selection of cat gifs.
In this example, we’re using a single toggle which reveals all the screens. Our release is simple, thanks to our single plunger. However, this isn’t all it’s cracked up to be.
At a certain size, releases tend to look more like shuttle launches than detonating explosives. This is because releases are often not easily reversible. You start saving production data, taking peoples’ money, and building expectations of some kind of service.
Take the example above, imagine if our payment processor was struggling with load, so we wanted to halt new sign-ups. We’re now stuck, as we cannot prevent new upgrades without compromising on the experience for customers who have already paid.
When launching shuttles, NASA remains in control of the craft even after take-off. When you put astronauts in a craft and hurtle it into space, you better bet they’re prepared to improvise should things go wrong.
Being able to improvise is a necessary evil that comes with releasing features at scale. Make sure you have more than just a plunger.
Bringing it back to our example. We need to ensure that we can control new customers coming into the system, while also ensuring customers who have paid get what they’re paying for.
To solve this problem, we can do two things:
- put our cat gif page behind its own separate toggle,
- reconsider putting it behind a toggle in the first place.
Not everything needs to be behind a feature toggle to benefit from feature toggles. In this case, customers cannot access the premium cat gifs page without purchasing the upgrade. If we hide the upgrade flow behind a toggle, the page is also implicitly toggled.