Preparando una serie di slide per i prossimi eventi, mi sono reso conto che il mondo dello sviluppo IT si sta letteralmente “popolando” di metodologie, pratiche e “buzzword” non sempre distinguibili e ben inquadrabili.
Tutto ciò rende estremamente difficile capire quale approccio convenga adottare per il contesto specifico e in cosa le varie opzioni si differenziano tra di loro, soprattutto se si decide di imbarcarsi nel pericoloso fai-da-te senza una chiara visione e strategia degli obiettivi di cambiamento che si vogliono raggiungere.
Lungi dal voler essere esaustivo, vediamo di inquadrare a grana grossa come relazionare tra loro i tre approcci che oggi sono adottati maggiormente nel mondo dell’IT per la gestione dell’Application Lifecycle Management: Lean, Agile e DevOps. Per fare ciò ci baseremo sulla figura seguente:
Lean & Agile & DevOps
Come si vede, alla base di tutto vi è Lean. Questo perché Lean è orientato all’ottimizzazione olistica dei processi e, nel caso di uno specifico prodotto, alla sua ottimizzazione end-to-end. Sui valori e sui principi Lean troviamo l’approccio DevOps, orientato al Deployment, ovvero alla consegna del prodotto (o soluzione che sia) al cliente. Nel ciclo DevOps, infine troviamo approcci e metodologie specifiche, a partire da Agile, nelle sue varie incarnazioni, fino alle pratiche di Customer Delivery e di Solution Delivery.
Tutte e tre gli approcci sono quindi indispensabili per ottimizzare l’intero flusso di creazione del Valore, perché nessuno di essi, individualmente, copre tutte le fasi annessi:
- Lean, è alla base di Agile e di tutte le pratiche moderne di creazione di Valore e ottimizzazione del flusso di lavoro
- Lean Startup e Running Lean si focalizzano sulla validazione applicata dell’idea di business e sulla verifica della sostenibilità economica delle iniziative annesse:
- Lean Change consente di approcciare al Change Management in chiave di micro-esperimento basati sul fallimento come strumento di apprendimento.
- DevOps, è focalizzato sulla creazione di una Cultura del Delivery in funzione del business piuttosto che una focalizzata sui dettagli tecnici
- Continuous Integration, Continuous Delivery e Continuous Deploy sono le fondamenta per creare una solida Agile Deployment Pipeline.
- Agile, è lo strumento principe per lavorare in chiave adattativo, velocizzando i feedback loop grazie a soluzioni incrementali e funzionanti
- Scrum ed XP sono le metodologie Agile più utilizzate, con Scrum orientato alla gestione del progetto ed XP all’implementazione.
In abbinamento a Lean, troviamo i framework di Agile@Scaling, Discipline Agile Delivery e Scaled Agile Framework in primis, pensati per offrire un set di strumenti consistenti che consentano di gestire prodotti di media e grande complessità, multi progetto e multi team.
Per maggiori dettagli sulle differenze primarie tra Agile e Lean, vi rimando a questo precedente post Lean e Agile, similitudini e differenze.
Per tutto il resto ci vediamo domani, 5-febbraio-2016, al DevOps@Works di Roma J