Come stima agile il tempo richiesto per una "fase di ricerca"?

6

Secondo lo sviluppo canonico di , qual è la quantità appropriata di apprendimento che un ingegnere dovrebbe impegnarsi prima di implementare una soluzione a un problema?

Se un ingegnere sa di essere troppo ignorante di un determinato argomento (ad esempio, compressione) per iniziare a implementare, va e apprende ciò che ritiene ha bisogno di sapere e quindi implementa una soluzione.

Chiaramente una comprensione più profonda di tale argomento potrebbe portare a un'implementazione migliore, ma a costo di agilità. Il rovescio della medaglia se un ingegnere impara troppo poco su un argomento, c'è il pericolo che realizzerà un'implementazione significativamente insufficiente / rotta che influisce negativamente sui clienti nell'immediato o nel prossimo futuro. In alcuni casi, non è richiesta molta ricerca, e in alcuni casi gli sviluppatori si trovano di fronte a un argomento, anche se lo sviluppatore senior non conosce quasi nulla, quindi la risposta a questa domanda include un elemento di scalabilità per soddisfare entrambe le situazioni.

Verso quale fine di questa scala, se esiste, i principi guida dell'agile conducono un ingegnere? Oppure agile lasciare questo come una scala mobile, in cui la risposta potrebbe essere diversa in ogni situazione?

In altre parole, sto cercando di capire non quando / come avviene la ricerca di sviluppo agile, ma inoltre come stimare una "buona" quantità di tempo da dedicare all'apprendimento di un argomento nella ricerca fase prima di passare alla realizzazione di una soluzione.

    
posta Paul Hazen 26.04.2012 - 02:14
fonte

6 risposte

6

Una squadra agile può prendere in considerazione un picco di ricerca quando è richiesto l'apprendimento.

Ma quella squadra dovrebbe rispettare il giudizio di uno sviluppatore principale considerando il periodo di tempo che la ricerca dovrebbe prendere. In effetti, la durata del picco di ricerca dipende interamente dalla complessità della storia utente mirata e dal livello di abilità del team.

    
risposta data 26.04.2012 - 02:45
fonte
1

Un tema di base che attraversa Agile è il concetto secondo il quale la squadra dovrebbe fare abbastanza "x" per sentirsi a proprio agio e responsabile, ma non di più. Questo vale per molti aspetti del ciclo di vita dello sviluppo del software, come progettazione, documentazione, test e ricerca.

Mettere un intervallo di tempo arbitrario e rigido attorno a uno di questi ("passare fino a quattro ore codificando questa funzionalità, ma non di più") non è molto agile. Cosa succede se, dopo quattro ore, non ti senti a tuo agio che la funzionalità è completa? Sarebbe irresponsabile passare alla funzione successiva.

Allo stesso modo, considera il tempo di ricerca ("dedica fino a quattro ore alla ricerca di questa funzionalità, ma non di più"). Cosa succede se, dopo quattro ore, non ti senti a tuo agio nel prendere una decisione di progettazione? Sarebbe irresponsabile impegnarsi in un progetto con cui la squadra non si sente a proprio agio.

Chiaramente, tuttavia, non è necessario padroneggiare tutte le funzionalità di una determinata tecnologia per essere abbastanza comode con esso. Il ricercatore dovrebbe spendere il tempo necessario per sentirsi come se fosse possibile prendere una decisione responsabile e responsabile; né più né meno.

    
risposta data 26.04.2012 - 06:43
fonte
1

Quando lavoravo in Agile, usavamo qualcosa chiamato "Technical Spikes" per gestire questo tipo di lavoro.

Il concetto è semplice: Hai messo un periodo di tempo nella tua sprint per cercare il problema tecnico a portata di mano (come quello che ci vorrà per lavorare con una certa tecnologia che è nuova per il tuo team). Quindi assegnarlo a qualcuno con un preventivo. Questa stima diventa parte del tuo piano di sprint.

Funziona davvero bene. O almeno lo ha fatto nel contesto di come lo stavamo usando, che era principalmente alla ricerca usando una determinata API per fare un compito. Certamente ci sono dei limiti - non funzionerebbe bene se il compito di apprendimento fosse troppo grande (come imparare c ++ da zero o qualcosa di pazzo del genere).

    
risposta data 26.04.2012 - 16:29
fonte
1

"Agile" non dice nulla su questo in particolare, ma in particolare dice che cose del genere sono meglio decise dal team. Se ha dettato cose come questa, non si chiamerebbe "Agile" .

L'Agile che può essere specificato non è Agile.

    
risposta data 30.04.2012 - 20:20
fonte
1

La velocità degli sviluppatori Jr. vs Sr. Developers è presa in considerazione per la velocità complessiva della squadra. Quindi se un singolo membro manca di conoscenza, questo non è diverso e dovrebbe riflettere se stesso molto rapidamente man mano che la velocità si adegua. Con gli sviluppatori senior del team e sapendo chi è più propenso a lavorare su un particolare compito, allora la stima dovrebbe tener conto del tempo di accelerazione e non avere alcun effetto evidente sulla velocità.

Se tutto il team ha bisogno di imparare l'argomento, gli sviluppatori di livello senior dovrebbero prevedere in modo coerente l'ammontare del tempo di rampa basato sulla complessità dell'argomento. Ciò è dovuto all'esperienza precedente di dover imparare le cose sul posto di lavoro. In altre parole, è un'abilità appresa.

Alla fine, lo scenario peggiore è che la tua velocità cadrà inaspettatamente e il tuo team avrà bisogno di riaggiustare e abbassare le aspettative dallo sprint allo sprint (se ce l'hai) in modo che la velocità prevista sia condivisa da tutte le parti. Una volta che questa curva di apprendimento è stata superata, la velocità aumenterà e le regolazioni degli impegni potranno spostarsi nuovamente verso l'alto.

    
risposta data 30.04.2012 - 22:15
fonte
-2

Solo perché sei agile non cambia il processo di implementazione, ma lo riduci solo in blocchi di 2 settimane. Includere ricerca / prototipazione nelle stime e prendere nota del rischio aggiunto dovuto alla non familiarità.

Potresti tendere verso una ricerca minore poiché il refactoring ideale è più comune / più facile, ma dipende dal tuo ambiente.

modifica: dopo aver effettuato alcune ricerche basate sul primo commento, sembra che varia. Alcuni team non rendono disponibili le storie fino a quando non vengono progettate, il che probabilmente implica la ricerca / prototipazione. Domanda leggermente correlata.

Personalmente, ho sempre visto / usato il punto di vista secondo cui i compiti sono "i passi necessari per completare la storia" e quindi la ricerca dovrebbe essere esplicitata (o almeno inclusa nelle stime se si prevede che sia breve).

    
risposta data 26.04.2012 - 02:27
fonte

Leggi altre domande sui tag