None

Che strane parole: Lean, Agile e SCRUM

Non sei sicuro di sapere il loro reale significato? Questo post chiarirà i tuoi dubbi

Nel 2016 avevamo annunciato in un blog post di aver cambiato modo di lavorare e di aver cominciato la transizione verso l’Agile. Perchè voler tornare sulla tematica ora? Perché ci siamo resi conto che, nonostante Agile, Lean, SCRUM e altri termini siano sulla bocca di tutti si fa molta confusione e capita che queste parole vengano usate l’una come sinonimo dell’altra.   

Cos’è e cosa non è Agile

Agile non è un framework o strumento. È un insieme di principi che si riferiscono alle modalità con cui affrontare un progetto, (sia esso di sviluppo o meno) e che utilizza alcuni metodi di supporto come SCRUM e Kanban. 

Da dove nasce 

La filosofia Agile ha preso in prestito alcuni concetti del lean thinking, il “pensiero snello”, uno stile di management che punta ad ottimizzare i processi eliminando gli sprechi. Diffuso agli inizi degli anni ‘90 come studio del sistema Toyota per la produzione delle sue auto , oggi il lean thinking è utilizzato in contesti molto diversi tra loro: dalla pubblica amministrazione, alla sanità, ai servizi finanziari, all’IT. Ciò che accomuna tutte le nuove discipline lean è la tendenza al miglioramento costante (KAIZEN), un percorso in continuo divenire che non si può dire mai concluso.

Quando si parla di lean applicata allo sviluppo software si fa riferimento al Lean software development. Per chi produce software, il mantra KAIZEN si traduce nel rispetto di 7 punti:

  • Eliminare lo spreco, ovvero non disperdere tempo ed energie su attività che non contribuiscono alla qualità del prodotto
  • Creare qualità - quello che viene prodotto deve essere di valore per il cliente, sia esso interno o esterno
  • Aumentare il know how del team creando dei momenti di apprendimento 
  • Decidere il più tardi possibile – il software development è associato a un certo grado di incertezza dovuto a una serie di variabili. Rinviare le decisioni il più possibile permette di verificare le ipotesi e di scegliere un’opzione di sviluppo sulla base dei fatti
  •  Consegnare il prima possibile 
  • Rispettare le persone e contribuire al rafforzamento del team anche dal punto di vista motivazionale 
  •  Migliorare l’intero sistema.

In breve, i tre pilastri del Lean Software Development sono: essere in grado di riconoscere ed eliminare ciò che non serve (Muda), mantenere il workflow (Mura) e non sovraccaricare i processi produttivi (Muri). Il terzo punto, l’attenzione sul carico dei processi ha lo stesso peso (in termini di importanza) della riduzione degli sprechi perché sono questi due criteri a far sì che il workflow funzioni. Adottare metodi e strumenti lean permette di superare l’idea che produrre di più significhi incrementare il valore del prodotto.

Cosa prevede Agile

La filosofia Agile, diversamente dalla disciplina Lean, nasce in seno alla comunità tecnologica. Il manifesto Agile, scritto e pubblicato nel 2001 da un gruppo di guru dell'informatica che si sono spontaneamente riuniti nell'Agile Alliance e sottoscritto successivamente da diversi sviluppatori, include una nuova serie di valori. 
Secondo il manifesto il modo migliore per poter creare software è concentrarsi su:

“Gli individui e le interazioni più che i processi e gli strumenti
Il software funzionante più che la documentazione esaustiva
La collaborazione col cliente più che la negoziazione dei contratti
Rispondere al cambiamento più che seguire un piano”

Essere agili significa dare priorità alla qualità del rapporto tra le persone: l’obiettivo è mantenere uno standard alto e garantire un equo scambio sia all’interno del team sia nelle interazioni tra team e cliente. Queste ultime sono la chiave per ottenere un software di alta qualità. Attraverso un frequente confronto faccia a faccia si crea una sinergia tra le due parti caratterizzata da comunicazione significativa: da un lato il cliente fornisce feedback immediati, dall’altro il team è in grado di progredire di volta in volta nello sviluppo.

Altra milestone di Agile è l’MVP, un elemento che permette di misurare se ciò che si sta rilasciando soddisfa le richieste del cliente, evitando di dover buttare ore e ore di lavoro. Capita spesso che il cliente parli una “lingua” diversa rispetto al team di sviluppo e viceversa. Per evitare fraintendimenti in Agile viene concordato inizialmente da entrambe le parti un minimum available product (MVP), ovvero vengono stabilite le feature di base che il prodotto rilasciato deve avere. 

Tra i principi di Agile, infine, vi è quello di sviluppare un software in maniera continuativa e incrementale. Stabilito un periodo di tempo fisso per le release, che può variare da un intervallo di due settimane a due mesi a seconda delle politiche dell’azienda, il team di sviluppo si impegna a consegnare un “pezzo” di prodotto per volta. Ogni release consegnata è testabile e aggiunge valore al prodotto. 

In sintesi in Agile si preferisce essere adattivi, lavorare con le stime piuttosto che i vincoli e consegnare un prodotto completo al 25% e usabile al 100% al posto di consegnare un prodotto completo al 50% e non usabile.

Cos’è SCRUM 

Scrum è un framework Agile per la gestione di progetti complessi. Dalla ricerca "the 13th Annual State of Agile Report", pubblicata nel 2019 dall'americana CollabNet, emerge come oggi sia uno dei metodi più utilizzati dalle aziende di sviluppo software (lo utilizza il 54% delle imprese intervistate). 

Il termine SCRUM è stato preso in prestito dal mondo del rugby: in tale contesto indica il momento in cui gli atleti della stessa squadra creano un gruppo compatto e spingono nella stessa direzione. In SCRUM il team funziona in modo simile ad una squadra di rugby. Il team è cross-funzionale, ovvero le competenze di un membro compensano quelle di un altro e si tende a stabilire una co-responsabilità del gruppo, in maniera tale da evitare i colli di bottiglia.

SCRUM abbraccia i valori Agile quali l’umiltà, la trasparenza e il lavoro di squadra e ne aggiunge di nuovi come apertura a nuovi scenari, rispetto per i membri del team e per il cliente, impegno e coraggio.

Cuore di SCRUM sono gli sprint, cicli di development con durata fissa (molte aziende adottano intervalli di due settimane) durante il quale il team si focalizza sullo sviluppo delle feature concordate con il cliente. Al termine di ogni sprint si consegna al cliente quanto è stato prodotto, il cliente lo testa e fornisce il feedback necessario per programmare gli sprint successivi. Esistono poi una serie di cosiddetti eventi che scandiscono il tempo di sviluppo, oltre a diversi ruoli e agli artefatti. 

Nei prossimi post dedicati all’Agile, oltre ad approfondire questi elementi, parleremo di applicazioni pratiche e delle ultime tendenze come l’agile per il management, i working agreements e il cosiddetto “carpaccio di elefante”. Continuate a seguirci!