La metodologia Agile si è ormai affermata nella maggioranza dei gruppi di lavoro, grazie alla sua prospettiva moderna e altamente flessibile. Contrapposta ai metodi tradizionali (come quello “a cascata”), non impone un’analisi immutabile fin dall’inizio, ma richiede che il team sia sempre aperto ai cambiamenti. Nella visione agilistica, infatti, non è sempre possibile conoscere tutto dall’inizio. I requisiti possono cambiare nel tempo, quindi occorre costruire un sistema che cresce assieme alle necessità.

I diversi metodi agili sono fondati sui principi del “Manifesto per lo sviluppo agile del software“, pubblicato nel 2001 e firmato da un gruppo di professionisti del project management. Una delle metodologie agili più conosciute è SCRUM.

Pratiche e principi

Nella metodologia agile si vuole ridurre il rischio di fallimento sviluppando il software in iterazioni di durata limitata. Ogni iterazione deve garantire un rilascio funzionante, e va considerata come un progetto a sè stante. L’idea è quella di partire da un embrione di progetto e man mano aggiungere funzionalità e complessità, smussando e perfezionando fino al prodotto finale. Alla fine di ogni iterazione devono essere rivalutate le priorità e le funzionalità da implementare, in modo da non allontanarsi dalla richiesta del cliente ed adattarsi ad essa.

Nel manifesto vengono esplicitati dei principi da seguire per una corretta gestione del progetto. I quattro principi fondamentali sono i seguenti:

  1. Le persone e le interazioni sono più importanti dei processi e degli strumenti. La metodologia agile predilige la comunicazione continua, sia con il cliente, in modo da esaudire sempre i suoi bisogni ed evitare perdite di tempo in implementazioni sbagliate, sia soprattutto tra colleghi.
  2. È più importante avere software funzionante che documentazione. Contrariamente alle buone pratiche comuni, gli agilisti sostengono che mantenendo il codice semplice la documentazione può essere ridotta al minimo.
  3. Collaborare con i clienti oltre che rispettare il contratto. Gli obblighi contrattuali passano in secondo piano quando c’è collaborazione diretta col cliente.
  4. Essere pronti a rispondere ai cambiamenti oltre che aderire alla pianificazione. Se la pianificazione è importante, è fondamentale essere flessibili ai cambiamenti. In ogni momento il team di sviluppo deve essere in grado di modificare le sue priorità.
La metodologia Agile si fonda sull'idea di SPRINT (iterazioni) che vengono ripetuti nel tempo e che portano in maniera incrementale alla conclusione del progetto.
La metodologia Agile si fonda sull’idea di SPRINT (iterazioni) che vengono ripetuti nel tempo e che portano in maniera incrementale alla conclusione del progetto. Credits: businessstudynotes.com

Oltre ai principi, esiste una grande varietà di pratiche da scegliere per lo svolgimento del progetto. Quali mettere in pratica dipende dall’approccio scelto dal project manager, e in parte anche dal progetto. Sicuramente, essendo anche principi base del movimento, la comunicazione stretta tra i vari attori coinvolti è la pratica sempre utilizzata, assieme a quella del coinvolgimento (più o meno ampio) del cliente e delle consegne frequenti. Anche la prioritizzazione è una pratica essenziale: gli obiettivi e le feature vengono spesso definiti col metodo MoSCoW (Must – Should – Could – Won’t haves). I test, poi, costituiscono una parte fondamentale della metodologia agile. In particolare, tre sono i tipi più utilizzati: test funzionali, unit test e test indiretti, ovvero quelli effettuati dal cliente ogni volta che gli si consegna una versione.

Anche la semplicità è uno dei pilastri delle metodologie flessibili. Essa si ritrova nel codice, nella documentazione, nella progettazione. Questo con l’obiettivo di facilitare le fasi di correzione e modifica. Interessante è anche il pair programming, che prevede lo sviluppo del codice con coppie di programmatori che si alternano nella scrittura.

Pro e Contro dell’Agile

Tra i lati positivi di questa metodologia troviamo sicuramente la capacità di rispondere e adattarsi ai cambiamenti. Gli agilisti non aspettano di avere chiare tutte le funzionalità e i dettagli del prodotto, perché non è possibile conoscere tutto fin dall’inizio. Sapendo che il cliente potrà cambiare idea più volte, è inutile progettare tutto e partire quando si ha sicurezza, in quanto non si potrà mai avere la totale certezza. Meglio quindi procedere per liste di obiettivi, e una volta concluse valutare la direzione successiva da prendere. Un altro vantaggio è la velocità dei cicli di revisione, con feedback sostanzialmente immediati. Ciò garantisce di non perdere alcun dettaglio lungo la strada.

Da considerare è anche il minor tempo di previsione e progettazione richiesto, che evita il rimandare l’inizio del progetto. Nelle metodologie tradizionali, infatti, spesso i ritardi sono causati da dei lunghi tempi di progettazione iniziali, a causa dei quali lo starting del progetto viene rimandato. Gli agilisti ci dicono che non è possibile individuare chiaramente tutti gli obiettivi dall’inizio, e che occorre lavorare per deliverables o consegne, che incorporano solo parte di tutte le caratteristiche finali del progetto.

I vantaggi della metodologia Agile.
I vantaggi della metodologia Agile. Credits: denysys.com

Esistono però anche dei contro. Uno dei lati negativi più importante è sicuramente la troppa libertà che si rischia di dare al cliente, causando problemi con lo sviluppo. Se è vero che occorre essere aperti ai cambiamenti e alle richieste del cliente, è altrettanto vero che il committente potrebbe stravolgere i requisiti in corso d’opera e sentirsi legittimato ad essere accontentato per ogni suo capriccio. Ciò causerebbe non pochi problemi all’interno del team, rischiando di apportare ritardi o portare al fallimento del progetto. È sempre necessario perciò istituire una serie di regole minime per la collaborazione cliente-fornitore.

Un altro contro è dato dalla cultura e dalla conoscenza agile che potrebbe essere scarsa in un’azienda. Non è facile adottare questa metodologia da zero, ed è indispensabile avere un “master”, esperto del metodo scelto, che insegni al team le varie pratiche e lo segua durante lo sviluppo. Tutti i metodi agile, anche se lo sembrano, non sono affatto immediati, e improvvisarsi esperti porterebbe al fallimento e a malumori tra colleghi. Sebbene la flessibilità sia la bandiera dei metodi agili, essa non è così semplice da mantenere, soprattutto se si impone il metodo a persone che hanno sempre lavorato con metodi tradizionali.

LEAVE A REPLY

Please enter your comment!
Please enter your name here