It’s a friday afternoon in the office. You originally planned to release a new software update yesterday, but it got delayed due to a last minute bug. Now, it’s Friday. Should you release today or wait until Monday? Your customers want the new update ASAP, but you also don’t want to have to spend the weekend on-call should something go wrong. It may take hours to fix a broken update that’s out in the wild.
Luckily, your new update was feature toggled! You confidently released the new feature to a small subset of your users and went home on the weekend. Not only did you release the feature faster, but you knew that you could flip it off at a moment’s notice if something didn’t go well. Since the feature seemed to perform well all weekend, you cranked up the rollout so that all of your users received it. They were happy and you were happy. On to the next sprint.
Feature toggles allow you to be strategic and calculated with your feature releases. You can simply wrap a new feature in a toggle and have control over its customer-facing visibility. This means that you no longer have to be held back by the “what if’s’ - you can look forward.
Whether you are migrating databases or launching an experimental signup system, feature toggles are a way of containing risk.
Feature toggling is something that can be introduced incrementally to speed up your development lifecycle. If you already practice continuous delivery, then feature toggles can easily integrate into your development process. And, if you’re still moving towards a more rapid release cadence, then feature toggling becomes an enabler.
Examples of feature toggles
- - Rolling out a new checkout flow to 1%, 10%, and 100% of your users
- - Turning a new beta feature on for your beta testers
- - Killing a feature that is performing poorly
- - Managing a long-term state, like maintenance mode or subscription plans
- - Serving a new upgrade to users who live in Canada and have an Android phone
Feature toggles are used to gate access to particular code snippets, allowing you to control a feature’s rollout, target specific users, and kill a feature in production. Feature-toggle driven development does not need to be a transformative process at first - in other words, you don’t need to change how your entire team builds and releases software to get started.
Feature toggling is a method by which developers wrap a new feature in an if/then statement to gain more control over its release. By wrapping a feature with a toggle, it’s possible to isolate its effect on the system and to turn that toggle on or off independent from a deployment. This effectively separates feature rollout from code deployment. Feature toggling is a core component of continuous delivery that empowers software organizations to release quickly and reliably.