Unlocking Continuous Delivery: How Feature Flags Transform Software Development

TL;DR

Feature flags enable teams to release new features incrementally, gather user feedback early, and quickly respond to issues, supporting safer and more frequent deployments. Real-world examples like Azure DevOps show that this approach allows for controlled rollouts, continuous monitoring, and ongoing improvements based on user input. Development managers should consider adopting feature flags to improve delivery speed, reduce risk, and ensure features better meet user needs.

16 January 2025
Written by Martin Hinshelwood
3 minute read
Subscribe

In my journey through the world of software development, one practice has consistently stood out as a game changer for organisations striving for more frequent delivery: the use of feature flags. This approach not only facilitates continuous delivery but also allows teams to deploy new features to production incrementally, ensuring that they can gather valuable feedback before fully rolling out changes to all users.

Embracing Incremental Delivery

When we talk about continuous delivery, it’s essential to accept that we might deploy features that aren’t quite ready for the end user. This doesn’t mean we’re throwing caution to the wind; rather, it’s about delivering small increments of functionality. For instance, you might have a feature that requires multiple deployments to reach its final form. Imagine you want to deliver 10% of a feature now, with the remaining 90% to follow later. This is where feature flags come into play.

A Real-World Example: Azure DevOps

The Azure DevOps team exemplifies this practice beautifully. When you log into their platform, you’ll notice a button in the top right corner that allows you to access preview features. This is a clear indication of how they manage feature flags. Here’s how it works:

  • Development Phase: When developers are working on an update, they often ship smaller changes directly. However, for significant new functionalities, they hide these behind feature flags.
  • Internal Testing: Initially, the feature is enabled only for the developers’ accounts. They monitor telemetry to assess performance and identify any issues.
  • Private Preview: Once the team is satisfied with the internal testing, they may open the feature to a select group within Microsoft. Users can opt in to test the feature, providing feedback and telemetry data.
  • Public Preview: If the feature performs well, it transitions to a public preview, where it becomes available to all users who wish to try it out. This stage is crucial for gathering broader feedback.

The Importance of Feedback

Feedback is the lifeblood of this process. When users turn off a feature, they’re prompted to provide reasons. This engagement is invaluable. I’ve personally experienced this when I’ve turned off a feature and received follow-up communication from the product manager. They genuinely want to understand what’s missing or what could be improved. This level of engagement not only helps refine the feature but also fosters a sense of community between the development team and users.

Continuous Monitoring and Adaptation

As the feature progresses through its lifecycle, the team continuously monitors its performance. They assess whether enough users are engaging with the feature and whether it meets their needs. If the telemetry indicates that the feature isn’t performing well, they can quickly disable it, ensuring that it doesn’t negatively impact the user experience.

The Long Road to Full Deployment

It’s worth noting that transitioning a feature from development to full deployment can be a lengthy process. For example, the Azure DevOps team took nearly three years to fully migrate users from old boards to new boards. This was due to the need for ongoing adjustments and improvements based on user feedback and performance metrics.

Conclusion: The Power of Feature Flags

Incorporating feature flags into your development process is a powerful strategy for enabling continuous delivery while safeguarding your users and system. By allowing for incremental releases and gathering real-time feedback, you can ensure that you’re building the right features that truly meet user needs.

As you consider your own practices, I encourage you to reflect on how feature flags could enhance your delivery process. Embrace the opportunity to engage with your users, gather insights, and ultimately deliver a product that resonates with them. After all, in the world of software development, it’s not just about delivering features; it’s about delivering value.

Subscribe

What to read next

Video DevOps Engineering Excellence

Transforming Agility: How Azure DevOps Went from Two-Year Releases to 880,000 Deployments

Explores how Azure DevOps shifted from slow, two-year releases to rapid, continuous delivery, highlighting the benefits of fast feedback, …

Watch video
Video Engineering Excellence DevOps

Unlocking the True Power of Continuous Delivery: How Automation Transforms Software Development

Explains how automation in continuous delivery improves software reliability, reduces risk, and enables faster, safer deployments through …

Watch video
Video Product Development Engineering Excellence

Unlocking Success: How Small Experiments Transformed Feature Delivery from 25 to 150 in Software Development

Explores how breaking features into small experiments boosts software delivery, enabling teams to deliver more features, reduce risk, and …

Watch video
Video Engineering Excellence Product Development

Unlocking Code Quality: The Transformative Power of Frequent Deployments

Explores how frequent code deployments improve code quality, reduce technical debt, enable faster feedback, and support iterative, …

Watch video
Video Engineering Excellence Product Development

Maximising Deployment Frequency: The Key to Faster Time to Market and Business Success

Explores how increasing deployment frequency, stable environments, and fast feedback loops improve software delivery, reduce time to market, …

Watch video
Article Engineering Excellence DevOps

Testing in Production Maximises Quality and Value

Explains how audience-based deployment and testing in production enable faster feedback, safer rollouts, and higher software quality by …

Read article