What Is Feature Management?
Feature management is an updated approach to application development where individual features replace application versions as the unit of software development, testing, and measurement. With feature management, code changes are placed behind feature flags (also known as feature toggles). Feature flags decouple code deployment from rollout to end users, which allows teams to spend more time shipping new features and functionality and less time waiting for dependencies, cross-team coordination, and release trains. Looking for info on feature flag management? The difference is nuanced and outlined here.
Functionality Delivered With a DevOps Mindset
Feature management is informed by the principles of agile and DevOps, where smaller work units are delivered more often. Rather than conceptualizing, designing, developing, testing, delivering, and measuring the success of entire applications, feature management allows teams to build, test, and release changes at the feature level.
This contrasts with previous approaches to the application development lifecycle, where major and minor versions consisted of many changes that must queue for delivery until all the other changes in a release are completed and tested. When the application version is the delivery unit, everything in that version (successful or not) rolls out or back together.
Why Development Teams Adopt Feature Management
Feature management is preferred over traditional application release processes because it:
- Delivers new functionality to end-users with less lead time
- Improves delivery cadence by reducing cross-team release dependencies
- Improves application stability by enabling testing in production and progressive delivery
- Captures feature-level system performance and user behavior metrics, even during partial rollouts—helping to contain the “blast radius” of issues and speed the recognition of successful work.
- Increases psychological safety and job satisfaction for developers by replacing large-scale releases (and bulk rollbacks of all changes, whether healthy or not) with the speed and precision of a feature-level “off switch” and feature-level impact measurement.
Feature Management Decouples Teams Too
Perhaps the most significant benefit of feature management is that it enables engineering teams to safely deliver a continuous stream of features in a loosely coupled, data-driven way. While decoupling code deployment from feature release is the most well-known benefit of feature management, this other sort of decoupling, where each software development team is decoupled from the others, often goes overlooked. When less coordination is required, there is less waiting and less waste, and each team can move at its cadence.
Data-driven at the Feature Level
Unlike traditional release processes, where the “feedback” is system-wide and often sudden and overwhelming, rollouts of individual features that use feature flags are refreshingly different. Feature releases can start with a few specific users (such as the product team), move on to any other group of users (such as beta testers), and then be ramped up or down for the rest of the end users under the watchful eye of feature-level system performance and end-user experience metrics. With advanced feature flag management platforms, metrics are computed at the feature level, so triage is unnecessary to answer the question, “Which feature is causing this problem?” It also takes no extra work to discover when a feature release improves KPIs. When feature rollouts produce metrics in real time, development teams can safely iterate more often without waiting on data science resources to know the impact on end users.
For more about feature flag management platforms, see the glossary entry, feature flag management.
Feature Management and Continuous Delivery
The development practices of continuous integration and continuous delivery have been difficult for some teams to implement fully. Trunk-based development is the next iteration of a workflow that aims to commit and integrate all changes daily (or more often). Daily commits behind feature flags reduce the complexity of code management, conflict resolution, and integration testing. With feature management, development teams can commit unfinished code to the main branch without concern that it will be exposed to end users. Feature flags also support the continuous delivery and DevOps notion of “immutable code,” where an artifact moves through multiple stages of the software development pipeline without being altered. This is possible by leveraging the real-time conditional evaluation functionality for specific users, which supports a variety of testing and feature release scenarios.
Feature Management Fringe Benefit: A/B Testing
Advanced feature flag management platforms that support feature management also provide functionality that hasn’t been readily available to software development teams in the past. A/B testing and feature experimentation were once considered specialized disciplines requiring data scientists and dedicated experimentation platforms, and commercial experimentation solutions in that space were not built for continuous delivery optimization. Now, the feature flag management platforms built for data-driven engineering team use cases make it possible for any feature release to become a feature experiment without additional work or expertise.