Intuit takes control of releases and makes "speed a habit".
Time to propagate flag changes from 10 minutes to 200 milliseconds
Managing 200+ backend features
Intuit is a technology company that develops financial management solutions for approximately 50 million customers. Best known for products like TurboTax, QuickBooks, and Mint, Intuit continues to see growth and success by providing their customers with simple and easy to use software. Intuit serves consumers, small businesses and self-employed around the world, and saw $6.0B in revenue in 2018. The company is headquartered in Mountain View, California, and has ~9000 employees in 9 offices around the world.
The market for tax and accounting software is extremely competitive and changing at a rapid pace. Intuit's leadership promoted a cultural shift towards moving faster, and adopted the mantra "speed, as a habit". For software development teams, this translated to building more application features faster, and to accomplish this, they looked to agile methodologies.
One important part of this modernization effort was building a homegrown feature flagging system to help manage code changes in production. The system they built relied on config files, and developers found that updating them was risky and prone to causing errors. Furthermore, property changes for any feature had to be made within the actual codebase, which was only updated on a monthly basis. When changes were made to feature flags, it could take up to 10 minutes to go live for users. And if a user had an active session within the product (had not signed out, signed in, or refreshed), then they would see a stale version of that flag for some time.
Intuit appreciated the value of a centralized feature flagging system, but they needed a solution that was reliable and could scale as more and more teams began to feature flag. Furthermore, leadership wanted teams to feel confident when feature flagging.
LaunchDarkly's feature management platform was a solution that would allow teams to have the control they needed, and it would scale with them as their usage grew. With LaunchDarkly, everyone would have a central source of truth, and teams would have visibility into what flags were in place across environments and thereby understand important dependencies. Access permissions could be maintained, so teams could control who had the permission to add or change critical flags.
With LaunchDarkly, once a flag was instrumented within the codebase, it could be controlled from the platform. Engineers could turn flags on or off and target users without having to update the codebase, giving teams better control over how their features are exposed to users. They decide who sees what and when—whether this is for internal testing, betas, or progressive rollouts—and teams can easily target users at a granular level.
Any flag updates would also be live in seconds. LaunchDarkly's streaming architecture meant that once a change to a flag status was made, it would be pushed out to all targeted users instantly. So in less than a second, all targeted users would experience the change. This was important for teams who wanted to provide a consistent experience to users within cohorts, as well as when teams needed to protect users and turn off a feature.
Intuit quickly saw the value in LaunchDarkly. In the first 6 months, more than 600 feature flags were created across the organization. With LaunchDarkly, teams now turn their flags on or off whenever they need to and can trust that users are seeing the functionality they have enabled. Teams feel more confident in what they are delivering to their users. Whether providing features in a beta testing group or performing a rollout for all customers, they know they can always turn a feature off if they need to. For some teams, LaunchDarkly has enabled them to gradually move users off of deprecated features. Again, this instills confidence they can provide a consistent experience to their users while embracing "speed as a habit".
Teams have also found immense value in LaunchDarkly's user targeting capabilities. They can now roll out functionality on a user by user basis, update specific groups of users sequentially, and gracefully perform percentage rollouts. This robust targeting functionality has improved release cycles, and teams are using the platform to progressively deliver features.
In one example, the data science team wanted to test an idea with live users. With LaunchDarkly, engineers were easily able to present the test option to 45,000 users so they could run their experiment.
In another example, while a team was rolling out a new feature, they found it was causing performance problems. LaunchDarkly gave them the flexibility to decide how to address the issue. Ultimately they decided to minimize the disruption to customers, so they left the feature on for users who had already found it and began to interact with it, and turned it off for everyone else. This allowed them to measure performance of the app for the users who were interacting with the feature, which helped them better understand how to resolve the issue without impacting service to everyone.
LaunchDarkly has helped enable teams across Intuit to truly embrace "speed as a habit". They have found they can iterate faster and release more frequently.
Making a new feature available quickly for a handful of people across disparate touch points within the product overall, and coming from different code bases and different release schedules, really wouldn't be possible for us without something like feature flags.
Staff Developer at Intuit