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.
Separate Code Deploy from Your Feature Release
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 the deployed code doesn’t cause any negative impacts to your customer base. Feature flag implementation also makes it easier to test your features in production, allow continuous delivery of features, and deliver a more controlled rollout to end-users by using a canary release.
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 entire user base.
Another reason using feature flags is so useful is that it allows product people, or less technical people on your team, to be responsible for when a feature goes live. The stress is taken off developers of having to do another code deployment to release their features. Instead, product owners can easily log into their feature flag framework tool, and with the push of a button, turn the feature on.
Enabling Testing 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. However, the test results from test/staging environments have proven faulty. Chances are, the test results you get from staging do not match the test results from production because the data is so different in both places. With feature flags, you are able to deploy your feature behind a feature flag in production, test the feature in production, and then turn on the flag already knowing that the feature works in the environment that it lives in. At the end of the day, no one cares if your features are working in staging, we care if they work in production. And if you want to learn more, you’re in luck. I write a whole blog post on testing in production with feature flags!
Steer Your Users 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.
Flexible Code Management
Another major advantage that feature flags provide is the ability to act as a kill switch that allows anyone on your team 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. You won’t have to go through an entire code review process or revert the change that caused the issue. All you’ll need to do is log in to the feature flagging framework, and click on the kill switch for that feature. 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.
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.
Learn More About Feature Flags
Interested in digging deeper on feature flags? We’ve got you covered:
- Watch this video on Feature Flag Best Practices
- Read more about feature flags in our free Feature Flag Best Practices eBook
- Learn about the Top Three Feature Flag Use Cases
- Find out more about the Pros and Cons of Canary Release and Feature Flags in Releases
Stay up to date
Don’t miss out! Subscribe to our digest to get the latest about feature flags, continuous delivery, experimentation, and more.
Keystone flags deliver all the safety benefits of feature flagging while minimizing the cruft that those same feature flags can add to your code.
By adding some custom extensions to Jest you can test your feature-flagged code in a declarative, expressive way.
At Split, we know feature flags and data are key to serving the evolving needs of today’s modern consumer. Companies must deliver new features safer and faster while also leveraging all their data to measure whether each feature is actually meeting customer needs. However, when you have data coming in…