Che cos'è lo "sciame"?

42

Ho sentito lo sciame menzionato nel contesto della Programmazione Agile o Extreme. Sembra essere un complemento all'accoppiamento.

Che cos'è esattamente? Quando dovrebbe essere applicato? Come lo fai bene?

    
posta Jay Bazuzi 07.05.2012 - 22:18
fonte

4 risposte

43

L'idea è che tutti i membri del tuo team lavorino contemporaneamente alla stessa storia. Invece di concentrarsi su attività diverse, tutti si concentrano su un'attività alla volta finché non viene completata. Poi passano alla prossima cosa, dove lavorano tutti insieme.

Questo aiuta le squadre che lottano per completare le storie prima della fine dello sprint. Spesso i team finiscono l'80% di tutte le storie, ma nessuna è completa. Questo è meno utile del finire completamente l'80% delle storie, poiché le storie non completate non hanno (effettivamente) alcun valore per un utente finale. È più facile ottenere storie completate quando tutti i membri del team si concentrano su una storia alla volta. Questa è la motivazione dietro lo sciame.

Ci sono alcune difficoltà qui. Ad esempio, il QA non può sempre testare le cose prima che siano costruite (o persino progettate). In questo caso, dovresti stabilire insieme un progetto sin dall'inizio, e quindi il QA può scrivere (inizialmente fallendo) i test contro il progetto e non l'effettiva implementazione.

    
risposta data 07.05.2012 - 22:21
fonte
11

Lo sciame si riferisce semplicemente al fatto che più persone lavorano insieme per completare un'attività o una storia. Nella mia esperienza questo non è qualcosa che fai spesso.

In genere, ogni membro del mio team lavora su un compito diverso e / o una storia diversa. Se qualcuno sta cadendo indietro, o se c'è il desiderio di finire presto un compito o una storia, altre persone smetteranno di lavorare su altri compiti e "sciamano" per completare l'attività, il che significa che lavoreranno tutti insieme su una singola attività o storia fino a quando è completato.

Recentemente abbiamo avuto un piccolo numero di storie che è stato un lavoro abbastanza noioso, poco interessante. Ho dato alla squadra un piccolo incentivo (pizza) e la scadenza (fine giornata) per finire il lavoro, così hanno sciamato sulla storia e messo fuori gioco almeno un paio di giorni di lavoro in un pomeriggio. Hanno terminato il lavoro e sono usciti presto, quindi ogni membro del team è tornato a qualsiasi cosa stessero lavorando. Hanno avuto un pranzo gratis, ho fatto il lavoro presto che avrebbe potuto essere trascinato a causa della natura noiosa, e la squadra ha superato la loro sprint. Win-win-win.

"Swarming" non è altro che un termine di fantasia per "hey, lascia che ti aiutiamo con quello".

    
risposta data 08.05.2012 - 03:59
fonte
2

Lo sciame è in realtà un concetto centrale di agilità. Non è qualcosa che viene fatto "quando ci sono problemi". Lo sciame, nella sua forma più semplice, significa che i team lavorano in modo collaborativo su elementi (storie) e li completano. Il concetto base è "smettere di iniziare e iniziare a finire". In altre parole, invece di ogni sviluppatore che lavora in modo indipendente su una storia, il team si concentra su un insieme più limitato di storie / attività e ottiene ogni elemento prima. Pensala come la differenza tra un sistema a thread singolo e multi-thread. Se una User Story ha 10 attività che devono essere eseguite e ognuna è di 8 ore, supponendo che non ci siano state complicazioni, uno sviluppatore potrebbe lavorare ogni attività in sequenza e completare la storia in 80 ore, o circa due settimane (dato uno sprint di 10 giorni di 8 ore di sviluppo al giorno). Cosa accadrebbe se due sviluppatori suddividessero i compiti e lavorassero contemporaneamente? Le stesse 80 ore di lavoro possono essere completate in questo modo in una settimana. Aggiungi un terzo e puoi vedere ora che potrebbe essere fatto in 3 o 4 giorni.

Lo sciame può essere fatto in diversi modi:

  1. Pair Programming (due sviluppatori seduti fianco a fianco per lavorare su codice, uno è il "driver" che scrive il codice, l'altro è il navigatore, tenendo a mente l'orientamento a lungo termine e aiutandolo a revisione del codice contemporaneamente.
    1. Lavoro di coppia: uno sviluppatore e un tester lavorano simultaneamente sullo stesso lavoro, uno codifica e l'altro test, l'automazione della scrittura, ecc.
    2. Sciami come ho detto sopra, che è molto comune. Di solito, i membri del team sciamano una storia, ma ognuno di essi possiede compiti individuali in questo metodo.
    3. Programmazione Mob: l'intero team è focalizzato su una storia (o anche un'attività) alla volta.

Le squadre che danno una storia a ogni sviluppatore tendono ad avere troppo "work in progress" o WIP, e spesso molte storie iniziano ma non sono state fatte. Questo è ANTI-PATTERN e NON è una buona pratica.

Le squadre che pullulano tendono ad avere meno WIP e completano più storie - e di fatto, intendo Sviluppato, Testato, Approvato, pronto per la distribuzione. Quindi, questa è una pratica è quel nucleo di agilità.

    
risposta data 20.03.2017 - 22:56
fonte
1

Il seguente articolo su InfoQ descrive un approccio allo sciame:

  • Il team utilizza la programmazione mob per la maggior parte delle attività di codifica
  • Alcune parti del team o singoli membri del team spesso si dividono e si uniscono al team a brevi intervalli
  • Tutti fanno tutto (senza ruoli)
  • Il team non utilizza le stime, il WIP è sempre uno, non c'è bisogno di standup o cerimonie simili

Leggi l'articolo per la spiegazione dettagliata.

    
risposta data 11.10.2017 - 00:29
fonte

Leggi altre domande sui tag