Agile è una filosofia, un approccio, che si applica attraverso specifiche metodologie e si attua con specifici strumenti e tecniche.
Nata nell’ambito dello sviluppo software, la filosofia Agile nell’ultimo decennio è passata dall’essere “emergente” a diventare mainstream; grazie alla sua duttilità, si è diffusa anche trasversalmente nella pratica del Project e del Service Management.
Agile Manifesto
Racchiude in sé un insieme di metodi e pratiche che prendono il via dall’Agile Manifesto (“Manifesto per lo sviluppo agile del software”), redatto nel 2001 e che condividono tra loro una visione racchiusa in 12 Principi.
L’Agile nasce in contrapposizione al tradizionale processo waterfall, “a cascata”, che tende a porre la sua enfasi sulla definizione dei requisiti e sul processo, introducendo quindi un approccio lightweight, dove la parte essenziale è basata sul team coinvolto, concentrato sul raggiungimento dei risultati in modo rapido, seguendo un approccio iterativo e collaborativo, in cui il cliente viene messo al centro del processo di sviluppo.
Riportiamo fedelmente quanto illustrato nell’Agile Manifesto:
- 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
In un processo di sviluppo agile il risultato viene consegnato attraverso brevi cicli di lavoro: questo permette di adattare il lavoro in maniera tempestiva, sulla base di frequenti feedback dei committenti del progetto e degli utilizzatori del prodotto finale, permettendo una maggiore soddisfazione del cliente grazie alla fornitura continua di pacchetti di lavoro già utilizzabili.
Questo si ottiene attraverso iterazioni con gli stakeholder e feedback continuo, per poter rilasciare e successivamente raffinare il risultato; planning, testing e integrazione continua, per perfezionare qualsiasi aspetto relativo sia al progetto, sia al software.
Quello che emerge da una visione generale dell’approccio Agile è l’importanza della persona, sia essa un membro del team di sviluppo, sia il committente; entrambi sono strettamente coinvolti nelle fasi del lavoro e focalizzati sul miglior risultato finale, ottenuto attraverso una continua e adattiva collaborazione.
“Una conversazione faccia a faccia è il modo più efficiente e più efficace per comunicare con il team ed all’interno del team.” [sesto principio del Manifesto]
Quindi con il termine “agile” possiamo indicare quelle metodologie di sviluppo leggere e flessibili, che consentono di rivedere di continuo le specifiche adeguandole durante l’avanzamento dello sviluppo del software, mediante un framework iterativo e incrementale, e un forte scambio di informazioni e di pareri tra gli sviluppatori e con il committente.
Scrum
Tra i framework utilizzati nelle metodologie Agile, il più diffuso è lo SCRUM, un particolare insieme di practices basato sul controllo empirico dei processi attraverso trasparenza, ispezione e adattamento.
Curioso ricordare da dove prenda il nome il framework: SCRUM è un termine sportivo, nello specifico proviene dal rugby, e definisce la mischia, una formazione molto affollata di giocatori che cercano di impossessarsi della palla a testa bassa. I team infatti sono piccoli gruppi performanti e interfunzionali che condividono l’obiettivo finale, in cui gli individui possono gestire complicati problemi adattivi mentre realizzano prodotti di alto valore.
Utilizzare le filosofie Agile non riguarda tanto l’imparare tecniche o strumenti nuovi ma, soprattutto, adottare un nuovo approccio mentale. Si tratta di abbracciare un cambiamento culturale, un diverso approccio alle cose.