07. 08. 2024 Damiano Chini Development

How Feature Toggles Can Improve Agile Development

As the NetEye R&D team, we sometimes need to develop features in NetEye that require a lot of work to finish implementing.

To handle the development of these features, we’re always trying to divide the work into smaller, more manageable pieces so that we can see any progress and avoid the typical pitfalls of the waterfall approach.

What does it mean to divide the work in smaller pieces?

Usually what we try first is to divide the work by splitting the feature first into a Minimum Valuable Product and then adding all other required pieces step by step in order to reach the final goal.

Unfortunately we cannot always manage to find ways to split the work into pieces that by themselves meet the minimum requirements for use by NetEye users. This was the case, for example, with the Alyvix Multi-tenancy feature, which required a lot of implementation effort and could not be used until every piece was completed, because we didn’t want a NetEye installation to be in a state where some parts of the UI were multi-tenant and other parts weren’t.

Still, even in these cases we want to avoid an approach where the whole implementation is performed in a single block, without releasing anything until the last piece is complete.

How to can we split the work if we don’t want to show the users some unusable features?

To address this problem, one idea could be to internally divide the work into small pieces, and when each piece is complete, release it on a feature branch and only merge it into the main branch and release the new version when everything is complete.

We noticed though that this comes with the downside that the feature branch, after its creation, would miss every new change done on the main branch, which causes overhead due to conflicts and unexpected problems when integrating the new feature into the main branch, since multiple weeks may pass from the moment the feature branch is created to the moment when the feature is complete.

Feature toggles

For this reason we decided to go for feature toggles instead: a feature toggle allows you to actually ship the new pieces of the feature that is under development, but completely hide it from the user. When the development of the feature is complete, the toggle is enabled so that users can finally use the new feature. This approach allows developers to split the work into small pieces and continuously test how the new changes integrate with the rest of the product by simply enabling the toggle automatically.

These Solutions are Engineered by Humans

Did you find this article interesting? Does it match your skill set? Programming is at the heart of how we develop customized solutions. In fact, we’re currently hiring for roles just like this and others here at Würth Phoenix.

Damiano Chini

Damiano Chini

Author

Damiano Chini

Leave a Reply

Your email address will not be published. Required fields are marked *

Archive