Accoppia la programmazione con Scrum


10

Faccio parte di un team che sta attualmente utilizzando Scrum e stiamo prendendo in considerazione l'aggiunta di una programmazione di coppia per migliorare le competenze interfunzionali del team, nonché per ridurre i difetti con una filosofia "due teste sono meglio di una".

Nel nostro team, ogni membro del team in genere si registra per un carico di lavoro completo durante la pianificazione dello sprint (con "pieno" che è un numero inferiore a 40 ore settimanali, che consente riunioni, collaborazione, ecc.), Con un unico proprietario dedicato per ogni compito. Credo che questo sia abbastanza comune nei team Scrum ma potrebbe non essere necessariamente nel libro.

In particolare, sto cercando di evitare una situazione in cui i membri del team sono riluttanti ad accoppiarsi perché hanno i loro compiti su cui lavorare, che temo possa accadere se il team si auto-organizza semplicemente senza tempo dedicato all'abbinamento .

Detto questo, qual è il modo migliore per tenere conto degli sforzi / ore / punti della storia in uno scenario di accoppiamento, per essere sicuri di avere tempo assegnato per l'abbinamento?

Alcune opzioni considerate sono:

  1. Consentire a due persone di iscriversi per ogni attività e (approssimativamente) raddoppiare il numero di ore stimate
  2. Solo il membro del team "mani sulla tastiera" si iscrive per ogni attività, che viene stimata in base alle ore stimate di quella persona. Chiunque nel team supporterà l'associazione si iscriverà per un minor numero di attività nello sprint per consentire il tempo necessario per supportare l'associazione.

Risposte:


4

L'opzione più comune che ho visto quando si utilizza la programmazione di coppia all'interno della mischia è raddoppiare le stime di sviluppo.

Cioè, se si stima che l'attività richieda 3 ore per una persona, il tempo assegnato sarebbe di 6 ore per la coppia.

Sostituisci le ore con i punti se ti fa sentire più pulito;)


Grazie Oded. Questa risposta ha risposto in modo più conciso alla mia domanda specifica. Tuttavia, un grande ringraziamento a DXM che ha contribuito a identificare la causa principale, che è più legata alle persone che al processo. Vorrei poter accettare più di una risposta.
Cliff,

15

Penso che altri abbiano già fornito buone risposte, ma aggiungerò la mia solo perché penso che la tua squadra sia appena passata a Scrum e ora voi ragazzi siete in una posizione molto simile a quella che avevamo quando abbiamo iniziato.

Prima di tutto, la nostra introduzione ad Agile e più specificamente Scrum non è stata molto semplice. Fondamentalmente la direzione è scesa e ha detto, da questo giorno in poi dovrai fare Scrum e questo è un processo che seguirai tutti. Questo per quanto riguarda People over Process .

Il processo che inizialmente abbiamo seguito (alla cieca, potrei aggiungere) è finito molto simile a come hai descritto. Le persone ricevono compiti assegnati, tutti vengono prenotati e tutti torniamo ai nostri banchi e ci colleghiamo. Quindi abbiamo una noiosa riunione stand-up ogni giorno.

La chiave per rendersi conto è che Agile, e Scrum inclusi, riguarda in realtà le persone. Quando il team inizia la pianificazione dell'iterazione, non lasciare che il tuo Scrum master (che è probabilmente il tuo manager) ti assegni ore, storie e attività. Dipende completamente dalla squadra. Penso che per molte persone questo sia un concetto molto difficile da superare perché per anni prima sarebbero venuti al lavoro e avrebbero avuto un capo (manager, responsabile tecnico ...) che semplicemente avrebbe assegnato il lavoro. Si immergono in Scrum ma tutti (incluso lo stesso Scrum Master) continuano a funzionare nella stessa modalità.

Un giorno ti stancherai di questo, quindi inizierai a leggere libri, blog e continuerai a fare domande come questa sullo scambio di stack. La realizzazione che otterrai è che tu come sviluppatore e i tuoi compagni di squadra dovresti essere la forza trainante dietro l'impegno nelle storie e nell'assegnare compiti. Se pensate che trarrete beneficio dalla programmazione di coppia, create in ogni caso un 2 compiti per ciascuno degli ingegneri e assegnate entrambe le ore. L'unica cosa che Scrum Master dovrebbe fare è misurare la velocità rispetto alle storie completate che hai fornito come TEAM nella precedente iterazione.

Anche un'altra cosa che mi infastidisce è il modo in cui viene detto alle persone che la loro capacità è SEMPRE il 75% delle ore totali, quindi è quello che si impegnano e quindi per l'intera durata dell'iterazione si lamentano che a) non possono aiutarti o b) non possono fare la cosa giusta perché sono state assegnate troppe ore. Alla gente non dovrebbe essere detto quante ore impegnarsi e certamente dovrebbero respingere se lo Scrum Master sta tentando di tirare qualcosa del genere! Tutti dovrebbero impegnarsi esattamente in ciò che si sentono a proprio agio. Ad esempio, sono a capo di un team e spesso finirei in una discussione casuale non pianificata sul progetto o aiutando qualcuno con il codice o con la risoluzione di problemi strani, quindi la mia capacità non è mai superiore al 50%.

Il nostro team ha impiegato 4 cicli di rilascio per imparare a non fare le cose che ho appena menzionato e anche se siamo decisamente migliorati, se chiedi agli esperti non siamo nemmeno mezzo agili. Quindi ancora molto da imparare.

Aggiornamento 1: Risposta al commento di Cliff Beh, hai offerto le tue orecchie, quindi eccolo ...

Hai ragione, il cambiamento culturale è la chiave, ma questo spostamento non deve avvenire a livello esecutivo. Il tuo manager di gruppo può cambiare la cultura all'interno del tuo team e isolarti da BS aziendali che deve affrontare. Quello che stai descrivendo è stato ESATTAMENTE di noi dal 2007 al 2010. Il nostro team (e anche altri team) ha fallito il rilascio dopo il rilascio. In una delle versioni che utilizzano il "processo per essere agili" del management, riusciamo a far produrre a 9 persone il lavoro che normalmente verrebbe svolto da una sola persona e ci è voluto il doppio del tempo. Ho avuto così tanto tempo libero che ho persino aggiornato il mio curriculum.

Poi, ho avuto una conversazione con il mio capo e gli ho spiegato tutte queste cose quanto agile riguarda le persone e che se vuoi che ci prendiamo cura del prodotto, prendiamo decisioni che influenzano il modo in cui lavoriamo e consegniamo il prodotto. Penso che abbia deciso di farne un esperimento, ha fatto ogni singolo cambiamento che ... beh, soprattutto me stesso, ma parlo molto con il resto della squadra, quindi con una capacità del 50% :) ... proposto. È possibile che abbia pensato che se apporta tutti i cambiamenti che stiamo chiedendo e continuiamo a fallire, tornerà con un vittorioso "Te l'avevo detto".

Quindi negli ultimi 12 mesi, abbiamo eliminato così tanto "stupido" che non è nemmeno divertente. Le nostre riunioni stand-up in realtà hanno senso ora perché lavoriamo insieme, non in modo isolato. Abbiamo ancora la proprietà (almeno per ora) di parti specifiche del prodotto, ma incrociamo anche molto frequentemente nel codice degli altri. Facciamo costantemente revisioni del codice in modo che non solo i membri del team imparino altro codice, ma imparino anche tecniche di codifica e progettazione migliori. Abbiamo diviso il gruppo monolitico e gigantesco "agile" in 3 diversi team, quindi la pianificazione e le altre riunioni sono molto più brevi e le persone si preoccupano davvero di loro perché non si siedono intorno e ascoltano cose che non gli interessano. IO' abbiamo visto serate in cui 4 su 5 dei nostri ragazzi (uno dei team) sarebbero stati online alle 23:00 di notte e nessuno ci ha effettivamente detto che dobbiamo lavorare sodo o ci ha mai costretti a lavorare per oltre 40 ore. Le persone a cui non è importato meno di un anno e mezzo fa, all'improvviso sono impegnate ed entusiaste del lavoro che stanno facendo. E tutto ciò che è stato necessario per il nostro manager è stato dire: "voi ragazzi decidete cosa è giusto e fate quello che dovete fare e terrò il BS aziendale fuori dalla squadra il più possibile."

È iniziato come un esperimento (il mio sospetto, non me lo ha mai detto), ma ora il nostro gruppo sta prendendo a calci in culo rispetto ad altri gruppi di sviluppo nel dipartimento e abbiamo anche altri sviluppatori che stanno ora cercando di venire e unirsi a noi.

Il più grande ostacolo per noi da quando è avvenuto questo cambiamento (e ancora oggi è un problema) è stato il fatto che gli ingegneri in un normale ambiente aziendale sono come topi sperimentali in una gabbia. Anche quando il tuo manager decide di diventare veramente "agile" e rimuove la gabbia, tutti sono stati in quella gabbia per così tanto tempo, non si rendono nemmeno conto di essere liberi. Quindi, anche con tutta la libertà, continuano a comportarsi come se fossero ancora vincolati. Penso che ciò che aiuterebbe sarebbe avere almeno poche persone nella squadra (come te), che vanno oltre i confini del gruppo e cercano modi migliori di fare le cose. Quindi torna in quel gruppo e mescola un po '.

Nel tuo caso, forse la programmazione abbinata non è una soluzione se stai cercando un'altra forza esterna per entrare nel team e dire loro come lavorare. Invece, buttare via le regole, sedersi con loro, senza gestione, e chiedere loro cosa vogliono fare? Cosa li renderà felici? Produttivo? Individua i maggiori problemi e chiedi a THE TEAM quale soluzione dovrebbe essere.


Sono totalmente d'accordo. Parte del problema è che la filosofia Agile non è ben radicata nella cultura dello sviluppo e stiamo provando a risolverlo con un processo, dove idealmente dovrebbe essere risolto attraverso un cambiamento culturale. Senza l'iscrizione dei compiti, i membri del team hanno adottato un atteggiamento "non il mio lavoro" nei confronti dei compiti (per prima cosa, il team non è realmente interfunzionale, che è uno dei motivi per cui stiamo cercando di implementare l'accoppiamento), oppure sono diventati facilmente distratto. Il risultato è stato uno squilibrio nel carico di lavoro tra il team. Sono pronto a dare suggerimenti su come possiamo risolvere questi problemi con meno processi.
Cliff,

Grazie per l'aggiornamento Il management è stato in realtà molto disponibile e ha lasciato il segno nel consentire al regno libero di definire il "come". Ma penso che parte del problema principale sia che al team manca una mentalità interfunzionale. Ad esempio, il team ha creato muri immaginari di non responsabilità / basati su set di abilità individuali. Da un lato, i membri del team si sentono molto potenziati e si assumono la proprietà di porzioni di funzionalità che si trovano nelle loro aree funzionali auto-definite, ma dall'altra parte non si sentono responsabili per parti di funzioni che non si trovano nella loro area funzionale (" non il mio lavoro ").
Cliff,

Sembra che abbia già fatto diversi passi in direzione positiva. Quindi, ora che hai identificato le principali aree di miglioramento, le hai presentate al team e hai chiesto loro di proporre soluzioni? Se sì, sono tornati con una programmazione abbinata? Se sì, allora assegna a tutti coloro che vogliono lavorare insieme alla stessa storia, creare più attività e mettere ore di programmazione accanto a ciascuna persona. In caso negativo, hai chiesto loro perché sono così restii a superare un confine funzionale? Alla fine se pensano di essere più efficaci senza attraversare, forse la vera soluzione è altrove.
DXM,

"Non il mio lavoro" significa "Non mi interessa" ed è il tuo problema più grande. Agile è per gli sviluppatori che si prendono cura e che sono in grado di assumersi la responsabilità. Il team ha la responsabilità del prodotto. Non esiste "Ho una responsabilità per una parte" = il membro del team deve occuparsi dell'intero prodotto. Perché hai aree funzionali? È perché il tuo prodotto è così grande?
Ladislav Mrnka,

@LadislavMrnka: Anche se nella squadra potrebbero esserci alcune persone a cui semplicemente non importa, e penso che vada bene. Quelle persone diventeranno muli di lavoro per bug e merda perché le decisioni importanti, la direzione del prodotto, l'architettura e il design li supereranno. Ma hai ancora bisogno di qualcuno che si occupi dell'assistenza tecnica :). Penso che la maggior parte di noi si preoccupi di ciò che facciamo. E se l'intero team ha un atteggiamento "non per il mio lavoro", penso che la causa principale sia un altro fattore esterno che deve essere individuato ed eliminato. Senza farlo, sarà impossibile affidare alla squadra "devi preoccupartene".
DXM,

2

Scrum non impone che i compiti vengano assegnati agli individui - tutt'altro. La responsabilità dei compiti da svolgere ricade sul Team nel suo insieme. Se la squadra vuole fare la programmazione di coppia, dove ogni coppia prende un compito, sicuramente dovrebbe farlo.

Dalla guida Scrum :

Il team di sviluppo di solito inizia progettando il sistema e il lavoro necessario per convertire il Product Backlog in un incremento del prodotto funzionante. Il lavoro può essere di dimensioni variabili o sforzo stimato. Tuttavia, durante la riunione di Sprint Planning è stato pianificato un lavoro sufficiente per il team di sviluppo per prevedere cosa ritiene di poter fare nel prossimo Sprint. Il lavoro pianificato per i primi giorni dello Sprint dal team di sviluppo viene scomposto in unità di un giorno o meno entro la fine di questo incontro. Il team di sviluppo si auto-organizza per intraprendere il lavoro nello Sprint Backlog , sia durante lo Sprint Planning Meeting che secondo necessità durante lo Sprint.


1
Interessante. Ho la Scrum Guide di marzo 2009 e in realtà hanno cambiato quella citazione. Un tempo era: " Il Team si auto-organizza per assegnare e intraprendere il lavoro nel Backlog Sprint, sia durante la riunione Sprint Planning o just-in-time durante lo Sprint."
Cliff,

La nostra interpretazione è stata quella di creare sempre una serie iniziale di attività stimate per ciascun articolo arretrato e assegnarle ai singoli membri del team durante la pianificazione dello sprint. Un paio di vantaggi sono che ci aiuta a bilanciare efficacemente il carico di lavoro tra i membri del team durante la pianificazione e, con un proprietario assegnato per ogni attività, rende più facile assicurarsi che non ci manchi nulla. Aiuta anche con l'acquisizione di metriche.
Cliff,

@Cliff - Se è così che vuoi farlo, va bene. Tutto quello che sto dicendo è che Scrum non dice che devi farlo in questo modo. Se preferisci assegnare gli articoli in coppia (cosa che generalmente facciamo come assicurazione hit-by-a-bus), va bene lo stesso, e potresti facilmente elaborare metriche basate su coppie.
Matthew Flynn,

0

Assegnare compiti alla pianificazione della riunione è esattamente ciò che va contro solo le decisioni temporali e il potenziamento del team. Va anche contro l'agilità dello sprint perché dal primo giorno di uno sprint ogni sviluppatore ha allineato esattamente ciò che dovrebbe fare. Significa anche che ogni compito deve essere stimato in modo molto corretto, il che non è quasi mai il caso.

Imho stimare le attività è ridondante. Ti sei impegnato a creare una serie di storie e la pianificazione della riunione 2 è il tempo sufficiente per dividere quelle storie in attività e creare schede per tali attività (o riempirle in un sistema). Non c'è abbastanza tempo per stimare ogni attività e queste stime non dovrebbero richiedere tempo per un vero sviluppo.

Perché? La stima è una spazzatura. Come può essere una spazzatura? Perché fare più stime non porterà più valore commerciale = è spazzatura e dovrebbe essere ridotta al minimo necessario. Il minimo è stimare / dimensionare le storie che ti aiutano a impegnarti. Una volta preso un impegno non hai bisogno di altre stime. Sai solo che hai una data fissa per consegnare qualcosa che hai commesso. Sarai in grado di fornire storie impegnate o meno. Stimare le attività non ti aiuterà in quella consegna.

La stima delle attività saltate non influirà in alcun modo sulla visibilità dei progressi dello sprint poiché l'unica vera misurazione dei progressi è il numero di storie completate (punti trama) e che possono ancora essere mostrate nel grafico di riduzione dello sprint.

Giusto per chiarire. Impegno significa = Lo faremo . Non proveremo a farlo o altro. Sì, puoi non riuscire a mantenere ciò che hai commesso, ma il tuo impegno dovrebbe essere basato sulla tua convinzione che con le tue attuali conoscenze fornirai storie selezionate. Se hai questa convinzione non hai bisogno di un'altra stima.

Ho sempre usato Scrum nel modo in cui lo sviluppatore sceglie una nuova attività una volta completata l'ultima. Gli sviluppatori di solito dicono quale sceglieranno durante una riunione stand-up. Generalmente non ci sono regole quale compito dovrebbe scegliere. Spetta all'auto-organizzazione del team e alla discussione tra i membri del team (al di fuori della riunione stand-up). Ciò significa rinviare la decisione all'ultimo punto possibile in cui è possibile reagire ad alcuni cambiamenti e problemi senza influire sul piano immaginario. Il compito stesso può anche cambiare il proprietario se qualcuno ha qualche problema per completarlo - in alternativa tale compito può essere sviluppato in coppia.

Come può essere coinvolta la programmazione di coppia in questo? Facilmente. Il team si impegna e il team deve fare in modo di fare spazio a tutte le tecniche di sviluppo necessarie per fornire l'incremento di lavoro del prodotto. Stimare un'attività o lo sviluppo di un'attività e il test delle attività? Quest'ultimo approccio è completamente sbagliato. Il test fa parte dello sviluppo e allo stesso modo la revisione del codice o l'associazione fa parte dello sviluppo, se necessario.

Eseguire la programmazione di coppia dovrebbe portare a completare l'attività più rapidamente con una quantità minore di bug e una migliore qualità del codice. Non sarà due volte più veloce, quindi ci sarà ancora un certo sovraccarico, ma il reale impatto sull'impegno causato dall'associazione occasionale dovrebbe essere molto piccolo. Questo non è un caso di tutoraggio o insegnamento. Se hai un tale sviluppatore che deve essere istruito o istruito, non dovresti pianificare la sua capacità per gli sprint in cui apprende la base di codice del prodotto o qualche tecnologia.

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.