Feature flags: what are they good for?
Tags: programming, development, userexperience
Published: 2020-08-21 09:58:14

---
title: Feature flags: what are they good for?
published: true
description: Feature flags are a nifty tool that help with feature management. But what makes them so useful, and how do you use them?
tags: programming, development, userexperience
//cover_image: https://direct_url_to_image.jpg
---
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7vvwwi6t2upzs7l8qieu.jpg)
---

<!-- wp:paragraph -->
<p>Feature flags, otherwise known as a ‘feature toggle’ or
‘feature switch’, are a nifty tool that help with feature management. A feature
flag grants developers the ability to turn features in their software off or on
at will. (That is, without releasing new code.)</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>With feature flags, you can enable or disable your product’s
features any time. Even after you’ve deployed your code. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But why is this so useful? Here, we explore the different uses of feature flags, and why they’re so beneficial in product management. </p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:heading {"level":4} -->
<h4><strong>Good for release management </strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>One use of feature flags is for release management. Such
feature flags are sometimes known as release flags or release toggles. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A key benefit of these helpful flags is that they help you
keep deployment separate from your rollout. You can add the feature-enabling
code to your server, without making it available to users. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So, you can deploy a half-built feature as latent code. Then you can continue to work on it, and turn it on when it’s ready for people to use. Or, you can leave it switched off if you <a href="https://www.parkersoftware.com/blog/feature-creep-software-guilty/">choose to drop</a> that feature. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Plus, feature flags help you reveal new features over time. That is, you can gradually turn on functionality as it becomes available.</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:heading {"level":4} -->
<h4><strong>Good for allowing permissions</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Feature flags are also useful in a permissions context.
These feature flags allow you to manage which features are available to any
given user. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Permission flags, then, prove instrumental when it comes to managing <a href="https://www.parkersoftware.com/blog/xaas-explained-an-as-a-service-overview/">different delivery models</a>. You can turn features (or even sets of features) off and on based on the usage allowances of any given user. For example, toggling the use of premium features for customers that pay for them. Or revoking access to a feature after the user has hit a cap. Either way, feature flags are great for tightening control.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>They’re also handy if you want to restrict the availability of features to your internal teams only. This <a href="https://www.parkersoftware.com/blog/are-you-eating-your-own-dog-food/">might be for testing</a>, or it could be to help you manage the program. With permission flags, you can turn these features on for internal use and off for your customers. </p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:heading {"level":4} -->
<h4><strong>Good for operations </strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Feature flags are equally useful for your operations team. They
are a powerful tool for controlling the operational aspects of your system. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For instance, your team can mitigate the risk of outdated or
experimental features. If a new feature is posing an unforeseen consequence,
operational teams can turn it off. Or, if a feature becomes outdated, feature flags
can help you retire it. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In addition, you can minimise <a href="https://www.parkersoftware.com/blog/the-4-software-maintenance-categories-and-what-they-mean-for-your-users/">change aversion</a> by removing features gradually. (Achieved by toggling small sections of functionality.) Or, if preferred, you can hit the kill switch and remove access to entire features in one go. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Another use of operational feature flags is manual traffic management. So, a customer’s usage spikes or your traffic rises to a point that puts a strain on your systems. You could use operational flags to throttle usage and turn off draining features, to prevent a service outage. </p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:heading {"level":4} -->
<h4><strong>Good for experimenting</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Next, feature flags are ideal for experimentation and
testing. You can release features to different customers. Then, you can collect
data about how they use the new features, which ones are popular and so on. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So, feature flags also offer the benefit of easy A/B testing. With them, you can toggle the features for different groups of users in an experiment. Then, you can <a href="https://www.parkersoftware.com/blog/product-feedback-the-proof-of-the-pudding-is-in-the-eating/">collect feedback</a> about the preferred design, function or quality of your software.&nbsp; </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>With feature flags, you can also allow your users to preview upcoming features. You can then collect feedback to fine-tune new functionality before mass rollout.</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:heading {"level":4} -->
<h4><strong>That’s what feature flags are good
for </strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Feature flags are an underrated tool. They’re useful in
various ways, from managing permissions to facilitating experimentation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So, are you using feature flags in your code? </p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":20} -->
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:separator -->
<hr class="wp-block-separator"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em>Originlly published here: <a href="https://www.parkersoftware.com/blog/feature-flags-what-are-they-good-for/">https://www.parkersoftware.com/blog/feature-flags-what-are-they-good-for/</a></em></p>
<!-- /wp:paragraph -->