Product managers constantly lookout for ways to add more value to a product and deliver new product experiences to customers. This continuous delivery or continuous deployment, if you will, entails the ability to push product updates to customers, with the expectation that the new functionality works fine. Else, it is sent back to development for a fix.
Feature flags give product managers room to experiment with features. It allows the gradual rollout and enables them to streamline what audience has access to what feature.
In this article, I will walk you through a general concept of what feature flags are and why both engineers and product managers find them valuable.
As frequently defined, a feature flag often referred to as a feature toggle, is a mechanism that allows the turning on and off of certain functionalities during runtime, without deploying code.
For example, at Meta [formerly Facebook], feature flags play a big role. Have you noticed how when Meta announces new features, they roll out tests to a small percentage of people, then expand gradually to more people globally? This audience segmentation allows the company validate with a subset of users first, as it would be very risky to launch experimental features to their 3.6billion monthly active users.
Feature flags allow teams to deploy a new feature to production whenever possible. Let's explore some use cases:
This is about testing your features in the environment where your features will live in. To some QA engineers and product managers, myself included, testing in production (TiP) can be intimidating. It is like walking on eggshells. For obvious reasons, TiP can create leaks that expose vulnerabilities to real users or destabilize their experience.
With feature flags possible risks with testing in production can be mitigated, as code can be deployed behind it, hidden from customers, then deployed in canary releases. This gives the engineering and product teams granular control on launching new features with less risk.
Actually, it makes sense to not only want to know that your features work in staging, but that it does in production too, hence testing in production. Feature management helps you deliver your feature and product experience safely.
Software as a Service (SaaS) typically offers different subscription plans to customers. Free plans have basic features, while paid plans have varying top-notch sets of features that constitute the plans.
Using feature flags for pricing to stipulate what plan gets what features, helps the process of managing these entitlements.
This involves launching different versions of the same feature to see which one performs best. You implement techniques like A/B testing and segmentation against deployed features [A/B testing in production].
Feature experimentation allows you to compare features to get insight on which has the best implementation or is preferred. Also, you can write a hypothesis for a feature, set up an experiment to launch it, measure its performance, and then launch it post validation. Feature flags help to build the changes one wants to test. Then tying a metric to the feature flag, gives the experiment a purpose.
The whole idea of feature flags is to mitigate risk by providing a quick way to turn features on or off even after deploying your code. It is highly recommended to use feature flags with caution. Keep them short-lived in small numbers to avoid complexity.
Review flags often to ensure that the important ones are on or off accordingly, as misusing them could have bad consequences, as seen in this real-life example: a company with nearly $400 million in assets went bankrupt in 45-minutes because of a failed deployment. The team re-purposed a feature flag used by old code to try to contain an operational risk.
Now that you've covered the concepts and considerations of feature flags, it is worthy of note that there are many feature flagging platforms that help to automate feature flag management: split.io, LaunchDarkly, CloudBees, etc.
Know a non-technical person who is trying to get into the product management space? You may want to share my previous article on the topic Explore Must-Know Technical Concepts for Product Managers: Your Guide to the Mind of a Dev with them. Thanks for sharing!
Feel free to connect with me on LinkedIn.