Feature Toggle Driven Development: Practices usedby Practitioners
Using feature toggles is a technique that allows developers to either turn a feature on or off with a variable in a conditional statement. Feature toggles are increasingly used by software companies to facilitate continuous integration and continuous delivery. However, using feature toggles inappropriately may cause problems, such as dead code and code complexity. For example, repurposing an old feature toggle which activated functionality that had been unused for 8 years caused Knight Capital Group to go bankrupt. The awareness of feature toggle industry practices can help practitioners use feature toggles since software practitioners usually prefer to learn through the experiences of other software practitioners. The goal of this research project is to aid software practitioners in the use of feature toggles through an empirical study of feature toggle practice usage. We conducted a qualitative analysis of 109 Internet artifacts about feature toggles and also conducted a follow-up survey to find the frequency of usage of feature toggles in industry. We identified 17 practices in 4 categories: Management practices, Initialization practices, Implementation practices, and Clean-up practices. We observed that all of the survey's respondents use a dedicated tool to create and manage feature toggles in their code. Using a maintenance tool, setting up the default value for feature toggles, and logging the changes made on feature toggles are also frequently-observed practices in Internet artifacts. The feature toggle driven development practices discovered and enumerated in this work can raise the practitioners' awareness of usage of feature toggles in industry and help the practitioners to better use feature toggles in their projects. The practices discovered through this work can enable future quantitative analysis to mine code repositories to automatically identify these practices.
READ FULL TEXT