Yes in the end it's all in the process, but feature flags are not the end-all be-all these few paragraphs posit them to be.
Yes in the end it's all in the process, but feature flags are not the end-all be-all these few paragraphs posit them to be.
Another strategy that kind of worked but not as well, is requiring the cleanup of the feature flag to happen in the next sprint. But it tends to be de-prioritized, and sometimes even pushed to the next sprint as other things are always more important.
Another strategy that I've discussed and thought about but never actually implemented or advocated for, is limiting the max amount of active feature flags in the specific project to N numbers (ideally 1). So if you want to activate another feature flag, you have to first cleanup the previous one.
- Ability in code to set the default value in non-production environments such that if a developer never set the flag, it assumes this default value. When a feature is fully released the default should be "on for everyone", generally with the expectation it will be retired soon.
- A required field designating an owner usually a team, but can be a person if your company is small enough
- A field in the flag definition for an expected retirement date
The defaults keep combinatorial explosion down and the other practices make it easy for one responsible person to audit flags and track down responsible parties.