Feature flags have revolutionized software development by allowing features within a software product to be individually enabled or disabled at any point, even after they’ve already been rolled out to customers. Let’s look at some of the most important ways in which they can improve your ability to develop, test, and deliver new features while minimizing risk throughout the process.
Rolling Out New Features
Traditional development models required code deployment and feature rollout to happen simultaneously, but feature flags give you the ability to minimize risk by separating the two functions. The obvious benefit is that this helps ensure that deployed code doesn’t cause any negative impacts to your customer base. Feature flag implementation also makes it easier to perform feature testing, allow continuous delivery of features, and deliver a more controlled rollout to end users.
If you want to test multiple designs for a new feature, you can use feature flags to perform A/B testing (or split testing) and see which version performs the best. The ability to hide individual features also allows you to perform canary releases where the feature is only initially made available to a small subset of the user base, so that technical issues can be identified and resolved before it is made available to the user base at large.
Enabling Test in Production
For most of the history of software development, the deployment and testing of new features within a production environment simply wasn’t an option. Those functions were always performed in isolated test environments that were specifically designed to not affect anything that live users would see or do in the production environment they mirrored.
The global scope and uptime requirements of cloud services such as Facebook, Google, Amazon, and Netflix made it impossible to designate non-production hours during which maintenance and upgrades could be performed. A test environment also couldn’t come close to simulating the sheer amount of traffic their production environments would be required to endure.
Given those challenges, these companies pioneered the practice of doing their QA testing within their live production environment, using feature flags to enable each new feature as they were ready. This approach gives a QA team the ability to perform iterative development, where features are individually tested and rolled out instead of introducing multiple features at once in a single major release.
Steering Accounts Toward Better Features
As part of the ongoing product life cycle, it’s natural for certain features to be phased out over time. This can happen for a number of practical reasons: newer features may be designed to replace older ones, usability testing with beta test groups indicates that users don’t see value in a particular feature, or your internal user analytics show that certain features simply aren’t being used enough to justify their continued inclusion.
Whatever your reason may be, feature flags provide a quick and easy way to disable features. This allows you to instead drive users toward newer, better, or more popular features that will deliver to them a greater return on their investment into your product.
Flexible Code Management
Another major advantage that feature flags provide is the ability to act as a killswitch that allows developers to quickly and easily disable a feature if needed. Rather than completely rolling back the code in the event that some critical bug or other problem is discovered, the feature in question can simply be turned off while the reported issue is investigated and corrected.
Using feature flags in this manner also allows technical support agents or product managers who lack software development skills to disable problematic features without having to edit code themselves.
These are just some of the many ways that feature flags can increase the quality and efficiency of your development process, while minimizing the risks involved with deploying directly to your production environment. If you’re interested in learning more about feature flags, Split provides a unified solution for feature flagging and experimentation.