Quali argomenti posso usare per "vendere" il concetto BDD a un team riluttante ad adottarlo?


11

Sono un po 'un sostenitore vocale della metodologia di sviluppo guidato dal comportamento (aka BDD). Sto applicando BDD da un paio d'anni e ho adottato StoryQ come framework di mia scelta nello sviluppo di applicazioni DotNet. Anche se ho testato le unità per molti anni e in precedenza mi ero spostato su un approccio test-first, ho scoperto che ottengo molto più valore dall'uso di un framework BDD, perché i miei test catturano l'intento dei requisiti in modo relativamente chiaro inglese nel mio codice e poiché i miei test possono eseguire più asserzioni senza terminare il test a metà strada, il che significa che posso vedere quali asserzioni specifiche passano / falliscono a colpo d'occhio senza eseguire il debug per dimostrarlo.

Questa è stata davvero la punta dell'iceberg per me, poiché ho anche notato che sono in grado di eseguire il debug del codice di test e di implementazione in un modo più mirato, con il risultato che la mia produttività è cresciuta significativamente e che posso più determinare facilmente dove si verifica un errore se si verifica un problema per arrivare fino alla build di integrazione a causa dell'output che si fa strada nei log di build. Inoltre, l'API StoryQ ha una bella sintassi fluida che è facile da imparare e che può essere applicata in un numero straordinario di modi, che non richiede dipendenze esterne per usarlo.

Quindi, con tutti questi vantaggi, penseresti facile introdurre il concetto al resto della squadra. Sfortunatamente, gli altri membri del team sono riluttanti a guardare anche StoryQ per valutarlo correttamente (figuriamoci per intrattenere l'idea di applicare BDD), e si sono convinti l'un l'altro a provare a rimuovere un numero di elementi StoryQ dal nostro framework di test core, anche sebbene originariamente supportassero l'uso di StoryQ, e anche se il codice che desiderano rimuovere non influisce su nessun'altra parte del nostro sistema di test. Farlo finirebbe per aumentare in modo significativo il mio carico di lavoro nel complesso e andare davvero controcorrente, poiché sono convinto, attraverso l'esperienza pratica, che è un modo migliore di lavorare in modo test-first nel nostro particolare ambiente di lavoro e può solo portare a una maggiore miglioramenti nella qualità del nostro software, dato che ho trovato più facile attenersi al test prima usando BDD. Per chiarire ulteriormente, la maggior parte dei test unitari che abbiamo tende ad essere piuttosto fragili e difficili da mantenere, una sospensione da anni di test poco applicati in cui una riluttanza a attenersi a un processo guidato dai test ha visto gli sviluppatori ricadere su vecchie abitudini e fare tutti i test alla fine del progetto (queste stesse persone dichiarano di essere Agili!).

Quindi la domanda si riduce davvero a quanto segue:

  1. Quali argomenti posso usare per portare davvero a punto il fatto che sarebbe meglio per questo team usare StoryQ o almeno adottare la metodologia BDD?
  2. Potete indicarmi eventuali prove aneddotiche che posso usare per supportare la mia tesi di adottare BDD come nostro metodo standard di scelta?
  3. Quali contro argomenti puoi pensare che potrebbero suggerire che il mio desiderio di incoraggiare il team ad adottare BDD potrebbe essere un errore? Sì, sono felice di essere smentito, a condizione che l'argomento sia valido.

NOTA : non sto sostenendo di riscrivere i nostri test nella loro interezza, ma piuttosto di iniziare semplicemente a lavorare in modo diverso per tutti i futuri lavori di test, e preferibilmente nel modo in cui coinvolgiamo i nostri clienti.

E per quelli di voi che desiderano saperne di più sul BDD, possono essere utili i seguenti collegamenti:


Per chi è interessato a maggiori dettagli, siamo un piccolo gruppo di 4 persone che lavora a circa 5 grandi progetti. Il "processo pilota" per BDD è durato inizialmente per circa 2 mesi, seguiti da un altro periodo di circa 4 mesi. Il team ha accettato che avrei dovuto continuare a lavorare in questo modo e dovevo fare le loro prove. Sono in BDD da circa 2 anni dalla fine del processo, mentre gli altri sono diventati molto bravi a evitare il problema. Piuttosto che forzare un "confronto" sulla questione, sto cercando modi per convincere delicatamente la squadra a togliersi le spalle collettive e trovare il tempo di fare la propria parte.


2
Pensiamo a "LORO" - perché vogliono che vengano rimossi? Deve essere benefico per loro - hai provato a scoprire i loro benefici PRIMA e vedere quale via di mezzo può essere raggiunta PRIMA di proporre i tuoi benefici :)
Dottorato di ricerca

2
Prova a vendere meno e ad educare di più. Nella mia esperienza, le persone non vogliono essere vendute ma sono sempre disposte a imparare qualcosa di nuovo. Quindi lascia cadere le carte dove possono. Se sono ancora contrari, hai fallito come educatore o bdd non è tutto ciò che dici.
Kevin,

1
@Kevin Penso che ti sia sfuggito il mio precedente commento a Nupal, e forse il punto della mia domanda completamente. Hai preso una sola parola dalla mia domanda e l'hai interpretata fuori dal contesto. In realtà sto cercando di educare e non semplicemente di "vendere" in quanto tale. Sto cercando punti specifici che posso usare per aiutarmi a superare una riluttanza non necessaria a cercare di fare qualcosa di diverso. Ti preghiamo di rispondere se sei a conoscenza dell'argomento, piuttosto che fornire semplicemente dichiarazioni provocatorie sulle mie capacità o sulla tecnologia, che sono decisamente inutili da parte tua.
S.Robins,

2
Diagrammi decisionali binari? Acquista una copia del TAoCP vol 4 di Knuth e prestalo a loro.
Peter Taylor,

2
Penso che il problema che il tuo team ha non sia con lo stesso BDD, ma piuttosto un problema della fatica della metodologia di sviluppo. Ne soffro anch'io. Ci sono troppe metodologie che promettono di rivoluzionare lo sviluppo. Purtroppo pochi mesi dopo c'è sempre un'altra nuova metodologia e set di strumenti. Sono arrivato a vederlo come una fastidiosa distrazione piuttosto che un'opportunità per migliorare. Per introdurre BDD dovrai superare questo problema.
Antonio2011a,

Risposte:


5

Quali argomenti posso usare per portare davvero a punto il fatto che sarebbe meglio usare StoryQ o almeno applicare la metodologia BDD?

"Il cliente lo vuole."

IMO vuoi vendere BDD ai tuoi clienti / esperti di dominio almeno tanto quanto al team di sviluppo.

BDD è un processo di collaborazione esterna in cui sono coinvolti più stakeholder. I vantaggi di BDD non sono solo per gli sviluppatori di dedurre automaticamente il loro codice di test dai test di accettazione, ma si trovano anche nella cooperazione creativa che si svolge tra tecnici e uomini d'affari per produrre preziose e ben definite specifiche del comportamento previsto del sistema.

Dare ai clienti / analisti aziendali l'accesso a un'interfaccia in cui possono eseguire ogni specifica eseguibile, controllare il loro stato e vedere i progressi nella loro implementazione è generalmente molto apprezzato.

C'è una presentazione di Dan North su come vendere BDD all'azienda: http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-the-business


Ho visto quella presentazione e hai ragione, è un buon modo per avvicinarsi introducendo il concetto al cliente. Nel mio caso, devo fare alcuni piccoli passi. Se l'unica cosa che posso convincere il team a fare è adottare la lingua, potrei avere la possibilità di incoraggiare il metodo completo da applicare. Devo anche affrontare il problema che la maggior parte dei nostri clienti è interna e meno focalizzata sul business. Il tuo punto tuttavia è ben noto. :-)
S.Robins,

5
  1. In una squadra riluttante ad adottare BDD, probabilmente non ci sono "argomenti" che puoi usare per "convertire" i tuoi colleghi in adozione su vasta scala.
     
    Penso che il meglio che puoi fare sia convincerli a provarlo ("test del fumo", "corsa a secco", "progetto pilota") - specialmente se chiarisci perfettamente che abbandonerai l'idea se i risultati del test sono negativi.
  2. Il tuo approccio per trovare prove aneddotiche si adatta perfettamente all'idea di convincere il team a provarlo. Per questo, vorrei semplicemente cercare sul web qualcosa come "Storia di successo dello sviluppo guidato dal comportamento" e scegliere ciò che mi sembra più facile da usare.
  3. Ci sono due argomenti contrari che posso pensare che potrebbero suggerire che il tuo desiderio di convertire gli sforzi del team in BDD potrebbe essere in errore.
     
    Nessuno di questi è particolarmente costruttivo, soprattutto dal punto di vista di un "difensore del cambiamento", ma sfortunatamente probabilmente dovrai affrontare esattamente questa gentile retorica ( BTDTGTTS ):
     
    • non puoi garantire che la produttività complessiva del team migliorerà
    • non puoi garantire che gli sforzi investiti nell'adozione del BDD generino un ROI sostanziale
    • la squadra stava facendo abbastanza bene senza BDD, il rischio di cambiare l'approccio attuale non è giustificato
    • Google (o Microsoft o IBM - basta inserire il nome di qualunque fornitore di software "rispettabile") vada bene senza BDD, il che "prova" che BDD non è necessario
    • Gli approcci non BDD non hanno avuto una buona possibilità nei test comparativi
    • BDD potrebbe essere generalmente OK ma per questo e quel modulo / progetto non è applicabile

Secondo la mia esperienza, il modo meno doloroso per affrontare argomenti contrari come quelli sopra elencati è stato quello di eseguire un test controllato limitato per una modifica proposta.

Lo stato di "test limitati" sostanzialmente invalida tre dei quattro argomenti sopra, tranne uno su "fornitore rispettabile", che potrebbe essere contrastato fornendo prove aneddotiche di storie di successo (prove aneddotiche probabilmente non funzioneranno per un "cambiamento del big bang" ma per test limitato è abbastanza buono).

Se il cambiamento è davvero utile e la corsa di prova è organizzata correttamente, noterai un cambiamento positivo nell'atteggiamento di squadra e gestione, rendendo la transizione al cambiamento su larga scala regolare e indolore.

Un altro vantaggio dell'esecuzione di test limitata è che consente di chiarire e regolare i dettagli del processo di destinazione senza causare troppi problemi e con un rischio inferiore di "danno alla reputazione" dell'idea. Ogni volta che ho partecipato a tali esecuzioni di test , sono stato piacevolmente sorpreso di scoprire quanto sia stato facile passare all'adozione su larga scala avendo i dettagli più importanti impostati e chiariti nell'esecuzione del test.


Grazie per la risposta premurosa. In effetti, sono stato impegnato con successo in un test limitato, seguito da un'accettazione da parte del team per consentire l'applicazione BDD a tempo indeterminato. I miglioramenti della produttività sono stati misurabili, ma come hai detto non c'è alcuna garanzia che ciò si applicherebbe necessariamente a tutto il team senza trovare un modo per incoraggiare ogni membro del team a provarlo da solo, il che è tra l'altro la motivazione per presentare la domanda.
S.Robins,

@ S.Robins interessante. Quel test limitato di cui parli, per quanto tempo è durato? quale parte della squadra era coinvolta?
moscerino del

Siamo una piccola squadra di 4 persone che lavora a circa 5 grandi progetti. Il "test" ha funzionato inizialmente per circa 2 mesi, seguiti da un altro periodo di circa 4 mesi. Il team ha accettato che avrei dovuto continuare a lavorare in questo modo e dovevo fare le loro prove. Sono in BDD da circa 2 anni dalla fine del processo, mentre gli altri sono diventati molto bravi a evitare il problema. Piuttosto che forzare uno "scontro" sulla questione, preferirei trovare modi per convincere delicatamente la squadra a togliersi le spalle collettive e trovare il tempo di fare la propria parte! ;-)
S.Robins il

Vedo. Questo rende la tua domanda ancora più interessante. Ho bisogno di un po 'di tempo per masticarlo; per ora semplicemente non riesco a immaginare come sarebbe possibile fare ulteriori progressi (tranne che per approcci "ingiusti" come l'utilizzo del potere della micro-gestione )
moscerino del

@ S.Robins mentre ho la nostra attenzione - hai moduli che "mescolano" parti BDD e non BDD o c'è una sorta di separazione tra moduli BDD 100% / 0% BDD?
moscerino del

-1

Potrebbe essere il momento di assumere la gestione. Se hai provato e visto risultati concreti, ma il team è in difficoltà, potrebbe essere necessario coinvolgere la direzione.

Ciò è particolarmente vero se stanno danneggiando il membro del team più produttivo delle aziende. Preparati al gioco. Puoi iniziare avvicinandoti alla direzione e cercando di far smettere di sottovalutare il team eliminando i casi di test.


1
Non so se sono d'accordo con questo. Stai dicendo che senza l'acquisto da parte dello sviluppatore l'approccio giusto è quello di ottenere la gestione per costringerlo alla gola dello sviluppatore? Ciò non porta al risentimento? Indipendentemente dai meriti di BDD, penso che porterà a risultati peggiori. Cioè avrai vinto la battaglia e perso la guerra.
Kevin

@Kevin Sono d'accordo con Kevin su questo. Il risentimento e il malessere possono spezzare una squadra molto rapidamente e ciò di per sé può rappresentare un rischio maggiore per la produttività della squadra piuttosto che lasciarli lavorare in modo inefficiente. Il commento di Kevin mi ricorda quel proverbio sul non avere un chiodo. In questo caso, non sto cercando di fare qualcosa di drastico o eroico semplicemente per fare a modo mio. Quello che sto cercando è il mio "chiodo".
S.Robins,

Il team è già contro di loro, come dimostra il fatto che stanno eliminando il codice di test che hanno scritto. Questo è piuttosto ostile nella mia mente e merita l'intervento del responsabile dello sviluppo. Questo è il loro compito, rendere l'intera squadra più agevole.
Bill Leeper,
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.