Technology Ambassador: Monis Amjad - the take on Feature Flags

Hi! My name is Monis Amjad, and I work as a Lead Software Developer at BC Platforms. I have been working under the umbrella of software development since 2008. I'm a father of two and a life-long learner who seeks adventures wherever I go. At BC Platforms, we often exchange a variety of topics about Technology and the way of working in Software Development. For me, I’m particularly interested in the usage of Feature Flags. To manage different features of applications, we use feature flagging in delivering and deploying applications, continuously and smoothly, to our customers.
Feature Flagging is a technique of adding configuration in the application to hide certain features easily and effectively.Of course, the technique can be used for many different purposes other than those mentioned. However, the main idea is to ensure certain features are only available to certain customers, environments, or domains whenever we want. Moreover, it can be turned on and off easily and effectively without the need to spend too much time. The implementation can be done by adding a condition on the top-level component of the application or on the place where the feature call to action is visible. This way, the developed feature can be hidden in the respective environment or from the customer.
Why do we use Feature Flags in our daily work? It can become an important role in complex scenarios. As a developer, one should consider adding a feature flag in consideration of:
- It helps in deploying new features to production in smaller batches.
- It helps toggle features on and off for certain users.
- It helps in achieving Continuous Delivery.
- It reduces risk by allowing controlled testing.
- It kind of separates features delivery from launch.
What about when to not use Feature Flags? I'm sure there are cases where the utilization just does not add up. Or let's say we don’t use it in our team. Cases such as:
- Small UI changes or Styling changes. It could be done by enabling and disabling different themes.
- If features are implemented in such a way that those conditions are placed in many places in the codebase.
As the Lead Software Developer here in BC Platforms, part of my job is to view the development process as a whole and recognize the usage of techniques that would help our team achieve the best possible results. I would recommend implementing Feature Flags but with a few questions to keep in mind before taking the technique into use, for example: When one is adding a feature flag, should one think and ask if the feature flag is needed? And how should it be implemented so that it doesn’t require entries in many different places?
Sounds interesting? Join the conversation with fellow developers by applying to become part of the team!