Scrum: con cosa sono impegnati i membri del team durante uno sprint


33

Quindi, uno scrum sprint è un periodo di tempo fisso durante il quale deve essere implementato un set specifico di funzionalità. E un team di scrum è composto da tutte le persone impegnate a fornire tali funzionalità, la maggior parte delle quali in genere sviluppatori e tester.

Avendo stabilito queste regole, ci si potrebbe chiedere come tenere tutte queste persone occupate durante l'intero sprint. All'inizio dello sprint non c'è ancora nulla da testare, e alla fine dello sprint in genere non c'è nulla o molto poco da sviluppare / risolvere.

Ho visto 2 approcci per gestirlo, ma nessuno dei due sembra risolvere correttamente il problema.

1) Lascia che i membri del team decidano cosa fare ogni volta che sono fuori dai compiti.

Contro:

  • Se ciò che fanno non è pianificato in modo completo (ad es. Refactoring importante, passaggio a un nuovo framework di test), il loro lavoro potrebbe rivelarsi inutile o essere bloccato a metà strada
  • D'altra parte, la pianificazione di tale lavoro può richiedere molto tempo e il cliente può essere deluso nel vedere il team perdere tempo su qualcosa che non porta valore immediato
  • Tali compiti di solito non possono essere stimati in modo approfondito, quindi è abbastanza facile per i lavoratori senza principi passare il tempo a guardare i gatti di YouTube senza che si rifletta sulla mischia o altrove

2) Fai spazio nello sprint solo per lo sviluppo e inizia i test dopo lo sprint (quando gli sviluppatori iniziano a lavorare sulle funzionalità dal prossimo sprint)

Contro:

  • Durante lo sviluppo di funzionalità per lo sprint corrente, gli sviluppatori si distraggono correggendo i bug del precedente e non possono eseguire la quantità di lavoro che è stata stimata da eseguire durante lo sprint corrente
  • Sono necessarie due schede Scrum: una per le funzionalità di Sprint correnti e una per i bug di Sprint precedenti

Quindi la mia domanda è: come distribuire correttamente il lavoro durante lo sprint tra sviluppatori e tester in modo che nessuno venga sovraccaricato di lavoro o finisca senza attività in qualsiasi momento? Esistono modi per migliorare gli approcci sopra descritti? O ci sono approcci migliori?


9
Sembra che ti stia innamorando del mito dell'utilizzo
Nathan Cooper,

1
@holdenmcgrohen Come vengono fatte le stime: pianificare il poker o qualcos'altro?
Robbie Dee

3
I tester dovrebbero scrivere casi di test il primo giorno. Tutto quello che devono fare sono le storie. Se gli sviluppatori hanno tempi di inattività significativi durante lo sprint, significa che non stai prendendo abbastanza storie. Inoltre, presumibilmente se i tuoi tester sono bravi, stanno tenendo occupati i tuoi sviluppatori con segnalazioni di bug verso la fine dello sprint. Inoltre, idealmente, hai messo a punto le prime storie nel backlog, quindi nel caso peggiore, gli sviluppatori possono lavorare su una delle migliori coppie nel backlog.
Gort il robot

1
@holdenmcgrohen, ci troviamo anche ad affrontare problemi simili nel nostro progetto. Abbiamo iniziato ad aggiungere storie tratto (non dovrebbe essere ' necessario ') come parte dello sprint e viene scelto solo quando gli sviluppatori non hanno attività. Ora questo approccio ci aiuta a tenere occupato il tester nei giorni di inizio del prossimo sprint.
user6005214

1
Ricorda che nella maggior parte degli sprint stai selezionando un sottoinsieme di attività da un backlog . Se completi tutto ciò che ti sei impegnato, puoi ottenere un vantaggio sul prossimo sprint iniziando a lavorare su più elementi dal backlog - proprio come se passi sopra, tiri meno elementi dal backlog nel prossimo sprint? può finire quelli che non erano finiti. Dogma di scarico; rendersi conto che lo scopo dello strumento è di servirti, non per te di servire lo strumento.
Keshlam,

Risposte:


49

All'inizio dello sprint non c'è ancora nulla da testare

Veramente? Non hai requisiti per convalidare? Nessuna discussione da avere con il cliente? Nessun wireframe da valutare? Nessun piano di test a cui pensare?

alla fine dello sprint non c'è in genere nulla o molto poco da sviluppare / correggere

Non sono mai stato in quel posto in un progetto. Non hai più lavoro da fare? C'è sempre qualcosa. Tutti i tuoi test sono completamente automatizzati? Come sta il tuo CI? Il livello di accesso al database potrebbe essere refactored per essere più semplice? E non ho mai lavorato su nulla con un elenco di bug e un backlog vuoti. Cosa facevano i tuoi sviluppatori in una fase di test a cascata?

So che alcune persone diventano molto religiose su ciò che è e ciò che non è "SCRUM". Non me ne potrebbe fregare di meno. Ma penso che tu abbia due problemi qui:

  1. Un dipartimento di controllo qualità "tradizionale" che testa il codice una volta che è "finito" dagli sviluppatori anziché lavorare con clienti e sviluppatori per assicurarsi che tu stia costruendo la cosa giusta e costruendola nel modo giusto. Dai un'occhiata agli agili quadranti di prova di Lisa Crispin. I migliori tester sono coinvolti in ogni fase del ciclo di vita dello sviluppo del software e i migliori sviluppatori scrivono i propri test.

  2. Cercare di attenersi troppo da vicino a un programma SCRUM di sprint di 1 settimana / 2 settimane senza disporre di un backlog prioritario e dimensionato suddiviso in attività abbastanza facili da completare in un breve periodo di tempo in un singolo sprint. Se avessi questo, ci sarebbe sempre più lavoro da fare. Forse l'ultima funzione su cui lavori in questo sprint non entra nella versione di questo sprint, ma può sempre passare a quella successiva.

A parte. Se hai una piccola squadra coesa, i ruoli contano meno. Invece di avere qualcuno con l'etichettatrice a cui non è permesso scrivere codice di produzione o che qualcuno abbia etichettato uno sviluppatore che pensa di essere al di sopra dei test, tutti dovrebbero fare tutto il necessario per il successo del team, comprese le temute attività di gestione del progetto quando sono necessari, questo è chiamato un team interfunzionale.

Un altro punto sollevato da @Cort Ammon nei commenti. Il manifesto agile parla della collaborazione dei clienti rispetto alla negoziazione del contratto. Lo dici tu:

il cliente può essere deluso nel vedere il team perdere tempo su qualcosa che non porta valore immediato

Può essere difficile da spiegare e capisco che a volte i clienti possono essere molto difficili, ma per me sarebbe una grande bandiera rossa. Si fidano di te per il loro codice sorgente / relazione cliente / affari / qualunque cosa tu stia sviluppando per loro. Se non possono fidarsi di te per agire professionalmente nel loro interesse, allora hai un problema o lo fanno.

Ho scritto un post che parla di sviluppatori di software non considerati professionisti. Un medico professionista, un avvocato, un ingegnere civile di fronte a un cliente che ha cambiato i requisiti su di loro a metà strada non solo ridurrebbe la qualità e si lamenterebbe al riguardo. Avrebbero detto ai loro clienti che sarebbe stato un problema. Se il cliente spingesse, un professionista non lo farebbe solo alla cieca secondo uno standard pericolosamente inferiore perché sarebbe responsabile. Non accettiamo esami di ammissione professionali e quindi non siamo responsabili. Ciò non significa che non dovremmo cercare di essere migliori.

In sintesi, non mi preoccuperei troppo di cercare di rendere le persone più efficienti all'inizio e alla fine di uno sprint, ma piuttosto lo vedrei come un sintomo di un problema più ampio all'interno del team. Hai mai sentito parlare di eXtreme Programming (XP) . Direi che i principi di XP da applicare qui sono comunicazione e rispetto:

  • Rispetta la tua squadra per fare ciò che ritengono migliore. Direi che se ci sono molti video sui gatti, allora hai degli sviluppatori poveri o li stai trattando male.
  • Comunicazione. Se i tuoi sviluppatori stanno parlando tra di loro, con i tester, con la direzione, con il cliente, allora probabilmente tutti dovrebbero avere una buona sensazione di ciò che accadrà e se non lo fanno, possono semplicemente chiedere.

Sì, sì e sì. Trova la risposta in ogni modo.
David Arno

Buona risposta: l'ultimo paragrafo necessita di lavori. Solleva e spiega i punti qui invece di indicare qualche tomo.
Robbie Dee

1
Cosa facevano i tuoi sviluppatori in una fase di test a cascata? - Non intendevo confrontare scrum con watefall, ma piuttosto con approcci simili a kanban, dove c'è sempre un elenco di cose da fare che sono già valutate e prioritarie. Il backlog della mischia contiene funzionalità che non sono state adeguatamente esaminate dal team, quindi se un singolo sviluppatore (che al momento non ha funzionalità su cui lavorare) decide di iniziare a implementarne una nel mezzo dello sprint, ciò può portare a conseguenze inaspettate .
Holdenmcgrohen,

@holdenmcgrohen abbastanza giusto. La mia stima è sempre terribile, che cerco di spiegare, quindi mi piace sempre avere qualcosa in più. Penso che standup giornalieri e accoppiamenti possano aiutare qui, se i tuoi sviluppatori non vengono lasciati soli per troppo tempo non possono allontanarsi troppo.
Encaitar

@Encaitar Great stuff +1
Robbie Dee

20

Il primo punto è che Scrum si basa sull'ottimizzazione della squadra , non di ogni individuo. Se il team è produttivo ed efficiente, non importa molto se qualcuno è inattivo all'inizio o alla fine dell'attività.

Tuttavia, in ogni squadra in cui ho lavorato, c'è sempre molto lavoro. Consentitemi di affrontare un paio delle vostre preoccupazioni specifiche:

All'inizio dello sprint non c'è ancora nulla da testare,

Sebbene ciò possa essere vero in senso letterale, implica che pensi che l'unico lavoro per un tester sia "testare". C'è molto che si può fare prima che inizino a testare. Per uno, possono incontrare il proprietario del prodotto e gli sviluppatori per comprendere appieno i requisiti. Possono essere impegnati a lavorare su un piano di test, a raccogliere dati di test e così via. Se hanno il lusso di un buon framework, sono in grado di iniziare a scrivere test automatici in anticipo.

alla fine dello sprint non c'è in genere nulla o molto poco da sviluppare / correggere

Devo ancora vedere un team di sviluppo che ha finito le cose da riparare. Tuttavia, non è quello che dovrebbero fare alla fine dello sprint. Verso la fine dello sprint dovrebbero aiutare i tester a testare il prodotto. Possono aiutare a scrivere test automatizzati, a test di revisione del codice e dispositivi / parole chiave / ecc. Scritti dai tester. Possono lavorare con il team di documentazione per aiutarli a finire il loro lavoro, ecc.

Ho visto 2 approcci per gestire questo ... 1) Lascia che i membri del team decidano cosa fare ogni volta che sono fuori dai compiti.

Il difetto nel tuo pensiero è che gli individui finiscono i compiti. Le attività appartengono alla squadra nel suo insieme. Non dovrebbero svolgere altri lavori fintanto che ci sono storie o attività rimaste per la squadra nello sprint corrente.

Fai spazio nello sprint solo per lo sviluppo,

Questo approccio non rientra nella definizione tradizionale di mischia o agile. Il punto di agilità è che un'intera squadra è coinvolta nel lavoro verso un obiettivo comune. Ciò significa che tutto il lavoro necessario per completare una storia deve essere rappresentato in uno sprint: progettazione, sviluppo, test, documentazione, ecc.

Infine, questa non è l'unica altra soluzione praticabile. Trascuri la vera soluzione, ovvero che ogni membro del team dovrebbe presentarsi secondo necessità per aiutare a finire le storie in uno sprint.

L'obiettivo è un obiettivo di squadra , ma stai scrivendo come se ogni singola persona avesse obiettivi individuali ("finisci i miei compiti"). Se qualcuno non ha nulla da fare, può vedere su cosa si sta attualmente lavorando e offrire aiuto. Oppure, possono assumere il compito o la storia successivi e iniziare a lavorarci.


1
+1. I processi agili richiedono rallentamento. Per ottimizzare un sistema, spesso è necessario de-ottimizzare i sottoprocessi. In questo caso, l'hai detto meglio con "l'ottimizzazione della squadra". Qualsiasi altra cosa è un sintomo dell'errore di utilizzo.
CodeGnome

All'inizio della mia carriera, ho dovuto affrontare alcune aziende che si aspettavano che il candidato lavorasse su tutti i PHP, Java, C #, App desktop (VB), QA (automatizzato, manuale), Photoshop, CSS e così via. Quella volta l'industria ha considerato quelle aziende meno professionali a causa del valore della specializzazione. Mi chiedo se lo stesso schema ottenga l'accettazione (anche se diventi necessità) sotto Agile.
kuldeep.kamboj,

1

In tutti i negozi agili in cui ho lavorato, i tester sono considerati polli quindi non sono timebox nello sprint come lo sono gli sviluppatori. Prima di mettere le mani sul software, i tester dovrebbero scrivere piani e assicurarsi che gli ambienti siano impostati correttamente per ricevere il software. Come parte di questo, dovrebbero controllare tutti i documenti di design come sono.

Successivamente, dovresti cercare di riempire lo sprint. Non ci dovrebbe essere tempo libero alla fine dello sprint se le stime sono buone anche se la stima ovviamente è un'arte nera, quindi raramente si riempie esattamente .

Se uno sviluppatore ha tempo libero alla fine dello sprint, questa volta dovrebbe comunque essere monitorato per assicurarsi che stia aggiungendo valore (apprendimento di un nuovo framework, analisi, ulteriori test, ecc.).

La correzione dei bug è un'attività perfettamente accettabile da mettere in volata. Contribuisce a una funzione e quindi aggiunge valore. Questo non dovrebbe essere visto come il tempo rubato dal prossimo sprint - finendo più correttamente una funzione.


8
Leggi la Scrum Guide . Forse troverai il punto in cui dice che va bene dividere il team di sviluppo in tester e sviluppatori (suggerimento, non lo farai).
Nathan Cooper

3
Il documento non dice che hai membri del team di sviluppo con specializzazioni, ma non puoi dividere un gruppo per trattare come "polli".
Nathan Cooper

5
Per gli elettori negativi, quale parte dell'addestramento Agile ti sei perso dove specifica che dovresti adottare una strategia che funzioni per la tua squadra ? Il team di Robbie Dee ha adottato ciò che ha funzionato per loro nelle loro circostanze uniche con il loro progetto unico e vincoli ambientali. Ogni azienda ha barriere ambientali e "danni" che devono essere instradati. Questo sembra un approccio perfettamente accettabile alla domanda che è stata posta . La domanda non riguardava il modo migliore per organizzare i tester e gli sforzi di collaudo del team di sprint.
maple_shaft

4
No. L'OP ha specificamente chiesto di Scrum. Non puoi fare quello che vuoi e chiamarlo Scrum. Può essere o meno agile, ma avere parti del tuo "team" interfunzionale trattate come risorse esterne o come qualsiasi cosa diversa dai membri di prima classe del team di sviluppo non è Scrum.
CodeGnome

2
@CodeGnome è assolutamente corretto e tocca un punto che sollevo sempre : Agile è una filosofia, Scrum è un'implementazione di quella filosofia. I due non sono la stessa cosa e rispettano regole separate. (Sì, Scrum è arrivato per primo, ma è stato successivamente adattato per essere un'implementazione Agile)

-2

In un mondo ideale, la tua squadra sarebbe interfunzionale . Ognuno ha la sua specializzazione, ma tutti sono in grado di lavorare anche come un'altra specializzazione. Se i tester non sono in grado di codificare le attività più semplici, allora non hai un team interfunzionale.

Il modo SCRUM sarebbe quello di consentire alla tua squadra di essere interfunzionale. I tester dovrebbero avere comunque le competenze per l'automazione dei test, è un breve passo per codificare alcune delle cose meno complesse.


6
Le persone a forma di T sono una cosa, avere tester che scrivono codice (a meno che non stiamo parlando di automazione dei test) è un'altra cosa.
Robbie Dee

2
Questo presuppone che solo i tester abbiano tempi di inattività nello sprint? Anche gli sviluppatori hanno tempi di inattività.
maple_shaft

Presumo che gli sviluppatori possano fare test senza ulteriore addestramento. Dove vivo fa parte dell'educazione e del lavoro.
nvoigt
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.