Come convincere gli sviluppatori a iniziare a usare le levette flag delle caratteristiche?


20

Supponendo che gli interruttori flag delle funzionalità siano una buona idea e dovrebbero essere implementati nel codice che gli sviluppatori scrivono. Ad esempio, Etsy lo giura come una parte importante della loro cultura .

Qual è un buon modo per persuadere (e imporre) agli sviluppatori di iniziare a usare gli interruttori flag delle funzionalità?

Ulteriori informazioni sui toggle dei flag delle caratteristiche sono spiegate in Q: Come usare i toggle dei flag delle caratteristiche , D: Cosa sono i toggle dei flag delle caratteristiche e molto ampiamente nell'articolo di Pete Hodgson sull'argomento sul blog di Martin Fowler .


Una versione ristretta per la domanda devops.stackexchange.com/questions/4/… .
Evgeny

1
Oeps, solo ora ti vedo nuovo commento (e aggiornamento). Dopo aver appena pubblicato una nuova domanda su di loro. Forse vuoi pubblicare una risposta alla mia nuova domanda (dove hai molto più spazio per spiegare effettivamente queste cose)? Se lo fai, assicurati che non si tratti di una risposta di solo collegamento (confido che tu sappia cosa significa sui siti SE, giusto?).
Pierre.Vriens

Risposte:


18

Gli interruttori funzione sono una pratica comune nello sviluppo ad alta velocità perché disaccoppiano lo sviluppo dal rilascio. I team di sviluppo possono "rilasciare" una nuova funzionalità alla produzione, in uno stato disabilitato. Ciò consente di rilasciare la funzione in qualsiasi momento. Se la funzione dipende da altri lavori o preparazioni, non è necessario attendere che una versione principale passi alla produzione.

Per quanto riguarda gli sviluppatori "convincenti" ad usarli, questo è un esercizio per difendere la libertà che offre. La mia esperienza è che non è una vendita difficile per gli sviluppatori. È la gestione che tende a essere riluttante a provare nuove cose. Prova questo:

  • Trova un framework di attivazione / disattivazione delle funzionalità. Il management / l'azienda potrebbe essere più propenso a provare qualcosa supportato da un sistema comune
  • Inizia in piccolo. Introdurre il sistema di commutazione su una base di prova per una funzione che dimostrerà la sua utilità.
  • Dimostrare la capacità del toggle di eseguire test A / B. Abilita l'interruttore per un sottoinsieme della tua Web farm, quindi raccogli le metriche sul comportamento. Piccole differenze nel layout della pagina hanno dimostrato di avere enormi effetti sulle entrate per le applicazioni al dettaglio (ad esempio Ebay, Amazon)

2
+1 per il bit del framework. Ho visto troppe persone alzare le proprie levette di funzioni ed è sempre un codice cattivo.
Jduv

Per quanto riguarda il bit del framework, c'è un interessante OSS di Intuit chiamato Wasabi github.com/intuit/wasabi
Evgeny

Raccomandazione del libro su come persuadere altri sviluppatori - Promuovere il cambiamento tecnico di Terrence Ryan
Liath

8

In un mondo ideale penso che lanci una nuova build e sorprenda! Niente cambia. Questo perché tutte le nuove funzionalità sono dietro interruttori che si spengono con l'interruttore spento.

Dopo l'implementazione, si verifica che il servizio implementato funzioni ancora, i telefoni non squillano più (a meno che il telefono che squilla non sia lo scopo dell'utente, vale a dire), ecc. Una volta tornati a un'operazione stabile nota, si inizia ad abilitare e verificare le funzionalità appena implementate.

Ora per la tua risposta: come ti piacerebbe lavorare in un team in cui essere di guardia è praticamente un gioco da ragazzi e i nostri utenti ci adorano perché i nostri siti e servizi sono stabili?

Questa è la squadra su cui voglio lavorare.

Puoi smettere di leggere qui se vuoi.

Mettere tutto dietro un interruttore di funzionalità sembra che possa portare a spaghetti code ovunque. Se si utilizza IoC e si è in grado di selezionare tra vNow / vNext / vPrevious, si tratta di mantenere la propria configurazione. Sì, più check-in, sì più classi (componentV1, componentV2, componentV3, ecc.) Ma in realtà hai un sistema più stabile? Come? vSuccessivo è traballante? Torna a vNow con la tua torre di controllo. È stata una settimana e vNow ha un bug sottile? Stessa cosa: torna a vPrevious altrettanto facilmente.

Nessun problema, nessuna preoccupazione, nessun sonno perso, nessuno stress.

Questo non è un sogno irrealizzabile. Lavoravo là. Vorrei poterlo vendere alla mia squadra attuale.


4

Un ambiente di sviluppo ad alta velocità di successo si basa in genere su un sistema automatizzato piuttosto rigoroso che prevede verifiche di qualità con rilevazione e rifiuto di modifiche errate che causano regressioni.

Gli interruttori di funzionalità offrono la possibilità di eseguire il commit anche di modifiche non testate in corso di lavoro senza essere rifiutate per aver causato regressioni nel ramo di integrazione. Il che costituisce un ottimo incentivo per introdurre la funzione attiva / disattiva molto presto nella vita della funzione.

Uno degli svantaggi della deviazione dall'IC reale e dello spostamento dello sviluppo delle funzionalità sui rami delle funzionalità è la mancanza di tale incentivo. L'aggiunta della funzione di attivazione / disattivazione in un secondo momento, quando l'unione del ramo di funzionalità nel ramo di integrazione è in genere più difficile, come qualsiasi integrazione tardiva.


2

Gli sviluppatori (e in genere i gestori dello sviluppo) di solito cercano due risultati associati al framework: facilità di gestione e velocità di implementazione. Vuoi spedire il codice più velocemente e più facilmente.

Fornire prove che l'approccio funziona; prova a costruire un piccolo POC usando i flag delle funzionalità rispetto al vecchio modo. I case study contano meno per le persone tattiche (sviluppatori \ ingegneri) che per le persone strategiche (middle management \ progettisti di prodotti).


0

La logica per avere le funzioni di attivazione / disattivazione non è qualcosa che gli sviluppatori possono decidere. Questo è qualcosa che interessa ai proprietari dei prodotti. Gli sviluppatori consentono questo cambiamento nel modo più sostenibile e sicuro. Critico proprio questa domanda.


Sono stato in organizzazioni in cui gli sviluppatori sono i proprietari dei prodotti. Ho visto la gestione dei prodotti comportarsi come proprietari dei prodotti alcune volte. E sono stato luoghi in cui nessuno sembra possedere nulla. Quindi la tua affermazione si adatta a circa un terzo della mia esperienza. Incoraggiare gli sviluppatori a scrivere cose in un modo che funzioni meglio nella produzione mi sembra generalmente positivo. Puoi citare qualche autorità a supporto della tua opinione?
pulcini
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.