Feature Switches auch bekannt als Feature Toggles sind einfache Schalter im Code, mit denen man ein ganzes Feature an- oder abschalten kann. Diese Schalter sind “von außen” bedienbar – im Handumdrehen hat man so die Möglichkeit, bei einem Problem (Bug) im Produktivbetrieb ein Feature komplett abzuschalten.
Die Alternativen sind schlechter:
Die EntwicklerInnen geraten nun nicht mehr in die Stress-Situation, ein Problem im Produktivbetrieb sofort beheben zu müssen. Statt dessen wird der Feature Switch auf OFF gesetzt, danach kann man in Ruhe das Problem untersuchen und beheben. Dann kann man ein neues Release machen und das Feature wieder aktivieren. Anschließend wird beobachtet, ob es immer noch Probleme gibt (Monitoring ist auch hier essenziell).
Es ist gar nicht so schwer, Feature Switches einzuführen:
Mit Feature Switches bekommt die Release-Managerin / der Release-Manager eine Handvoll Optionen. Statt wie bisher das ganze Release aufzuhalten, kann sie / er nun einzelne fehlerhafte Features aus einem Release ausschließen, und so den Releasetermin halten (wenn auch mit vermindertem Scope).
Als Christoph mich fragte, warum denn nicht in allen Projekten Feature Switches benutzt werden, konnte ich nur mit dem bekannten Zitat von Science-Fiction-Autor William Gibson antworten:
The future is here, it’s just not evenly distributed.
Ich gebe mal eine Prognose ab: In 5 Jahren werden Software-Teams, die keine Feature Switches benutzen, ähnlich schief angesehen werden, wie heutige Teams, die ohne Versionskontrolle (Git, SVN o.ä.) arbeiten.
Matthias Berth