On a recent episode of the Hidden Brain podcast: You 2.0: How to Break Out of a Rut, they talked about the "goal gradient". This is the idea that at the start of a journey, you move quickly due to the excitement; then, you slow down for the long slog in the middle; and finally, towards the end - when the goal is in sight - you move quickly again with a renewed sense of purpose. Studies demonstrate that this is just as true for mental tasks as it is for physical tasks. And, as I was listening to the episode, it occurred to me that feature flags are a perfect way to hack your own psychology in order to remain maximally productive when building large features within a product.
Imagine building a feature that is estimated at 6-weeks to completion. In a pre-feature-flag world - for many of us - that journey is composed of 6-weeks of local development followed by a deployment to production (or a Quality Assurance environment). During those 6-weeks, there aren't many "landmarks" that provide feedback on our progress. As such, the "goal gradient" dictates that we are likely to slow down and become demoralized in the middle.
In a post-feature-flag world, however, we are atomizing our journey. Since feature flags allow us to divorce "deployment" from "roll-out", it means that we can deploy parts of a larger feature as they are completed even if the overall "epic" still has much work to be done. Instead of a single milestone at the end of our journey, we create many milestones - each of which provides us with a renewed sense of progress and purpose:
Not only does this help us remain energized and productive during development, it also shifts how we think about delivering value to our customers. Once some of the work starts going to production, it naturally begs-the-question: can we expose this work to our customers? Is there some minimum viable set of requirements that we can "activate" (with the feature flag) sooner than later?
The answer to that question is almost always Yes. Most product teams incorrectly believe that a feature must be fully polished before it can be shown to the users. This might be satisfying for the Design team; but, users just want to get work done. And, if a subset of features allows them to do that - it's best to ship now and then continue to iterate.
Exposing work to our customers is the ultimate landmark - the most exciting sense of progress. Which means, by using feature flags, not only are we creating local landmarks that fuel enthusiasm and productivity, we are almost certainly also decreasing the length of the overall journey. So, even if you were to discount all of the technical benefits that feature flags bring to the table, it's clear that there are many psychological benefits as well.