Mappa Via Marconi 20, Bussolengo (VR)
Email info@devinterface.com

Metodologia Agile: una panoramica di Scrum

Scrum copertina

Indice

Abbiamo spesso parlato di metodologia Agile, concentrandoci in particolar modo sul framework Kanban, evidenziando come possa migliorare la gestione del flusso di lavoro e aumentare l'efficienza dei team. Oggi, invece, ci focalizziamo su un altro pilastro fondamentale delle metodologie Agile: Scrum.

Scrum è una delle metodologie Agile più utilizzate a livello globale, con l'81% dei team Agile che dichiara di adottarlo in qualche forma​. La sua popolarità continua a crescere sia tra i team di sviluppo software che in altre industrie grazie alla sua capacità di migliorare la produttività e la soddisfazione del cliente. Secondo recenti statistiche, circa l'86% dei team software utilizza metodologie Agile, con Scrum che rappresenta la scelta predominante​​.

In questo articolo, analizzeremo che cos'è Scrum, il suo sviluppo e come può essere applicato efficacemente nei progetti di sviluppo software. Scopriremo come questo framework, nato più di venti anni fa, si è evoluto in numerose varianti, mantenendo sempre i suoi principi fondamentali di collaborazione, auto-organizzazione e adattabilità.

 

Cos'è Scrum?

Il termine Scrum può essere ricondotto agli economisti giapponesi Hirotaka Nonaka e Ikujiro Takeuchi. Nel loro articolo del 1986, "The New Product Development Game", descrivono quello che chiamano "approccio rugby". Utilizzano un'analogia con il rugby per spiegare come i team di sviluppo prodotto di successo lavorano in stretta vicinanza fisica, simile alla mischia del rugby dove i giocatori stanno molto vicini. Questi team operano come unità piccole e auto-organizzate, ricevendo solo una direzione generale dall'esterno ma avendo la libertà di decidere come raggiungere l'obiettivo comune. Questo tipo di collaborazione è finalizzato a massimizzare il successo dei progetti.

Più di dieci anni dopo, Jeff Sutherland e Ken Schwaber hanno ulteriormente sviluppato questo approccio in un framework per progetti di sviluppo software, chiamandolo Scrum, in onore dell'articolo di Nonaka e Takeuchi. Da allora, Scrum si è evoluto in varianti sempre più numerose grazie al contributo di numerosi autori, consulenti ed esperti che hanno visto il potenziale commerciale del framework. L'adozione di Scrum ha portato a una vasta gamma di interpretazioni e adattamenti, mantenendo comunque i principi fondamentali di collaborazione, auto-organizzazione e adattabilità​ (Scrum Inc. - Agile Education Program)​ .

Scrum si basa su ruoli specifici, eventi strutturati e artefatti definiti per facilitare lo sviluppo agile di progetti complessi. I tre ruoli principali sono lo Scrum Master, il Product Owner e il Development Team. Il framework include anche eventi come lo Sprint Planning, il Daily Scrum, lo Sprint Review e lo Sprint Retrospective, che promuovono la trasparenza, l'ispezione e l'adattamento continuo. Gli artefatti principali sono il Product Backlog, lo Sprint Backlog e l'Incremento del prodotto, che aiutano a gestire e monitorare il progresso del lavoro​ (Scrum Inc. - Agile Education Program)​.

 

I ruoli in Scrum

I ruoli principali nella metodologia Scrum sono tre: il product owner, lo scrum master e il team di sviluppo. 

Product owner: rappresenta gli interessi del cliente. È responsabile del successo commerciale del prodotto.

Scrum master: in inglese si usa spesso il termine “servant leader” perché funge da custode delle regole, moderatore e allenatore ed è responsabile dell'attuazione delle regole SCRUM.

Team di sviluppo: il team rappresenta il cuore di Scrum e deve organizzarsi in modo da raggiungere il rispettivo obiettivo dello sprint. È responsabile della parte più importante di un progetto Scrum: lo sviluppo del prodotto.

 

Product owner:

Il Product Owner rappresenta gli interessi del cliente ed è responsabile di massimizzare il valore del prodotto. Questo ruolo si concentra su "cosa" deve essere sviluppato e implementato per garantire il successo commerciale del prodotto. Le responsabilità del Product Owner includono:

  • Gestione del backlog di prodotto: il Product Owner crea, mantiene e ordina il backlog di prodotto, un elenco dinamico e prioritario delle funzionalità, miglioramenti e correzioni che il prodotto dovrà contenere. Questo backlog riflette costantemente nuovi requisiti e feedback degli utenti.
  • Prioritizzazione: il product owner assegna priorità agli elementi del backlog in modo che i compiti più importanti vengano affrontati per primi, assicurando che lo sviluppo del prodotto sia allineato con le esigenze del mercato e degli stakeholder.
  • Coinvolgimento continuo: partecipa attivamente in tutto il processo di sviluppo, consultandosi con gli stakeholder per definire le caratteristiche del prodotto e lavorando a stretto contatto con il team di sviluppo durante e dopo ogni sprint per assicurare il raggiungimento degli obiettivi.

Scrum master:

Lo Scrum Master è quindi un custode delle regole all'interno del processo. Deve garantire in ogni momento, durante il lavoro di sviluppo, gli eventi e così via, che tutti i partecipanti rispettino le regole secondo le linee guida e che tutti gli eventi si svolgano nella forma appropriata. Agisce come moderatore e allenatore. Ciò significa che lo Scrum Master non agisce mai come project manager o project leader; il suo compito è solo di supporto nel processo Scrum. L'obiettivo è consentire al team di lavorare secondo le regole e di essere efficiente.

Lo Scrum Master è il guardiano delle regole di Scrum e funge da "servant leader", un termine inglese che significa letteralmente leader servitore. Il suo ruolo è fondamentale per garantire che il framework Scrum sia correttamente applicato. Le principali responsabilità dello Scrum Master includono:

  • Facilitazione e moderazione: organizza e facilita tutti gli eventi di Scrum, come sprint planning, daily scrum, sprint review e sprint retrospective. È responsabile di assicurare che questi eventi si svolgano secondo le linee guida di Scrum e che tutti i membri del team comprendano il loro scopo.
  • Coaching e supporto: aiuta il team di sviluppo a seguire le pratiche di Scrum e a lavorare in modo efficiente. Fornisce supporto per risolvere eventuali impedimenti che potrebbero ostacolare il progresso del team.
  • Promozione dei valori di Scrum: diffonde la conoscenza di Scrum all'interno dell'organizzazione e assicura che tutti, sia all'interno che all'esterno del team, comprendano come interagire efficacemente con il team Scrum.

 

Team di sviluppo

Gli sviluppatori sono responsabili del "come". Come viene sviluppato e implementato il prodotto? Gli sviluppatori hanno caratteristiche molto particolari che caratterizzano lo spirito di Scrum

  • Dimensione del team: gli sviluppatori formano un team composto da tre a nove membri. Sette persone sono considerate ottimali. Lo Scrum Master e il Product Owner non sono inclusi in questo calcolo. 
  • Autogestione: Gli sviluppatori non hanno project manager o sub-project manager. Si autogestiscono. L'unica specifica che gli sviluppatori ricevono dal Product Owner è il tipo e la priorità delle caratteristiche del prodotto che devono essere implementate in tutti gli sprint.
  • Interdisciplinare: all'interno del team sono disponibili diverse competenze e abilità.
  • Nessun ruolo: i ruoli all'interno del team di sviluppo sono tutti di pari livello. I titoli non sono quindi rilevanti. Tuttavia, questo non significa che non ci siano diverse assegnazioni di compiti all'interno dei singoli sviluppatori.
  • Il team come unità: anche se gli sviluppatori possono organizzare i compiti all'interno del team con competenze diverse, rimangono sempre corresponsabili del raggiungimento dell'obiettivo di uno sprint. 

Il compito principale del Team di Sviluppo è costruire l'incremento del prodotto durante lo sprint. Gli sviluppatori si concentrano su questo obiettivo, subordinando tutte le altre attività a questa priorità principale.

Gli artefatti di Scrum

Gli artefatti di scrum comprendono tre componenti principali: il product backlog, lo sprint backlog e l'incremento. Questi elementi servono a garantire trasparenza e a fornire le informazioni necessarie al team scrum per realizzare il prodotto con successo.

Produkt backlog

Il backlog di prodotto è una lista ordinata di tutte le funzionalità, miglioramenti, e correzioni che il prodotto dovrà contenere. Ogni elemento in questa lista è chiamato Product Backlog Item (PBI). Questo elenco è dinamico e in continua evoluzione, riflettendo nuovi requisiti, feedback degli utenti, e cambiamenti nel mercato.

Il backlog non è mai completo, ma vive durante l'intero processo di sviluppo e viene costantemente rivisto e adattato, rappresentando la fonte unica di requisiti per qualsiasi modifica futura al prodotto. Anche se inizialmente contiene una versione preliminare delle funzionalità previste, esso cambia man mano che il prodotto e la sua comprensione si sviluppano.

Ogni PBI nel Product Backlog è dettagliato in modo tale da essere comprensibile e gestibile dal team di sviluppo. Il backlog di prodotto include non solo le nuove funzionalità, ma anche tutti gli elementi del backlog e le storie utente già sviluppate

Sprint backlog

Il sprint backlog è un sottoinsieme del product backlog, costituito dagli elementi selezionati per essere sviluppati durante uno specifico sprint. Esso fornisce una visione chiara di ciò che deve essere realizzato nello sprint corrente e del progresso verso l'obiettivo dello sprint.

La gestione del sprint backlog è responsabilità esclusiva degli sviluppatori, che possono apportare modifiche e aggiustamenti secondo necessità. perché un elemento possa essere trasferito nel sprint backlog, deve essere sufficientemente dettagliato da permettere al team di sviluppo di lavorarci efficacemente. inoltre, deve essere considerato realizzabile entro la durata dello sprint.

Il sprint backlog include un piano dettagliato su come il team raggiungerà l'obiettivo dello sprint e consegnerà l'incremento previsto. Questo piano è specifico e deve essere così dettagliato da poter essere utilizzato anche nel quotidiano.

Incremento

L'incremento è il prodotto nel suo stato di consegna più recente, comprendente tutto ciò che è stato implementato nello sprint corrente, insieme al valore di tutti gli incrementi precedenti. È essenzialmente la versione più recente del prodotto, che incorpora tutte le funzionalità sviluppate fino a quel momento.

Gli sviluppatori sono responsabili della creazione dell'incremento e di assicurarsi che sia conforme alla definizione di "fatto" stabilita dal team. Una volta completato, l'incremento deve essere consegnato al Product Owner, che decide se rilasciarlo o meno.

Un importante requisito per l'incremento è che sia in uno stato potenzialmente rilasciabile. Ciò significa che deve essere pronto per essere messo in produzione o per essere utilizzato, indipendentemente dalla decisione finale del Product Owner. Questo controllo della qualità non avviene solo alla fine dello Sprint, ma anche durante il corso dello Sprint, assicurando che l'incremento sia sempre mantenuto in uno stato rilasciabile.

 

Gli eventi di Scrum

Scrum definisce cinque eventi fondamentali per la gestione dei progetti. Questi eventi strutturano il lavoro del team e sono progettati per promuovere la trasparenza, l'ispezione e l'adattamento continuo. Anche se non sono previsti altri eventi oltre a questi, è importante sottolineare che la comunicazione può e deve avvenire al di fuori di questi momenti specifici.

Sprint

Lo Sprint è il cuore del framework Scrum. Si tratta di un periodo fisso (da una a quattro settimane), durante il quale si lavora per raggiungere gli obiettivi prefissati. All'interno dello Sprint, gli eventi chiave includono la pianificazione dello Sprint, il Daily Scrum, lo sviluppo del prodotto, la revisione dello Sprint e la retrospettiva dello Sprint. Lo Sprint stesso non è un evento isolato, ma un contenitore che racchiude tutti gli altri eventi. Partecipano allo Sprint il Product Owner, lo Scrum Master, gli sviluppatori e gli stakeholder.

Durante lo Sprint non si apportano modifiche che ne possano compromettere l'obiettivo. La qualità del lavoro non deve essere minata e qualsiasi modifica dell'ambito deve essere negoziata tra il Product Owner e il team di sviluppo se utile per l'apprendimento. L'obiettivo principale è completare il lavoro pianificato nel backlog dello Sprint, con il team che ha ruoli e responsabilità ben definiti.

Sprint Planning

La pianificazione dello sprint è l'incontro iniziale di ogni Sprint, volto a pianificare il lavoro per il prossimo Sprint. Tutto il team Scrum partecipa a questo evento: il Product Owner, lo Scrum Master e gli sviluppatori. La durata della pianificazione varia, ma per uno sprint di quattro settimane può durare fino a otto ore. Se lo Sprint è più breve, anche la pianificazione sarà proporzionalmente ridotta.

Lo scrum master è responsabile di assicurare che la pianificazione dello sprint abbia luogo e che tutti i membri dello scrum team comprendano l'obiettivo dell'evento. È anche responsabile di garantire che la pianificazione dello sprint rimanga entro i tempi concordati in termini di durata.

Daily Scrum

Il Daily Scrum è una breve riunione quotidiana, di solito della durata massima di 15 minuti. Si tiene sempre alla stessa ora e nello stesso luogo per ridurre la complessità organizzativa. Durante questo incontro, il team di sviluppo sincronizza le attività e pianifica il lavoro per le prossime 24 ore. Ogni membro del team risponde a tre domande principali:

  • Cosa ho fatto ieri per aiutare il team a raggiungere lo Sprint Goal?
  • Cosa farò oggi per aiutare il team a raggiungere lo Sprint Goal?
  • Ci sono ostacoli che impediscono al team di raggiungere lo Sprint Goal?

Sprint Review

La Sprint Review si tiene alla fine di ogni Sprint per ispezionare l'incremento del prodotto e adattare il Product Backlog se necessario. Durante questo evento, il lavoro completato viene mostrato agli stakeholder, che forniscono feedback e suggerimenti. L'intero team Scrum e gli stakeholder principali partecipano alla revisione, che può durare fino a quattro ore per uno Sprint di quattro settimane.

L'obiettivo principale è raccogliere feedback e promuovere la collaborazione.

Sprint Retrospective

La Sprint Retrospective è l'ultimo evento di uno Sprint, focalizzato sul miglioramento continuo del processo di lavoro. Durante questa riunione, il team riflette su come è andato lo Sprint e identifica le aree di miglioramento per il futuro. Non si tratta di valutare il prodotto, ma di migliorare i processi e le interazioni del team. La retrospettiva avviene dopo la Sprint Review e prima della Sprint Planning del prossimo Sprint, con una durata massima di tre ore per uno Sprint di quattro settimane.

Lo Scrum Master è responsabile dell'organizzazione dell'evento e lo facilita, garantendo che tutti comprendano lo scopo e partecipino attivamente.

 

Benefici dell'utilizzo di Scrum

Più flessibilità nel progetto

Le regole di Scrum, essendo semplici e ben definite, permettono una rapida adozione da parte dei singoli e dei team. Questo facilita l'adattamento continuo dei metodi di lavoro in risposta all'evoluzione dei requisiti, rendendo il processo altamente agile grazie alla pianificazione adattiva. Scrum si configura quindi come un processo di miglioramento continuo.

Controlli regolari per una rapida identificazione dei problemi

Scrum include incontri quotidiani e revisioni al termine di ogni sprint, che consentono ai team di monitorare costantemente i progressi e affrontare le sfide attraverso canali di comunicazione efficaci. Questo approccio permette di identificare e risolvere rapidamente i problemi che emergono.

Responsabilità chiare, trasparenza e auto-organizzazione

In Scrum, i ruoli e le responsabilità di ciascun membro del team sono ben definiti, facilitando così la collaborazione e l'esecuzione dei progetti. Grazie agli accordi regolari e ai backlog, c'è un alto livello di trasparenza. Ogni membro ha la libertà di decidere autonomamente come e quando completare i propri compiti, promuovendo l'auto-organizzazione del team e riducendo il carico amministrativo e documentale.

Collaborazione: per un maggiore “NOI” nel progetto

Scrum favorisce la collaborazione e la comunicazione all'interno del team attraverso cicli di feedback regolari e obiettivi comuni. La consapevolezza dei compiti e delle sfide affrontate da ciascun membro permette di supportarsi reciprocamente, rafforzando il senso di appartenenza e il lavoro di squadra.

 

Conclusione

Come strumento di gestione agile dei progetti, il metodo Scrum offre un metodo flessibile ed efficiente per la gestione dei progetti. Promuove il lavoro di squadra, la comunicazione e la consultazione che ne derivano e fornisce a ogni membro del team responsabilità chiare e compiti da realizzare.