2009-10-30 10 views
6

Ho utilizzato approcci agili (XP e Scrum) per i miei progetti per diversi anni con ottimi risultati. Ma in tutti i casi, tutti i membri del team di sviluppo sono stati impegnati al 100% nel progetto.Come gestire lo sviluppo agile quando il team non è stabile?

Ora mi trovo a fare questo quando la squadra non è stabile. Ad esempio, in un'unica iterazione ci possono essere quattro persone che lavorano, l'altra forse solo due o tre.

Mi rendo conto che questo rende difficile (o impossibile) stimare utilizzando l'approccio di velocità normale poiché fluttuerà troppo e non sarà stabile. Quello che segue è che non ci si può aspettare di essere in grado di rilasciare alla fine di ogni iterazione.

Forse qui è necessario un altro approccio. Basta prendere le cose dal backlog e solo cavarsela e rilasciarle quando è possibile. I davvero non piace quello però ...

Qualche idea?

+0

... wiki della comunità ... – joshcomley

+6

No, non wiki della comunità. Questa domanda avrà una risposta che funziona per wic e la sua squadra in queste condizioni. –

+4

Sto votando per chiudere questa domanda come off-topic perché non si tratta di programmare –

risposta

3

Dalla domanda presuppongo che alcuni sviluppatori (probabilmente 2) siano impegnati al 100% nel progetto e alcuni (altri 2-3) partecipino solo a volte.

Una cosa che puoi fare è impostare un processo diverso per gli sviluppatori principali che sono impegnati al 100% e tutti gli altri. Usa il tuo normale processo agile per le persone del nucleo e rilascia il loro lavoro al normale ciclo di iterazione. Per le persone non-core, non pianificano e assumono che le loro (e le tue) stime siano in qualche modo in un momento. Idealmente i loro cambiamenti dovrebbero essere isolati e fusi in un ramo stabile di codice da parte dei membri del nucleo, ma non tutti i ruoli di architettura e di squadra di ogni progetto lo consentono.

Il punto è separare e isolare la fonte del caos e lasciare inalterato il cuore di un progetto e della squadra.

+0

Mi piace questo approccio. Essere ancora in grado di essere agile con il nucleo. L'altro lavoro "instabile" dei membri del team è per lo più considerato un bonus, credo. Penso che dovrebbero lavorare solo per supportare il core team e forse solo per le storie periferiche. –

0

Lascia che il singolo sviluppatore che lavorerà alla storia stimino lo sforzo richiesto per completare la storia. Puoi prendere in considerazione le varianze storiche nelle stime dello sviluppatore, ma l'idea è che puoi prendere le loro stime e poi capire quante storie sarai in grado di finire in quello sprint.

1

Forse invece di approcci agili, è possibile rallentare le cose con altri iterative and incremental approaches. Invece di avere iterazioni misurate in settimane, avere iterazioni più lunghe (magari misurate in mesi) sarebbe meglio se continuassi ad aggiungere e far cadere persone dal team.

Ciò non significa che non sia ancora possibile utilizzare alcune tecniche Agile. Manterrei comunque i tuoi backlog e masterizzerò i grafici, con la consapevolezza che invece di avere una versione ogni 2 settimane, ti rilascerai ogni 6 settimane (~ 2 mesi). Se hai nuovi sviluppatori che si uniscono a sviluppatori più esperti, usa la programmazione delle coppie, assegna i nuovi sviluppatori alle correzioni dei bug o assegna i nuovi sviluppatori al mantenimento dei test unitari per aiutarli ad apprendere il codice base.

+0

Ah, ma agile è iterativo e incrementale, immagino tu voglia usare qualcosa come RUP? L'ho usato, non mi piace :-) Penso che sarebbe utile continuare a rilasciare in anticipo e in modo coerente (per sollecitare feedback, ecc.), Ma potrebbe non essere possibile pianificare esattamente _what_ sarà incluso nella prossima versione, solo che ci sarà sempre una settimana in più. –

+0

Agile è iterativo e incrementale, come RUP. Puoi prendere pezzi di tutti loro e scegliere. Pensalo come un processo fai-da-te. –

1

La velocità è solo una stima.

Ingenuamente, se si dispone di una data velocità v con un team di 4 sviluppatori, quindi pianificare il vostro iterazione con una velocità di (v/4)*number_of_developers

È possibile fudge questo valore se i membri si stanno perdendo sono particolarmente forti o più deboli di quanto la media.

Questo è fondamentalmente ciò che PivotalTracker fa con la sua metrica forza di squadra.

+0

Ci ho pensato, ma se hai un nuovo sviluppatore (per il progetto), sarà più lento di uno sviluppatore esistente semplicemente perché non conosce il codice base. Non penso che tu possa semplicemente dire che ogni membro della squadra ha la stessa velocità. –

+0

D'accordo, è per questo che penso che sia necessario fonderlo un po 'sulla base delle persone coinvolte – DanSingerman

+0

Non credo che sia la risposta giusta. È troppo impreciso –

0

Non dimenticare che la velocità media è ampiamente utilizzata per la pianificazione del rilascio lookahead; il team è responsabile della selezione di in ogni iterazione numero di elementi del backlog da intraprendere (benché la velocità storica possa aiutarli).

Se la dimensione della squadra (e quindi la velocità) varia da iterazione a iterazione, è comunque possibile eseguire una pianificazione utile del rilascio utilizzando le velocità medie negli ultimi N sprint, supponendo che le fluttuazioni del team continueranno e quindi la loro media a lungo termine la velocità sarà effettivamente stabile.

0

Il tuo problema principale qui è che il team avrà difficoltà a fornire stime e consegne prevedibili poiché il team sta passando dallo sprint allo sprint. Ciò può anche danneggiare l'impegno del team e il miglioramento continuo.

Questo caso potrebbe in realtà essere adatto per un approccio Kanban. Dai un'occhiata all'introduzione di Henrik Knibergs a Kanban per una rapida panoramica.

Buona fortuna!

+0

Grazie per la risposta, e sono d'accordo. Ma non capisco come Kanban possa aiutare il team a dare stime più prevedibili anche se sono sicuro che sia utile in altri modi. –

1

Quindi, hai un progetto con una squadra in continua evoluzione e il tuo capo vuole che gli dia una stima accurata di quanto tempo ci vorrà? Puoi farlo, purché tenga presente la differenza tra precisione e precisione. La precisione dipenderà in gran parte dal numero di oggetti e dalla granularità (scomposta) di ciascun oggetto; più oggetti hai, più la Legge dei grandi numeri funziona per te, calcolando una media di sottovalutazioni e sottostime.

La precisione è una funzione di fiducia. Si noti che le stime non sono valori a punto singolo, sono un intervallo con numeri con una percentuale di confidenza. Per esempio, una stima corretta non sarebbe "2 settimane", sarebbe "50% di confidenza di 2 settimane, 80% di confidenza di 4 settimane".

Se fossi la persona assegnata con il non invidiabile compito di fornire una stima per il completamento di un progetto gestito come arbitrariamente come nel post originale, mi piacerebbe provare a capire un intervallo in base al numero minimo di persone assegnate (ad esempio, "da 48 a 66 settimane con 2 sviluppatori [dal 50% all'80% sicuro]") e un intervallo associato al numero medio di persone assegnate (ad esempio, "da 25 a 45 settimane con 5 sviluppatori [dal 50% all'80% fiducioso] "), e usa la cifra bassa del numero medio insieme alla cifra alta del numero minimo (ad esempio," da 25 a 66 settimane date da 2 a 5 sviluppatori [dal 50% all'80% sicuro "), e anche allora avrei inserito un disclaimer ("più il 10% per il tempo perso a causa del cambio di contesto").

Meglio ancora, spiegherei esattamente perché questo accordo è stato, per essere educato, non ottimale, e perché il multi-tasking è un segnale primario sulla strada per progettare l'inferno.

Come suggerito da altri, la modifica del flusso di lavoro da basata su iterazione a basata su flusso (Kanban) potrebbe essere una buona strategia. Con Kanban gestisci la modifica delle priorità del progetto modificando la priorità degli elementi nel backlog; una volta che un oggetto è stato afferrato dal team è generalmente finito (scorre attraverso il flusso di lavoro, alle parti interessate non è consentito interrompere la squadra rovinando il lavoro in corso). Ho usato Kanban per progetti di ingegneria sostenuti e ha funzionato molto bene. Per sapere come sarebbe utile con le stime, la chiave del flusso continuo è cercare di far sì che ciascun elemento di lavoro abbia approssimativamente le stesse dimensioni (1x, 2x, 3x, non 10x, 20x, 100x). È necessario tenere traccia dei movimenti degli oggetti attraverso il flusso di lavoro, rintracciando le date delle modifiche allo stato del processo, ad esempio, Coda 1/15, Design 1/22, Dev 1/24, Test 2/4, Integrazione 2/7, ecc., E quindi generando un diagramma di flusso cumulativo regolarmente per valutare le durate del tempo nello stato nel tempo. Calcolare quanto tempo il progetto dovrebbe prendere dato che si conosce la dimensione di ogni oggetto e il tempo che passa attraverso il flusso di lavoro per gli articoli è un banale esercizio computazionale lasciato al lettore.(La domanda più interessante è come individuare i vincoli ... e poi come rimuoverli Suggerimento: cercare lunghi tempi negli stati, perché il lavoro si accumula di fronte ai vincoli.)

Problemi correlati