When deployments are easy, code becomes simpler
You bump into DORA in the wild a lot.
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.
Thanks for reading Bit Byte Bit! Subscribe for free to receive new posts and support my work.