Inauguriamo questo nuovo anno con un post “chiarificatore”, utile per poter affrontare nei prossimi interventi i temi relativi al mondo Lean Startup e Lean Software Development.
Quando parliamo di Agile, spesso utilizziamo anche l’appellativo Lean come sinonimo di un approccio moderno alla gestione dei progetti e, in ambito @Scaling, alla gestione aziendale e alla gestione dei relativi processi. In effetti, nonostante Lean e Agile siano mondi distinti e ben strutturati che si intrecciano spesso perché entrambi prediligono la Customer Satisfaction e la massimizzazione del Valore, non è così immediato avere un’idea delle relative differenze e similitudini.
Lean ha origine nel Paese del Sol Levante presso la Toyota con il nome di Toyota Production System (TPS). Le sue basi vengono sviluppate da Taiichi Ohno e Shigeo Shingo durante gli anni ’50, ma solo negli anni ’90, grazie al libro “The Machine That Changes the World, Lean Thinking and Lean Solutions” di James Womack and Daniel Jones, esso viene concettualizzato nella sua accezione odierna sotto il nome di Lean, consentendo alle aziende di adottarlo in modo strutturale.
Agile è decisamente più giovane: la sua origine è databile agli inizi del 2001 (febbraio) quando un pool di esperti di sviluppo software danno vita al famoso Manifesto, che ne definisce i Valori ed i Principi portanti, pensato per un nuovo approccio in contrapposizione a quello che comunemente viene indicato come document-driven software development. Agile non definisce comunque una metodologia specifica, ma un set di elementi comuni che vanno a caratterizzare le sue diverse declinazioni come, ad esempio, Extreme Programming, Scrum, Adaptive software development, Feature driven development, ecc..
Già da queste poche righe emerge una differenza fondamentale: Lean nasce in ambito manifatturiero per poi proporsi come possibile soluzione per migliorare i processi aziendali. Agile nasce specificatamente per il mondo dello sviluppo software:
Focus | Settori | Tool Kit | |
Lean | Approccio olistico per rendere un’organizzazione o un processo più efficace ed efficiente. Lean è assimilabile a una filosofia operativa che abbraccia un forte cambio culturale supportato da una serie di tool di comprovata efficacia. | Fortemente eterogenei tra di loro, prediligendo un contesto basato su processi stabili. | Value Stream Mapping (VSM), Waste Analysis, Kanban, Heijunka, Jidoka, Multitasking, Supermarket, Visual Management, Empowerment, ecc. |
Agile | Basato su una serie di Valori e Principi che guidano la creazioni di soluzioni nell’ambito dello sviluppo software. | Contesto con un alto tasso di incertezza e forte complessità. Specificamente pensato per aumentare la qualità e la velocità di consegna delle soluzioni software. | Molti dei tool utilizzati in Agile sono diretta derivazione di Lean: Kanban, Empowerment, Visual Management, ecc. |
E’ possibile quindi affermare che esistono diversi punti di similitudine, soprattutto se si abbraccia la specifica declinazione di Lean per il mondo software: Lean Software Development, proposta da Mary e Tom Poppendieck. Senza voler entrare (almeno in questo contesto) nello specifico, possiamo provare a mappare quello che è il tipico worklfow di esecuzione di un’iterazione Agile con le relative tecniche Lean:
Agile Workflow & Lean Techinques
La prima fase è quella di Planning durante la quale il Team Agile è impegnato nella creazione/review del Product Backlog e dell’Iteration Backlog per l’iterazione in start. In tale fase troviamo le seguenti tecniche Lean:
- Specify Value: identificare e capire cosa rappresenta un reale Valore per gli stakeholder, ovvero per i Clienti. In questa attività il lavoro principale è svolto dal Product Owner, mentre il Product Backlog rappresenta lo specchio delle necessità del cliente;
- Quality at Source: ricercare la qualità in tutti i suoi aspetti al fine di creare prodotti/servizi privi di difetti. Un Team Agile seleziona per la prossima iterazione solo le feature di cui ha compreso i requisiti, rimandando ad ulteriori approfondimenti le altre. La selezione avviene, ovviamente, sotto la governance del Product Owner;
- Implement Pull: la produzione è “tirata” dal cliente e non realizzata in funzioni a previsioni di mercato. Nell’Agile i Work Item sono espressione diretta delle esigenze del cliente, sempre sotto la responsabilità del Product Owner;
- Empower the Team: il Team è autorizzato a prendere decisioni e ha responsabilità diretta di ciò che accade nello stream di produzione. Il Team Agile è autorizzato a selezionare i Work Item che ritiene di poter completare nella successiva iterazione ed è responsabilizzato nella risoluzione delle problematiche annesse al relativo sviluppo.
La fase di Execution è la fase core di sviluppo Agile. Qui troviamo applicate un insieme notevoli di tecniche prese “in prestito” da Lean:
- Identify Waste: tutto ciò che non produce valore per il cliente è spreco, e come tale va rimosso. Agile abbraccia fortemente tale aspetto, fin dai suoi Valori fondamentali: solo ciò che è importante per il cliente va realizzato, il resto è inutile;
- Do visual management: l’utilizzo di strumenti visuali è fortemente incoraggiato al fine di avere una visione rapida e sintetica dello stato corrente. Agile fa proprio tale aspetto, basti pensare alla onnipresente task board nelle varie forme;
- Establish Kanban: Kanaban è il lean tool utilizzato per guidare la produzione in un’ottica pool, limitando il work-in-progress. In Agile non è raro trovare l’utilizzo di una Kanban Board per gestire le fasi di sviluppo/test/verifica;
- Organize the Workplace: la corretta organizzazione degli ambienti di lavoro è un altro caposaldo de Lean, riassunto dalla tecnica “5S” e finalizzata a creare un workplace efficiente, efficace e stimolate. In questo caso Agile è meno prescrittivo, prediligendo un Team che lavori a stretto contatto, possibilmente in aree adiacenti, ma non indicando alcuna pratica specifica per la sua organizzazione.
La fase finale è quella di Delivery, in cui il prodotto viene consegnato al cliente:
- Understanding value for customer: l’obiettivo finale di Lean è la Customer Satisfaction, sfruttando i feedback per guidare le modifiche al sistema produttivo e al prodotto stesso. In modo del tutto analogo, Agile coinvolge costantemente gli stakeholder durante tutta la fase di sviluppo del sistema, contemplando, inoltre, a fine iterazione, una specifica Iteration Review, in cui viene presentato al key stakeholder (cliente) l’ultimo incremento realizzato e vengono raccolti i feedback in modo da adattare di conseguenza il Product Backlog per le successive iterazioni;
- Amplify Learning: una Lean Company è un’azienda che apprende continuamente e costantemente, evolvendosi in funzione delle reali necessità del cliente. Tale apprendimento avviene a tutti i livelli, singolarmente e nell’insieme delle funzioni. Allo stesso modo, Agile incentiva l’apprendimento costante tecnico/tecnologico/metodologico, prevedendo, inoltre, una cerimonia di fine iterazione denominata Iteration Retrospective focalizzata sulla crescita del Team.
Come si vede le similitudini sono tante e Agile sembra avere molto in comune con Lean, il che ci porta ad affermare che nel mondo dello sviluppo software:
è praticamente impossibile parlare di Agile e Lean in modo disgiunto, contemplando concetti e metodologie complementari con il comune obiettivo di incrementare il Valore e la Qualità della soluzione realizzata, abbattendone il tempo ed i costi di realizzazione.
Lean and Agile, similitudini e differenze