Cosa significa essere agili?


17

Abbiamo un progetto che tutti dicono che faremo in modo agile, ma dubito che abbiamo chiaramente capito cosa sia agile.

In progetti precedenti avevamo programmato riunioni, quindi definito il registro di prodotto e assegnato il lavoro agli sviluppatori in sprint da 2 a 3 settimane. Ogni mattina abbiamo avuto riunioni di mischia (che sembravano andare avanti per mezz'ora ogni volta) e ogni sviluppatore ha continuato con quello. Quasi nessuno ha scritto alcun test fino alla fine dello sprint e il lavoro non completato è stato aggiunto allo sprint successivo.

Gli sviluppatori si sono appena parlati e nello sviluppo non sono stati coinvolti TDD. In effetti, la maggior parte degli sviluppatori aveva una specifica all'inizio e ha continuato a seguirla per le 2 o 3 settimane per le quali è stato organizzato lo sprint. Non c'era quasi alcuna comunicazione con il cliente / detentore del palo.

Il controllo qualità è stato coinvolto di solito pochi mesi dopo e da allora abbiamo trovato i requisiti mancanti che hanno ulteriormente aumentato la quantità di lavoro che dovevamo fare. Chiaramente non c'era un ciclo di feedback.

Quindi la mia domanda è: dove abbiamo sbagliato e come posso impedire alla squadra di fare gli stessi errori.


4
Sembra un duplicato di programmers.stackexchange.com/questions/15928/… Sembra che voi ragazzi non sapeste davvero cosa fare e mancasse una vera gestione per far rispettare il processo
sylvanaar,

1
Sì, sono d'accordo con te al 100%. Il mio manager ha letto un libro sull'agile e ci è appena andato (anche se molto male). Ho usato TDD sul lato server del progetto, ma gli altri non volevano impararlo o vederne i vantaggi. Avevamo un framework (lato client) che impiegava un'eternità e lo sviluppatore continuava a sostenere che aveva solo bisogno di andare avanti (senza interferenze).
JD01,

3
Anche se il titolo sembra essere un duplicato, penso che questa domanda sia utile da sola perché molti team leggono spiegazioni "generiche" di ciò che è agile (e persino prendono lezioni di formazione e assumono consulenti) e poi incontrano esattamente gli stessi problemi di JD01 squadra comunque. Quindi, per mettere la domanda nel contesto di questo specifico team, potrebbe far luce su problemi specifici e soluzioni che altre domande più generali non affronterebbero.
DXM,

Risposte:


27

Quello che stai descrivendo non è Agile per definizione (Manifesto Agile) è Cascata con incontri di stato giornalieri. Agile significa adattarsi facilmente al cambiamento, se non esiste un circuito di feedback interattivo con il proprietario del prodotto e quindi i clienti, quale cambiamento si sta verificando?

Agile riguarda guasti rapidi, attraverso una comunicazione costante con il proprietario / i clienti del prodotto. È meglio fallire prima che dopo, meno lavoro viene fatto e meno viene "perso". E non rimani bloccato con l'argomento, secondo cui "non abbiamo tempo per farlo correttamente, dal momento che abbiamo trascorso così tanto tempo a farlo in modo sbagliato, dobbiamo solo continuare su questa stessa strada, anche se porta al fallimento ".

Sembra che la tua gestione stia facendo "SCRUM, ma ..." dove il "ma" è dove buttano via tutte le cose di SCRUM che non capiscono o sono d'accordo e fanno le cose allo stesso modo casuale come sempre, ma con nuovi nomi di parole d'ordine luccicanti.

In SCRUM lo stand up quotidiano NON riguarda la consegna dello status al management, ma è quello di forzare l'interazione degli sviluppatori, quindi sai cosa stanno facendo i tuoi colleghi e puoi aiutarvi a vicenda e non duplicare il lavoro. Se ci vogliono più di 45 secondi a persona, lo stai facendo male. Si tratta di trasparenza per il team, se una persona sta assegnando lo stesso stato più giorni per qualcosa che dovrebbe essere un singolo giorno di lavoro, il team può risolvere il problema delle persone prima o poi.

Se non stai testando il codice a vicenda mentre è scritto, non lo stai facendo neanche correttamente. I test dovrebbero essere integrati nel processo e non dopo una riflessione. Il QA dovrebbe essere incluso nelle sessioni di pianificazione e fornire stime su quanto tempo ci vorrà per testare.

Se non stai rispettando gli impegni di Sprint e non riesci a farlo, non lo stai facendo correttamente. Gli sprint riguardano impegni se ti impegni a lavorare troppo, smetti di farlo, non puoi in alcun modo introdurre prevedibilità o ripetibilità se non riesci a impegnarti con precisione nei risultati.


1
Grazie Jarrod per la tua risposta. TDD dovrebbe essere separato dall'agile? È stato difficile convincere gli sviluppatori a pensare in questo modo. Alla fine, come ho già detto, hanno fatto alcuni test alla fine (se ricordavano) e hanno detto che era TDD. Sono d'accordo con tutto quello che hai detto. Il ciclo di feedback era praticamente inesistente perché il mio manager riteneva che interferisse con il "framework" che impiegava mesi e mesi a destra. A quel punto eravamo bloccati nell'implementazione di funzionalità che non soddisfacevano i requisiti del cliente.
JD01,

3
TDD è un'aringa rossa, non sono d'accordo personalmente come religione, a che cosa servono i test per il codice che non soddisfa le esigenze dei clienti. E poiché i test dovrebbero essere incorporati e nulla di consegnato e dimostrato che non sia testato, TDD come mantra è piuttosto inutile. Se non funziona non lo demo. Se non lo dimostrate, il proprietario / cliente del prodotto non può accettarlo.

2
Ho iniziato facendo un sacco di TDD ma ora sono passato a BDD che è più in linea con le esigenze dei clienti come test di accettazione. Sebbene ritenga che TDD abbia contribuito alla creazione di progetti, non avrei visto altrimenti oltre a fornire test.
JD01,

1
Il motivo principale per TDD è consentire il refactoring continuo, riducendo il tasso di accumulo del debito tecnico. Se è presente un codice che si teme di modificare poiché il nuovo test sarebbe troppo costoso, il progetto avrà una fine prematura.
Kevin Cline il

Ho sentito molte persone predicare TDD, non l'ho mai visto in pratica. Personalmente il mio cervello non funziona in questo modo. Tendo ad avere una buona idea generale di ciò che sto scrivendo, ma mentre scrivo sto riequilibrando e muovendo le cose. Scrivere prima i test non è possibile per me. Scrivo unit test, di solito come parte della scrittura del codice, ma sono scritti mentre scrivo il codice, non in anticipo.
DaveG,

9

Jarrod ha fornito una buona risposta (+1 a quello) e vorrei estenderlo un po '.

Agile non è solo una questione di rapidi guasti e feedback tra il proprietario del prodotto (cliente) e il team; si tratta di un rapido feedback tra tutte le parti interessate. Essere veramente agili (e questo direttamente dal manifesto ) significa riconoscere che il processo esiste solo per aiutare gli sviluppatori a fornire prodotti migliori. Le persone sopra il processo significano che non appena il team riconosce che il processo esistente non funziona, lo cambi e lo fai funzionare.

"Scrum ma ..." è anche un problema, ma ci sono entrambe le facce di questa moneta. Se guardi il manifesto, vedrai che si tratta del team e di far funzionare strumenti / processi per te. Non ci sono due squadre uguali e quindi ognuna funzionerà in modo leggermente diverso e va bene. Potresti certamente prendere l'intera metodologia Scrum e provare a seguirla alla lettera e vedere se funziona per la tua squadra.

Un'altra alternativa è invece di spingere un altro processo nel team e far sì che tutti seguano ciò che Scrum ti dice di fare, provare un approccio agile : comunicare con il team e vedere se insieme è possibile identificare aree problematiche e soluzioni per ognuno. Quindi introdurre gradualmente cambiamenti nel modo in cui si lavora in modo che i problemi vengano affrontati.

Potrebbe volerci un po 'di tempo, ma ...

  1. Per prima cosa risolverai i problemi più grandi che avranno il maggiore impatto sulla capacità dei tuoi team di consegnare il prodotto
  2. Identificando i problemi immediati e partecipando alla ricerca di soluzioni, i membri del team comprenderanno perché alcune pratiche sono importanti e non le faranno semplicemente perché viene loro chiesto di farlo.

Se tracciamo un'analogia tra Scrum e un modello di progettazione, lavorare nel modo che ho proposto sarebbe simile alla codifica in un modello, in cui mantieni il codice il più semplice possibile e convergere su un modello di progettazione solo quando necessario. Al contrario di scegliere semplicemente un modello di progettazione e rotolare con esso (cioè selezionare ciecamente Scrum e tutti i suoi processi come un unico insieme), che a volte rende il codice più complesso e più difficile da mantenere di quanto non avrebbe potuto essere altrimenti.

La chiave per capire è che l'agile non ha a che fare con un nuovo processo per fare le cose; riguarda il cambiamento continuo e l'adeguamento costante ai processi / pratiche esistenti.


1
al downvoter: cura di elaborare? Ho increspato alcune piume perché ho detto di non adottare ciecamente Scrum o era qualcos'altro?
DXM,

2
sì sciocco. Farò +1 per le tue informazioni dettagliate.
Michael Durrant,

1
+1 per " La chiave per capire è che l'agile non ha a che fare con un nuovo processo per fare le cose; si tratta di un cambiamento continuo e di un costante adeguamento ai processi / pratiche esistenti. "
David "the bald ginger",

-2

se la squadra (e il suo management) vogliono veramente "essere agili", dovrebbero iniziare leggendo e discutendo come una squadra il Manifesto Agile e i suoi direttori. Quindi scegli una delle metodologie agili che sono state create ( Scrum , ad esempio), prendi un po 'di addestramento su di esso e inizia a seguirlo. Consiglierei di seguirlo da vicino per un po 'prima di modificarlo, ma sono solo io.

Dovrebbero inoltre approfondire le pratiche di ingegneria utilizzate per supportare la particolare metodologia di progetto agile scelta.


2
Ho annullato il voto perché non credo che questo risponda alla domanda originale.
Bryan Oakley,

1
abbastanza giusto, suppongo. Stavo affrontando la premessa iniziale del PO: "Abbiamo un progetto che tutti dicono che faremo in modo agile, ma dubito che abbiamo chiaramente capito cosa sia agile". Molte persone dicono che sono, o che vogliono, "fare agili" o "essere agili" senza capire cosa siano realmente la filosofia agile o le metodologie che la supportano.
StevenV,

3
Non sono d'accordo nel seguire ciecamente una particolare metodologia. Essere "veramente" agili, significa che non ti blocchi in una particolare tendenza o metodologia a meno che non si adatti alla tua azienda e squadra. È meglio usare una metodologia come punto di partenza, quindi una volta che hai avuto un po 'di allenamento e ancora meglio un po' di esperienza, sintonizzati per soddisfare le tue esigenze particolari. Ancora più importante, se il prossimo progetto e il cliente richiedono qualcosa di un po 'diverso, sintonizzare la metodologia sulla suite. non che sia veramente agile.
S.Robins,

1
rivedendo la mia risposta, sono d'accordo con S.Robins sopra e ho modificato la mia risposta per rispecchiarla.
StevenV
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.