Dagli albori della produzione snella negli anni ’70 fino ai princìpi del Agile Manifesto. La storia e i valori dell’Agile.
Un po’ di storia
Volendo risalire alle prime applicazioni di metodologie snelle nei processi di produzione dovremmo tornare indietro nel tempo fino agli anni ’70 quando, in Giappone, Taiichi Ohno definì il Toyota Production System. Il TPS, a differenza dei consueti processi produttivi di massa, dava (e tutt’ora dà) maggiore valore ad alcuni princìpi cardine come l’eliminazione degli sprechi, dei sovraccarichi e delle inconsistenze, il miglioramento continuo e a piccoli passi, la semplicità e la flessibilità, il tutto nel rispetto per le persone. E’ importante elencare questi princìpi poiché, come vedremo, sono alla base dell’Agile.
Facendo un salto in avanti, all’inizio degli anni ’90 lo sviluppo del software era gestito da metodologie definite Waterfall, ossia “a cascata”: a ogni attività ne segue un’altra che risente di tutto ciò che accade nella precedente. Questo porta necessariamente alla definizione preventiva di TUTTE le attività e di TUTTI i possibili impatti sul progetto al fine di poterlo controllare durante il suo ciclo di vita, dalla fase di raccolta dei requisiti fino al mantenimento successivo al rilascio, nel rispetto dei tre parametri fondamentali di Tempi, Costi e Qualità.
Con l’avvento dei sistemi distribuiti e soprattutto di Internet, insieme ai suoi nuovi paradigmi, il cosiddetto time to market (tempo si uscita sul mercato) si accorcia sensibilmente e, a causa dell’effettiva impossibilità di definire sin dalle fasi iniziali tutti i requisiti di prodotto, aumentano notevolmente le richieste di modifica dei software, anche in fase avanzata di sviluppo. Con queste caratteristiche l’approccio Waterfall inizia a far sentire la sua rigidità e inadeguatezza in un mondo in continuo cambiamento.
Alla fine dello scorso millennio, cercando di interpretare le necessità dei propri clienti, alcuni sviluppatori iniziarono a mettere in pratica nuovi concetti, più snelli e adattativi, nella produzione di software. Questi concetti sono stati raccolti in 4 valori:
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.
Ovvero, fermo restando il valore delle voci a destra, consideriamo più importanti le voci a sinistra.
Nacquero diversi sistemi e metodologie accomunati dall’uso di questi valori: Scrum, XP (eXtreme Programming), FDD (Feature-Driven Development), DSDM (Dynamic System Development Method), TDS (Test-Driven Development), ASD (Adaptive Software Development), Crystal e altri. I vari ideatori e creatori, sentendosi affini e mossi da uno spirito di condivisione della conoscenza, decisero quindi di raccogliere le linee guida di queste metodologie in un documento davvero agile (stampato sono un paio di pagine), dando vita nel 2001 al “Manifesto for Agile Software Development“, aprendolo proprio con i 4 valori espressi in precedenza e indicando 12 princìpi.
Se nell’approccio waterfall Tempo (Schedule), Costo (Cost) e Obiettivo (Scope) sono i tre vertici del “triangolo di ferro” (Iron Triangle) nell’Agile abbiamo invece un focus su Vincoli (Constraints), Qualità (Quality) e Valore (Value). Da questa premessa diventano chiari i princìpi seguenti.
I princìpi… in breve
La nostra massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua.
Questo è il valore principale da esportare all’esterno.
Accogliamo i cambiamenti nei requisiti, anche a stadi avanzati dello sviluppo. I processi agili sfruttano il cambiamento a favore del vantaggio competitivo del cliente.
L’adattamento e la flessibilità sono colonne portanti.
Consegnamo frequentemente software funzionante, con cadenza variabile da un paio di settimane a un paio di mesi, preferendo i periodi brevi.
L’iterazione a tempo predefinito da la possibilità di ridefinire le priorità lato business e di rilasciare nuove funzionalità con continuità.
Committenti e sviluppatori devono lavorare insieme quotidianamente per tutta la durata del progetto.
Il cliente è parte integrante del team di progetto. Senza se e senza ma.
Fondiamo i progetti su individui motivati. Diamo loro l’ambiente e il supporto di cui hanno bisogno e confidiamo nella loro capacità di portare il lavoro a termine.
La fiducia nel team e la fornitura di strumenti adeguati sono alla base di un progetto di successo.
Una conversazione faccia a faccia è il modo più efficiente e più efficace per comunicare con il team ed all’interno del team.
La comunicazione reale e diretta è l’unico strumento che non da alibi.
Il software funzionante è il principale metro di misura di progresso.
Un’attività è considerata conclusa solo quando è funzionante al 100%.
I processi agili promuovono uno sviluppo sostenibile. Gli sponsor, gli sviluppatori e gli utenti dovrebbero essere in grado di mantenere indefinitamente un ritmo costante.
La capacità produttiva costante è indice del benessere del team e del progetto.
La continua attenzione all’eccellenza tecnica e alla buona progettazione esaltano l’agilità.
La qualità interdisciplinare è al centro dell’Agile.
La semplicità – l’arte di massimizzare la quantità di lavoro non svolto – è essenziale.
L’Agile è l’arte di fare il massimo con quello che si ha nel modo più semplice possibile.
Le architetture, i requisiti e la progettazione migliori emergono da team che si auto-organizzano.
Un team responsabilizzato è in grado di prendere decisioni in autonomia al fine di ottimizzare gli sforzi.
A intervalli regolari il team riflette su come diventare più efficace, dopodiché regola e adatta il proprio comportamento di conseguenza.
Il miglioramento costante è prerogativa dell’Agile e la base della sua adattabilità.
Non solo sviluppo software
Nell’ultimo decennio le metodologie Agile sono andate oltre il vero e proprio processo di sviluppo del software. Ad esempio, l’intera gestione di un progetto può essere snellita grazie alle pratiche dell’Agile Project Management. Così come sono state accreditate le certificazioni sul tema Agile da parte dei maggiori istituti a livello internazionale come PMI (con Agile Certified Practitioner), APMG International (con AgilePM Certification) e Prince (con PRINCE2 agile, disponibile nella prima metà del 2015), oltre a quelle rilasciate dai rispettivi enti come la Scrum Alliance o il DSDM Consortium.
Chissà che concetti come flessibilità, adattabilità, responsabilizzazione e attenzione alle necessità degli altri, un giorno, non entrino a far parte anche della nostra vita reale.
3 risposte a "Introduzione ad Agile"