How feature flags saved my marriage
|Ronit Belson in Agile Thursday, July 19, 2018|
How software feature flag management allows businesses to achieve better agility and helps customers customize what they want quickly and easily.
A year ago, I decided to finally make the switch from an average car to a smart car. My “excuse” for spending more than $80K on a car was Tesla’s main feature, autonomous drive. This would make my 80 mile daily round-trip commute bearable. Eventually, I decided to bite the “price tag bullet” and invest in the autonomous driving car so I could enjoy a smooth drive on Interstate 280 with a car that practically drives itself.
Filling out all the paperwork to purchase a car is one of my least favorite activities, so I asked my husband if he would visit the showroom to complete the purchase for me. My only request to him was, “Please make sure that it will have the autonomous driving feature.”
Fast forward a couple of weeks. We are at the Tesla dealership to pick up my car. I am seated behind the steering wheel and asking the Tesla sales rep to show me how to use the autonomous driving feature in my new car. His response was unexpected. “You didn’t buy the autonomous feature.” Saying that I was unhappy would have been a massive understatement!
Since my husband and I have been married for nearly 20 years, he immediately realized by the look on my face the mistake he had made. I struggled to wrap my head around how this had happened. Essentially, we had just spent the single largest sum of money we have ever invested on car before and the one must-have feature I wanted was not even included!
What happened next surprised me even more. “It’s not a problem,” said the Tesla rep. My disappointment turned to confusion, as I asked him to please explain how this massive mistake would not be a problem? “Even though you didn’t initially purchase the autonomous feature, for just $5K more, we can turn that feature on immediately.” As simple as that, I had my autonomous driving car!
Feature Flags to the Rescue
Building quality software requires finding ways to simplify the development process. Feature flags, also known as feature toggles, provide a simple way to improve software development. They are simple conditionals used to control code execution. They provide a way to add new behavior to an application and then enable or disable the new behavior without deploying a different version.
Whether you’ve heard the term feature flag before or not, you’ve almost certainly used one - whether you’re a developer, engineer, product manager or an average consumer.
Have you ever wondered how some companies release new things just after they’ve announced them at a live conference? Well, with feature flags, that’s possible - they just toggle a switch and enable the new feature. Companies like, Uber, Twitter, Netflix, and Facebook use feature flags for speed and agility.
Today software is developed and deployed in increments. The days of massive releases are over. The headaches of large-scale releases are hopefully behind us. Development managers use steady feature rollout to ensure a calm and safe development process.
The flags help in the following areas:
- Deployments with less risk, more speed
- Experimentation through A/B testing
- Continuous integration
- Feature customization based on user preferences
It can be surprisingly simple, really. You wrap a conditional around some feature in your application, and then you trigger that conditional (or not) at runtime based on a configuration setting. You can implement this as simply as having the conditional check for a config setting called “enable new stuff” and then showing the new stuff only when you set the flag to true.
This little trick goes by the more formal name of feature flag. And the process by which you turn it on and off is known as feature flag management.
The Future of Customer Experience / Business Agility
What makes this story so remarkable is Tesla’s innovative approach to customization and business agility.
Like some of you, I have purchased new cars before - in fact, many new cars - and I thought I knew exactly what to expect about the general process. I choose the model I want and sometimes, I get to choose some custom options. Once the decisions are made, that’s it - that’s my car. If by chance, the feature I want is not part of the car I ordered, there are very few options that won’t take days or weeks, or extra cost, to remedy.
In analyzing their approach, it’s easy to understand why it works so well. We know that customers want different options and freedom to make choices. What is important to one person, may not be important to another. Instead of hard-wiring the premium features into a specific model, all Teslas come pre-installed with various feature options. That means the sales reps are able to help each owner customize their car based on their individual preferences simply by turning the flag around that feature to “on” or “off.” This type of flexibility allows Tesla’s engineering team to move faster, and it allows their business operations (i.e., the sales rep in the dealership) to offer customers exactly what they want.
Today, customers want what they want when they want it. Wouldn’t it be amazing if it was as easy as turning a feature flag on and off? So, if your spouse makes a similar mistake and orders the wrong configuration of options to the car you want, a sales rep just might save your marriage with the click of a button!
This content is made possible by a guest author, or sponsor; it is not written by and does not necessarily reflect the views of App Developer Magazine's editorial staff.
Become a subscriber of App Developer Magazine for just $5.99 a month and take advantage of all these perks.
MEMBERS GET ACCESS TO
- - Exclusive content from leaders in the industry
- - Q&A articles from industry leaders
- - Tips and tricks from the most successful developers weekly
- - Monthly issues, including all 90+ back-issues since 2012
- - Event discounts and early-bird signups
- - Gain insight from top achievers in the app store
- - Learn what tools to use, what SDK's to use, and more