In questo articolo scopriremo i vantaggi ed i segreti che la metodologia Agile porta con sé.
Un approccio dinamico e innovativo allo sviluppo del software utilizzato anche da “giganti” come Lego e Google ma che tuttavia, non è una soluzione universale.
Analizzeremo anche il caso del modello Spotify per comprenderne le specificità e i limiti di applicazione.
Prima di iniziare, è necessario introdurre il concetto di processo di sviluppo, o, semplicemente, processo software.
Si tratta della descrizione di un approccio per la costruzione, l’installazione e la manutenzione di un software.
Le attività fondamentali comuni a tutti i processi software sono:
- Specifica/requisiti
- Progettazione
- Implementazione
- Validazione e verifica
- Rilascio/installazione
- Manutenzione/evoluzione
- Gestione del progetto
Fondamentalmente esistono due differenti processi di sviluppo software:
- Il processo waterfall dove le attività fondamentali citate precedentemente vengono eseguite in maniera sequenziale e vengono rese fisse una volta terminate
- Il processo iterativo che è organizzato in una serie di mini-progetti brevi, di lunghezza fissa (timeboxed) chiamate iterazioni, in questo caso le specifiche e il progetto evolvono, in base a feedback continui degli (stakeholders).
Ogni iterazione è composta da differenti fasi: pianificazione, analisi dei requisiti, progettazione, implementazione, test e documentazione.
Cosa è la metodologia Agile?
La metodologia Agile nacque nel 2001 più precisamente nello Utah, già da allora un gruppo di menti brillanti aveva compreso la necessità di aggiornare il modo di lavorare nello sviluppo software e non solo, l’intenzione era quella di trovare un approccio innovativo, veloce, appassionante ed immediato.
L’inizio della comunità Agile, seppur non ufficialmente, si ebbe negli anni ‘80, nel 1995 poi cinque programmatori scrissero un articolo su Scrum, argomento fortemente connesso alla metodologia Agile.
Il punto di svolta si ebbe quando i due “genitori” della metodologia Agile, Robert C. Martin e Kent Beck, si conobbero in XP, inizialmente collaborano per tenere alcuni corsi, successivamente tennero un convegno per raggruppare tutti i sostenitori di Agile.
Il convegno a Snowbird nel 2001, fu il punto di svolta, infatti quel giorno venne definito il manifesto Agile con i principi cardine del processo. Il resto è storia.
Analizzando il Manifesto dello sviluppo Agile, emergono alcuni fattori importanti che guidano questa metodologia:
- La nostra principale priorità è soddisfare il cliente con la consegna continua di software di valore
- Il cambiamento dei requisiti è benvenuto – il cambiamento viene usato per il vantaggio competitivo del cliente
- Gli sviluppatori e i clienti devono lavorare insieme quotidianamente
- Costruire il progetto attorno a persone motivate
- Conversazione faccia a faccia
- Il software funzionante è la misura principale del progresso
- Sviluppo sostenibile
- Semplicità
- Gruppi di lavoro auto-organizzanti
L’obiettivo principale è proprio quello di sviluppare il software in continua collaborazione con gli stakeholders, così da fornire un prodotto, scalabile ed espandibile, che sia costantemente in target con il mercato ed a misura del cliente.
Inoltre sono fondamentali all’interno della metodologia Agile le cerimonie, il backlog, il team e le iterazioni, più comunemente chiamate sprint.
Lo Sprint
Lo sprint è un periodo di tempo fissato, in cui il team lavora per completare un determinato numero di task, al termine del quale il software deve essere funzionante e rilasciabile.
È possibile dedicare uno sprint al refactoring del codice per mantenere alta la qualità del codice così da permettere un maggior adattamento alle variazioni dei requisiti ed un estensibilità molto alta, introducendo anche la review incrociata all’interno del team durante lo sprint.
I task all’interno dello sprint vengono estratti dal backlog, un contenitore di features da implementare opportunamente gestito ed ordinato in base alle priorità.
Ogni task all’interno dello sprint possiede uno story point, che possiamo identificare come il peso di quel determinato compito.
Esistono differenti tipi di task:
- Story: l’obiettivo finale del software espresso dal punto di vista dell’utente.
- Task: rappresenta la feature da implementare estratta da una determinata story.
- Subtask: deriva dalla divisione del task in diverse parti.
- Bug: rappresenta un malfunzionamento del software.
- Spike: un task di formazione personale.
- Chore: un task utile per formare una persona del team da parte sempre di un membro del team.
L’epic invece rappresenta un insieme di story.
All’interno dello sprint, il team di sviluppo si occupa dello sviluppo del software, lo scrum master funge da arbitro e il product owner è il mediatore tra i vari stakeholders. Le cerimonie promuovono la collaborazione, la trasparenza e il progresso del lavoro. Le principali cerimonie includono la sprint review, lo sprint planning, lo sprint daily e lo sprint retrospective.
Le cerimonie sono degli incontri regolari che mirano a promuovere la collaborazione, la trasparenza ed il progresso del lavoro.
Le principali cerimonie all’interno della metodologia sono:
- Sprint review si svolge ad inizio sprint e serve per organizzare le story da introdurre e per individuare eventuali problemi.
- Sprint planning incontro che si tiene all’inizio di ogni sprint e serve per pianificare nel dettaglio il lavoro che affronterà il team di sviluppo.
- Sprint daily riunione giornaliera della durata fissata di 15 minuti utile esclusivamente per informare il team o richiedere supporto.
- Sprint retrospective call conclusiva che mira alla discussione degli aspetti positivi e negativi che si sono verificati durante lo sprint, per far sì che il team migliori sempre di più e trovi quegli automatismi che lo rendano sempre più performante.
Esistono varie declinazioni della metodologia Agile, come lo Scrum o il Kanban, che si differenziano per alcuni dettagli.
Ad esempio, lo Scrum si concentra maggiormente sul team e sull’organizzazione dei task, mentre il Kanban offre un maggior focus visuale sui task tramite la Kanban board.
Pertanto è evidente che l’obiettivo del modello è incoraggiare anche la comunicazione, la trasparenza e la collaborazione all’interno del singolo team e tra i vari team, eliminando anche l’accezione negativa della parola errore poiché per poter migliorare è necessario sbagliare qualche volta.
Agile applicata da Lego
Negli ultimi anni la metodologia Agile ha acquisito così tanto successo che viene impiegata, per le sue alte probabilità di completare con successo un progetto, anche nelle aziende non strettamente tech come Lego.
Con l’adozione della metodologia Agile furono introdotti vari cambiamenti all’interno dell’azienda che portarono ad un aumento della produttività e ad un minor tempo di risposta ai cambiamenti di specifiche, che passarono da un paio di mesi a settimane.
Inizialmente vennero instaurati modelli di consegna continua sulla base delle definizioni di priorità, si diede piena responsabilità al team di prodotto ed infine si utilizzarono dei modelli incentrati sui team ed il focus dell’organizzazione si spostò quindi dalle persone ai team.
Grazie all’introduzione di questa metodologia all’interno di Lego è stato possibile migliorare la reattività delle consegne digitali, ridurre i tempi di consegna, eliminare o ridurre al minimo i ritardi all’interno dei progetti ed infine è aumentata la trasparenza e collaborazione tra team.
Spotify e Agile
Tale metodologia però non si adatta a tutte le esigenze ed in modo indistinto a tutte le aziende: iniziarono a nascere delle varianti, come nel modello utilizzato da Spotify.
L’obiettivo del modello Spotify è quello di incoraggiare l’autonomia e la creatività affidandosi alle persone per completare il lavoro, dando completa libertà organizzativa e cerimoniale.
Essendo più incentrata sul team il modello Spotify presenta delle differenti categorie di team:
- Squad: molto simile al team Agile, è costituita da un gruppo di persone per raggiungere un determinato obiettivo.
- Tribe: sono formate da più squad e si coordinano per raggiungere un obiettivo all’interno della stessa area.
- Chapter: anche se le squad sono totalmente autonome è necessario che tutti gli specialisti siano allineati sulle best practice, i chapter hanno proprio il ruolo di raggruppare ogni specialista che viene guidato da un Senior Technology Lead.
- Guild: rappresenta una team appassionato ad una specifica area.
- Trio: è una combinazione di Tribe Lead, Product Lead e Design Lead, garantisce l’allineamento delle prospettive di queste tre differenti tribe.
- Alliance: una combinazione di trio che permettono a differenti tribe di lavorare a stretto contatto.
Come possiamo vedere il modello adottato dall’azienda svedese è molto orientato al team e all’area specifica di lavoro, dividendo l’azienda in diversi domini.
Metodologia Agile nelle aziende tech: Google come esempio
Come avevamo detto in precedenza Come avevamo accennato in precedenza, la metodologia Agile è stata originariamente sviluppata per migliorare i processi di sviluppo software.
Oggi, questa metodologia è ampiamente adottata da tutte le principali aziende tecnologiche, comunemente conosciute come Big Tech, tra cui spiccano nomi di rilievo come Google.
Google, in particolare sfrutta la metodologia Agile per promuovere lo sviluppo e l’integrazione continua all’interno dei progetti, introducendo nuove funzionalità in maniera costante.
I team che vengono impiegati all’interno dei progetti possiamo chiamarli “micro team” in quanto si mira a creare più gruppi per un singolo progetto e soprattutto si mira al fatto che essi siano cross-funzionali cioè le persone all’interno del gruppo spesso hanno competenze differenti, inoltre sono largamente utilizzati tutti quegli strumenti che facilitano la collaborazione e ne aumentano la produttività come Google Workspace.
Agile in Madfarm: efficienza e qualità
Anche noi, in Madfarm, abbiamo deciso di adottare questo approccio.
Da diverso tempo abbiamo adottato in azienda la metodologia Agile in pianta stabile, che si fonde perfettamente con l’architettura a microservizi da noi utilizzata per lo sviluppo software.
Posso affermare che ci ha permesso di trarre tutti i vantaggi che ne derivano, infatti riusciamo ad organizzare le attività in modo più efficiente, a sviluppare un software qualitativamente migliore e ad aumentare le performance dei team aumentando allo stesso tempo anche il benessere dei membri dell’azienda.
Questo perché, con lo sviluppo Agile, si viene a creare un vero e proprio ecosistema con i propri automatismi in cui il team si sente sempre più a proprio agio.
Inoltre, introducendo dei feedback sempre più frequenti ed adattando il software ad ogni variazione di requisiti possibile, siamo riusciti a rendere i clienti parte attiva dello sviluppo, rendendoli complessivamente più entusiasti.