Feature flagging tools like Launch Darkly, PostHog, Flagsmith come with costs. They buy you a ton of capabilities like A/B testing, phased rollouts, and reducing the need for deployments. If you sense a but coming, there is. Well, sort of.
Much of the time I’m using flags so I can commit unfinished code because I don’t want to create a separate branch and have one source of truth (low WIP baby - can you get more agile than that?). Basically, I want to reap the benefits of trunk-based development. For example, I’m implementing a Gift Card feature for JumpComedy.com and have the customer side working but not the admin side, so I want to hold back.
I could have created another Flagsmith toggle around the admin code, but that seemed to be overkill. Instead, I chose to have a simple hard-coded const isGiftCardFeatureEnabled = false
variable and use that instead. Is this bad because I now have to do a deployment to enable the feature?
I would argue as long as your deployments are easy, this is the better way to do things because it reduces the complexity of integrating with a third-party tool. I did an inventory of my recent feature flags and realized that about 80% of them aren’t there to roll things out to specific populations, or do any sort of A/B testing, but to hide unfinished code.
Yet more evidence that DORA (PDF) isn’t crazy for prioritizing deployment frequency so high when labelling organizations as elite.
> Is this bad because I now have to do a deployment to enable the feature?
My deploy is literally uploading an 8MB binary file.
You're right, but, perhaps your situation is straightforward, and you are primarily concerned with the deployment process. However, these tools are essential, particularly in complex release processes involving multiple services, teams, and types of personnel.
In some cases, a single feature may take several months to complete, involving multiple teams across various services. Moving from the development stage to production, following a Trunk-based development approach, and announcing the new feature to customers can be a lengthy process. This is where Feature Management tools come into play.
In certain companies, the release process may be even more protracted due to the need to cater to individual customers and provide training. In such scenarios, the role of Feature Management tools becomes even more critical, ensuring consistent communication between internal and external parties