Adesso Italia

Approfondimenti18/10/2023

Project Management: Agile vs Waterfall

Scopri come l'Agile rivoluziona la gestione dei progetti software, aumentando valore generato e riducendo i rischi!

pragmatic agile

Due approcci distinti, Waterfall e Agile, sono entrambi ampiamente adottati, ma è l'Agile che emerge come paradigma moderno che trasforma la gestione dei progetti software permettendo di avere la necessaria flessibilità per andare alla velocità richiesta dal business.

Visibilità sullo stato di un progetto

Waterfall: con la metodologia a cascata la suddivisione dei compiti e la comunicazione tra i membri è limitata. Le attività vengono divise in fasi distinte (ad esempio, raccolta dei requisiti, progettazione, sviluppo, test e distribuzione) e ogni fase ha il suo insieme predeterminato di compiti e deliverable. Gli stakeholders sono coinvolti solo nella fase iniziale di raccolta dei requisiti e al termine delle milestone principali, per la validazione dei relativi deliverable. Questa mancanza di visibilità sul “work in progress” e sulle fasi future può̀ rendere difficile per gli stakeholder (ma anche per il team e il project manager) comprendere quale sia il reale stato di avanzamento del progetto: spesso i problemi emergono solo quando si entra nelle fasi finali del progetto, quando ormai è tardi per apportare delle azioni correttive.

Agile: Il processo di sviluppo Agile prevede la suddivisione del lavoro in iterazioni chiamate “sprint”. Ogni sprint ha un obiettivo chiaro e un periodo di tempo definito, durante il quale il team di sviluppo lavora in modo trasparente su quello specifico insieme di funzionalità o obiettivi, rilasciando di volta in volta una versione di prodotto già utilizzabile. Inoltre, i team Agile spesso mantengono una comunicazione costante e aperta tra tutti i membri, con incontri regolari come le “daily stand-up” per condividere gli aggiornamenti sullo stato del progetto. Questo favorisce la collaborazione, l’accesso continuo ad informazioni chiare e una maggiore consapevolezza del progresso del progetto.

Valore di business generato

Waterfall: La gestione “a cascata” dei progetti si concentra spesso sul seguire un piano predefinito e consegnare, alla fine del progetto, un risultato conforme a quanto inizialmente previsto. Gli stakeholder devono attendere fino alla fine del progetto per vedere risultati concreti. I cambiamenti delle priorità aziendali o delle condizioni di mercato durante l’esecuzione del progetto possono portare a un disallineamento tra i risultati del progetto e le mutevoli esigenze aziendali. Le conseguenze sono: un maggiore effort e tempi aggiuntivi di rilavorazione per la gestione di “change request”, magari dopo aver dedicato un effort elevato a sviluppare funzionalità non più necessarie o a basso valore aggiunto.

Agile: La suddivisione del lavoro in piccoli incrementi funzionali chiamati “user stories” o “backlog items”, che vengono sviluppati e consegnati in modo iterativo, consente al cliente di vedere e utilizzare il software in progressione, fornendo feedback continuo durante il processo di sviluppo. Ciò permette ai team di adattarsi rapidamente alle esigenze e alle preferenze del cliente, aumentando la probabilità di soddisfare le aspettative e generare valore tangibile nel minor tempo possibile.

Flessibilità al cambiamento

Waterfall: La gestione dei progetti a cascata è nota per la sua rigidità e mancanza di flessibilità nell’adattarsi ai cambiamenti. Una volta completata una fase, è difficile incorporare modifiche senza tornare alle fasi precedenti, il che può richiedere tempo e costi aggiuntivi. Questa mancanza di agilità rende difficile rispondere alle mutevoli esigenze del cliente, alle dinamiche di mercato o alle opportunità emergenti. Di conseguenza, può ostacolare l’innovazione e limitare la capacità del progetto di adattarsi ai requisiti in evoluzione.

Agile: le metodologie (e i team) Agile riconoscono che i requisiti e le priorità possono cambiare nel corso del progetto. Pertanto, invece di avere un piano rigido e definito dall’inizio alla fine, l’approccio Agile favorisce la capacità di adattarsi alle nuove informazioni e alle esigenze mutevoli del cliente. Attraverso i meccanismi di pianificazione iterativa, come il backlog prioritizzato e lo sprint planning, il team può concentrarsi sui requisiti più importanti e reagire rapidamente ai cambiamenti, evitare lunghi ritardi dovuti a revisioni di requisiti, evitando di investire tempo ed effort nella realizzazione di funzionalità non più rispondenti alle esigenze correnti ed ottenere un risultato che possa soddisfare le esigenze dettate dal mutevole contesto di business e le priorità degli stakeholders.

Gestione del rischio

Waterfall: il modello a cascata assume che i requisiti del progetto possano essere definiti e congelati all’inizio del progetto. Tuttavia, nei progetti complessi, per lo sviluppo di nuovi servizi digitali, oppure che coinvolgono tecnologie emergenti, o all’estremo opposto che richiedono una riscoperta di funzionalità e logiche di business affogate all’interno di applicazioni legacy stratificatesi nel tempo, è difficile prevedere tutto nelle prime fasi del progetto e le scoperte successive possono richiedere modifiche e rilavorazioni importanti, con pesanti ripercussioni sulla pianificazione delle attività e sui budget del progetto.

Agile: con le metodologie Agile il lavoro viene suddiviso in sprint, quindi è possibile identificare e affrontare i problemi in modo più rapido rispetto ai tradizionali modelli di sviluppo. Inoltre, grazie alle frequenti revisioni e retrospettive, il team può valutare il progresso, identificare eventuali rischi emergenti e apportare tempestivamente gli interventi necessari per mitigare tali rischi. Questo permette di adattarsi proattivamente alle sfide, riducendo l’impatto negativo che potrebbero avere sul progetto.

In conclusione, l'Agile si presenta come un approccio innovativo nella gestione dei progetti software, portando miglioramenti evidenti in visibilità, valore di business, flessibilità e gestione del rischio. La scelta tra Waterfall e Agile rappresenta una decisione cruciale che ha un impatto rilevante per il successo dei progetti di trasformazione digitale.