Scritto originalmente in francese. Tradotto dall'IA — il significato è stato preservato, non la prosa.
Idea principale
Un repository che contiene un feature flag non contiene un comportamento, ne contiene due — e non dice quale viene eseguito. Leggere il codice stabilisce allora che esistono entrambi, mai quale si applica. Quando un Customer Success Manager chiede «in quali condizioni questo workflow si blocca per questo cliente?», la risposta non è nei file: è nello stato del flag nell'ambiente in cui lavora quel cliente.
Ne derivano due regimi di risposta, che non valgono la stessa cosa. Senza accesso all'ambiente la risposta resta condizionale: se il flag è attivo il comportamento è questo, altrimenti è un altro. Con quell'accesso diventa una risposta sul prodotto così come lo vive quel cliente, nella sua configurazione, a quella data.
Il punto va oltre il meccanismo dei flag. Una domanda del supporto o della prevendita non riguarda quasi mai il codice in astratto; riguarda ciò che un dato account vede sullo schermo. Designare il repository come fonte di verità risolve il disaccordo tra il codice e una documentazione superata, e lascia intero lo scarto tra il codice e un rilascio. La fonte completa del comportamento osservato è una coppia: il repository, e lo stato dell'ambiente che lo esegue.
Perché è importante
Impedisce una lettura troppo frettolosa dello spostamento verso il codice. «La verità è quello che gira» designa il repository finché si parla del prodotto in generale, e smette di designarlo appena si parla di un cliente — che è però il caso della maggior parte delle domande che arrivano ogni giorno.
Stabilisce anche che cosa un commerciale ha il diritto di promettere. Un comportamento presente nel repository non è un comportamento disponibile per il prospect che ha davanti, e la differenza tra i due si legge in un'impostazione, non nel codice.
Sfumature e limiti
La dipendenza dalla configurazione riguarda solo una parte del prodotto. Per gran parte del comportamento non è in gioco nessun interruttore e il repository decide da solo; trattare ogni risposta come condizionale per principio significherebbe non affermare più niente.
L'accesso all'ambiente, d'altra parte, non è una semplice questione tecnica. Leggere la configurazione di produzione di un cliente coinvolge dati reali e regole di riservatezza, e non tutte le organizzazioni possono aprirlo allo stesso insieme di funzioni aziendali.
Infine, anche lo stato di un flag ha una data, come tutto il resto. Una risposta esatta nel momento in cui viene data smette di esserlo al primo cambio di impostazione, senza che nessuna modifica del codice l'abbia segnalato.
Domande aperte
- Chi, in un'organizzazione, autorizza un sistema di risposta a leggere la configurazione di produzione di un cliente, e sotto quale controllo?
- Come si trasmette a un cliente una risposta condizionale senza che diventi inservibile per chi la porta in riunione?