Che cos'è lo "sciame"?


42

Ho sentito brulicante menzionato nel contesto di Agile o di Extreme Programming. Sembra essere un complemento dell'associazione.

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


@CodeWorks: le mie ricerche su Google hanno prodotto pochi risultati pertinenti e nessuno con una risposta chiara alla mia domanda. Se c'è una risposta canonica là fuori, allora, pubblicala qui.
Jay Bazuzi,


Nel videogioco di strategia "Sword of the Stars" c'è una voce fuori campo in cui le persone formica / mantide / hivemind ti dicono di dare un comando di ricerca "Stiamo sciamando il laboratorio tua maestà". Ho sempre pensato che fosse destinato ad atterrare con un senso di drammatica ironia.
Erik Reppen,

Risposte:


43

L'idea è che tutti i membri del tuo team lavorino sulla stessa storia allo stesso tempo. Invece di concentrarsi su attività diverse, tutti si concentrano su un'attività alla volta fino al completamento. Quindi passano alla cosa successiva, in cui lavorano tutti insieme.

Questo aiuta le squadre che lottano per completare le storie prima della fine dello sprint. Spesso le squadre finiscono l'80% di tutte le storie, ma nessuna è completa. Ciò è meno utile del completamento completo dell'80% delle storie, poiché le storie non finite non hanno (effettivamente) alcun valore per un utente finale. È più facile completare le storie quando tutti i membri del team si stanno concentrando 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 vengano costruite (o addirittura progettate). In questo caso, è necessario stabilire un progetto insieme all'inizio, quindi il QA può scrivere test (inizialmente non riusciti) rispetto al progetto e non all'implementazione effettiva.


+1. Interessante. Hai visto questo lavoro in pratica?
CodeART

2
Un altro modo di dirlo è "avere il minor numero di lavori in corso possibile", giusto?
Jay Bazuzi,

1
@CodeWorks Sì. L'abbiamo usato dove attualmente lavoro per un certo successo. È un modo abbastanza divertente di svilupparsi, perché è orientato alle funzionalità. Tutti stanno lavorando allo stesso obiettivo allo stesso tempo, quindi ho scoperto che promuove il lavoro di squadra davvero bene.
Oleksi,

1
@JayBazuzi Sì, praticamente. Anche avere un supporto completo per il team è importante.
Oleksi,

9
@CodeWorks, per niente. In effetti, probabilmente lo ha aumentato. Poiché tutti lavoravano così da vicino, c'erano meno bloccanti che sono emersi. Quando è emerso qualcosa, almeno qualcuno nella squadra ha saputo risolverlo, e sono stati in grado di farlo immediatamente poiché avevano la loro piena attenzione. Inoltre, il cambio di contesto è generalmente dannoso per la produttività. Chiedilo alla CPU. : P
Oleksi,

10

Lo sciame si riferisce 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 su una storia diversa. Se qualcuno è in ritardo, o se c'è il desiderio di finire presto un'attività o una storia, altre persone smetteranno di lavorare su altre attività e "sciamano" per completare l'attività, il che significa che tutti lavorano insieme su una singola attività o storia fino a quando è completato.

Recentemente abbiamo avuto un piccolo numero di storie che erano un lavoro abbastanza noioso e poco interessante. Ho dato alla squadra un piccolo incentivo (pizza) e una scadenza (fine della giornata) per finire il lavoro, così hanno sciamato sulla storia e hanno eliminato almeno un paio di giorni di lavoro in un pomeriggio. Hanno svolto il lavoro e fatto presto, quindi ogni membro del team è tornato a qualunque cosa stessero lavorando. Hanno pranzato gratuitamente, ho fatto presto un lavoro che avrebbe potuto trascinarsi a causa della sua natura noiosa e la squadra ha superato il loro sprint. Win-win-win.

"Sciamare" non è altro che un termine elegante per "ehi, lascia che ti aiutiamo in questo".


Questo sembra abbastanza diverso dall'altra risposta. Stai dicendo "quando c'è un bisogno insolito e urgente, coinvolgi tutti". @Oleksi ha affermato che "quando si pianifica un ciclo di sviluppo, è meglio mettere tutti su un compito alla volta piuttosto che far lavorare in parallelo ogni persona su un compito separato". Entrambe le definizioni sono plausibili ed entrambe sono pratiche utili, ma il suo ha un punteggio di 4x, quindi presumo che la sua risposta rifletta la definizione più ampiamente accettata.
Jay Bazuzi,

@Jay Bazuzu: Sia che tutti siano coinvolti in una singola attività come parte della pianificazione dello sprint, sia che si verifichi organicamente quando si presentano le esigenze, la definizione è praticamente la stessa: tutti lavorano insieme su una singola attività.
Bryan Oakley,

Penso che la tua risposta sia molto chiave qui. L'altra risposta che è "accettata" è il "cosa". Ma il tuo sembra affrontare il come.
Ape-inago,

2

Lo sciame è in realtà un concetto centrale per l'agilità. Non è qualcosa che si fa "quando ci sono problemi". Lo sciame, nella sua forma più semplice, significa che i team lavorano in modo collaborativo su oggetti (storie) e li completano. Il concetto di 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 realizza ogni oggetto prima. Pensalo come la differenza tra un sistema a thread singolo e multithread. Se una User Story ha 10 attività da svolgere e ognuna è di 8 ore, supponendo che non vi siano state complicazioni, uno sviluppatore potrebbe svolgere ciascuna 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). E se due sviluppatori dividessero i compiti e li svolgessero contemporaneamente? Le stesse 80 ore di lavoro possono essere completate in questo modo in una settimana. Aggiungi un terzo e ora puoi vedere che potrebbe essere fatto in 3-4 giorni.

Lo sciame può essere fatto in diversi modi:

  1. Coppia di programmazione (due sviluppatori seduti fianco a fianco per lavorare sul codice, uno è il "driver" che scrive il codice, l'altro è il navigatore, tenendo presente la direzione a lungo termine e aiutando a rivedere il codice contemporaneamente.
    1. Lavoro di coppia: uno sviluppatore e un tester lavorano contemporaneamente sullo stesso lavoro, un codice e l'altro test, scrittura automazione, ecc
    2. Sciamando come ho menzionato sopra, il che è molto comune. Di solito, i membri del team pullulano di una Storia, ma ognuno possiede compiti individuali in questo metodo.
    3. Programmazione della mobilità: l'intero team è focalizzato su una storia (o anche un compito) alla volta.

I team che danno una storia a ogni sviluppatore tendono ad avere troppo "work in progress" o WIP, e spesso molte storie iniziano ma non vengono fatte. Questo è un ANTI-MOTIVO e NON è le migliori pratiche.

I team che brulicano tendono ad avere meno WIP e completare più storie - e per dire, intendo sviluppato, testato, approvato, pronto per essere distribuito. Pertanto, questa è una pratica fondamentale per l'agilità.


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
  • Una parte della squadra o singoli membri della squadra spesso si dividono e si uniscono alla squadra a brevi intervalli
  • Tutti fanno tutto (nessun ruolo)
  • Il team non utilizza le stime, il WIP è sempre uno, nessuna necessità di standup o cerimonie simili

Leggi l'articolo per la spiegazione dettagliata.

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.