Il panorama nebbioso della terminologia ambigua

DevOps oppure Agile? Ma sono la stessa cosa? Che c’entra Lean?… il nostro mondo è un mondo che sembra amare la confusione, fattore che, unito alla complessità tipica dei problemi affrontati, porta ad un panorama nebbioso che sembra non diradarsi mai.

La tendenza è ormai ventennale, tant’è che gli stessi autori di Scrum utilizzano spesso la Teoria dei Giochi per descrivere il proprio framework, mettendone in evidenza i principi di equilibrio e muto interesse. Tutto bello, ma possibile che non riusciamo a trovare un modo sintetico per raccontarlo a chi vuole andare diritto al sodo?

Stesso problema per Deploy e Delivery: cosa li differenzia? Da un lato, fino a qualche anno fa, si parlava di Deploy per indicare il rilascio fino agli ambienti di pre-produzione, mentre la Delivery era il rilascio finale in produzione. Ok, ma in fondo cosa cambia da un punto di vista tecnico? Probabilmente ben poco e se si automatizza l’ultimo miglio (dalla Continuous Integration al Deployment in produzione) tendenzialmente niente.

Ecco che quindi oggi, con l’ascesa di DevOps, il Delivery viene ricondotto al più nobile significato contemplato in Lean, ovvero la produzione continua di Valore per il cliente…. interessante, ma… un attimo… ricordiamoci del primo principio dell’Agile:

La nostra massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua”

hmmm… praticamente dice la stessa cosa…siamo di nuovo punto e a capo!

Anche le pratiche che vengono definite di DevOps sono riconducibili all’Agile: si pensi alla Continuous Integration, Pratica di Extreme Programming.

Provando a cercare qualche suggerimento in letteratura, un post di Sakshi Gaurav propone una interessante lettura di DevOps rispetto all’Agile, secondo la quale:

            “DevOps è una pratica, laddove Agile è un Processo”

presentando un’infografica che mette a confronto le due affermazioni.

devops to agile infographics

Ora, per quanto è vero che, comunemente, Agile viene associato agli aspetti di sviluppo, mentre DevOps a quelli di rilascio, se si legge il tutto in chiave Lean, dove è importante ragionare in termini di Value Stream e di organizzazione complessiva e non locale, qualcosa sembra non tornare in questo… e anche i framework di Scaling mixano il tutto.
Quindi DevOps non può essere ricondotto solo a “pratiche e tool”, ma ad una visione complessiva che coinvolge anche team terzi (differenti da Dev e Ops) ma comunque funzionali alla creazione di una Soluzione Consumabile, così come enfatizzato da Disciplined DevOps.

La definizione che spesso mi piace utilizzare è che “DevOps è la declinazione più efficace di Lean applicato al mondo del Software”, una sorta di Lean Software Development 2.0, in cui i tool hanno un forte impatto perché ormai maturi a supportare l’automazione dell’ultimo miglio ma il tutto è sempre funzionale ad obiettivi di business. Si parla quindi di Work Center e, in quest’ottica, Dev e Ops sono il fulcro delle attività, con Dev che utilizza gli approcci Agili ben consolidati, estendendoli ad Ops, e Ops che si occupa di creare l’infrastruttura a supporto per il deployment (fino in produzione) e garantire l’affidabilità dei servizi, condividendoli con Dev.

Se poi vogliamo completare il discorso… beh… un po’ di Design Thinking può esserci di aiuto per la fase di Inception e per tirare giù nuove idee e Lean StartUp per validarle velocemente rispetto ai potenziali clienti… ma di questo parleremo prossimamente.

Stay tuned J

Comments are closed.