Skip to content

The Smiles And Frowns Of Feature Toggles

The Smiles And Frowns Of Feature Toggles

Feature toggles or feature flags one of the powerful techniques used primarily because of their feature to modify product behavior without changing the original code.

 

Often feature toggles come out with complexity. This can be avoided by keeping a track of the toggle activity. We keep a constraint on number of toggles you can place in the system. You can use feature toggle to deliver features rapidly and safely. 

When developing minor tweaks to features. Let’s call them furs – we are not sure if they are going to stick around. This may be one of the use case where we can switch on a minor feature, UI tweak, algorithm change etc. to test it out in production environment. I understand ‘minor’ is subjective. 

This differs from A/B Testing, Hot-fix or patching. 

Feature toggles conversations often cross over in to engineering more than the product. You need to understand Continuous Delivery / Deployment, Pipeline and more to contribute in the discussion. 

Feature Toggles are conscious. They have a well define horizon and dynamism. Release and Experimental Toggles are transitory.

If you need to deep dive in Feature Toggles, I recommend the below:  

  • https://martinfowler.com/articles/feature-toggles.html  
  • https://launchdarkly.com/blog/how-to-use-feature-flags-without-technical-debt/
  • https://launchdarkly.com/blog/feature-flag-driven-development/
  • https://code.flickr.net/2009/12/02/flipping-out/

 


What Are Feature Toggles?

We know a method in software development that tries to provide a substitute to maintaining multiple branches or feature branches as Feature Toggles. 

It is done so that we can test a software feature even before it is completed and ready for release. Feature toggles is an important technique used for implementing continuous delivery.

In simple words, a feature toggle is a way by which you can develop your software to make it uncomplicated. So that you can either enable or disable features by doing some simple configuration changes.

Feature toggle is used by companies such as Facebook, Google, Amazon and so on. You can easily see a simple example of a feature toggle in your web browser, say Chrome. Just type chrome://flags in the URL input and then you can easily enable or disable features of your browser and ask Google to develop it.

 

When to use Feature Toggle?

Feature toggling or toggle proves to be useful when you want to keep the production code very close to the development version. We can do it when the business is not ready for the feature to be allowed or when you want to perform a canary release of your code.

A canary release is a technique to decrease the risk of introducing a new software version in the production unit. We do this by gradually decreasing the rolling of the change to a small group of users before rolling it out to the entire infrastructure and making it available to everybody. 

We advise it not to use the feature toggling to enable code, which is not complete. As by doing so, you may need to face a lot of complexity made by the feature flags.

Like every other thing, Feature Toggle also has some pros and cons. The better way to say this is “The Smiles And Frowns Of Feature Toggles”.

What are the pros of Feature Toggle?

 

There are several advantages of Feature Toggle which are:

 

  • One of its advantages is that it can turn on or off the features at any point of time. Let us take an example, for instance, at any moment of time you found a bug in production, then you can immediately turn that feature off
  • You can always carry forward and not backward, even if you have disabled any problematic bug. Saving time, you don’t need to go fix it up and roll back entirely.
  • With Feature Toggle, you have the power to run the unfinished code into production. We do it by reducing the amount of things you put in production at a time. As a result, small groups eventually reduce the risk of losing things.
  • Feature Toggle lets you enable a particular feature open even for a small group. Thus at a time an individual, or a small group, can use a particular enabled feature.
  • It allows you to do as many experiments as possible, which can NOT be done outside of the production environment.
  • One of the prime advantages for the integration team is that the Feature Toggle lets you eliminate or drop the need to create branches in a source code control repository. That means you need not think much about merging and focus on your work.
  • And last but not the least, you can enable or disable the feature while using the app.

What are the cons of Feature Toggle?

While using Feature Toggle, we find it that there are several disadvantages also, which are:

 

  • It requires well-defined engineering processes for Feature Toggle, as you need to think upon some points. These points can be: Do you really need toggles every time? Is it actually needed? If yes, then you should have an ideal design for its implementation.
  • Some problems also arise when the toggle is on. As it creates a technical debt which needs to be cleared as soon as possible. And this is also when the toggle is in 100% use. If we do not eliminate the technical debt, then you won’t be able to improve test or deploy the things.
  • Feature toggling sometimes easily gets out of control. By out of control, I mean to say that you might not control or enable certain options or features. Sometimes the number of toggles will grow faster than you think. 
  • Because of some problematic issues you may disable feature toggle and in the future you might forget to enable it. Therefore, it is said one disadvantage of feature toggle is that it loses its priority.
  • At the end I just want to convey that though Feature Toggle has some disadvantages, we still consider it to be a useful software in the continuous delivery stack. 
 

“Be cautious when using feature toggles.. You may incur a debt which could be difficult to repay.. But, you may be in for a pleasant surprise”

Photo by Public Domain Pictures from Pixabay.

Final image

Mayuresh S. Shilotri writes on Product, EdTech, UX, Customer Development & Early Stage Growth. 2,000-Word posts only. You can discover more about me here

Best way to stay in touch –

  • LinkedIn for the latest 
  • Youtube for the videos

Coming soon a Discord – Community.

Join to get sneak peek into what's happening

I write about books, experiences, product, UX, EdTech, early stage growth, validation – mostly tech. Subscribe if these topics interest you. Once every 15 days emailer. I promise – No spam. (I am known for it otherwise) 😉