Metodologie Agile e Lean

ABBIAMO ABBRACCIATO LE METODOLOGIE AGILI E LEAN

Scrum certified

 

 


 

 

AGILE PROJECT MANAGEMENT

“Tutto cambia nel software. I requisiti cambiano. La progettazione cambia. Gli aspetti commerciali cambiano. La tecnologia cambia. I componenti del team cambiano. Il problema non è il cambiamento, di per sé, perchè i cambiamenti avverranno; il problema, piuttosto, è l’inabilità di far fronte ai cambiamenti quando essi avvengono”, KENT BECK

 

Spot metotologie agili
Autore: VersionOne, Inc.

LE METODOLOGIE AGILI MASSIMIZZANO IL RITORNO DI INVESTIMENTO, POICHÈ ACCELERANO LA REALIZZAZIONE DEL “VALORE DI BUSINESS” E GARANTISCONO FLESSIBILITÀ PER GESTIRE I CAMBIAMENTI

Nel 2007, durante uno dei nostri brainstorming, abbiamo iniziato a discutere di metodologie agile e dell’opportunità di adottare questo modello, per gestire i progetti in modo alternativo rispetto al tradizionale Waterfall [1].

Questa opzione prese così tanto piede che il 23 Novembre 2007 decidemmo di partecipare al nostro primo “Italian Agile Day” [2], la conferenza gratuita dedicata ai metodi Agili per lo sviluppo e la gestione dei progetti software. Dopo questa esperienza, decidemmo definitivamente di aderire ai principi alla base del Agile Manifesto, pubblicato nel 2001 proprio da coloro che, ancor oggi e per tutta la nostra storia professionale, ci ispirano nella scelta delle più potenti tecnologie e modelli di design.

Stavamo passando dal modello predittivo a quello adattivo, quest’ultimo focalizzato sulla capacità di adattarsi rapidamente al mutare della realtà: la metologia di Sviluppo Agile, grazie al suo approccio iterativo ed incrementale [3], consente di ridefinire la direzione verso cui deve muoversi del progetto durante l’intero ciclo di vita del software, in contrasto con quanto previsto dal precedente modello di gestione dei progetti Waterfall.

Certificazioni:

Nel 2011, un’importante collaborazione ci ha permesso di apprendere molti segreti della metodologia di sviluppo Agile:

Logo thoughtworksQuando iniziammo a lavorare per Gruppo PAM, quest’ultima ci chiese di unirci ai team di Thoughtworks per avviare il processo di re-ingegnerizzazione delle applicazioni più importanti per il business (allora sviluppate con una soluzione proprietaria, ideata dal precedente fornitore).

Thoughtworks® è uno dei principali player nel settore dell’information technology. Si descrivono in questo modo: “una comunità di individui appassionati il cui scopo è quello di rivoluzionare la progettazione, la creazione ed il rilascio del software, favorendo al contempo un cambiamento sociale positivo” [4]. Martin Fowler, uno dei nostri grandi mentori, ampiamente riconosciuto come uno dei più importanti fondatori dei metodi agili, lavora come Chief Scientist presso ThoughtWorks!

Questa esperienza ci ha permesso di apprezzare i vantaggi derivanti dalla gestione agile dei progetti, vedendola applicata in un contesto decisamente critico.

Oggi, lavoriamo con i nostri clienti in modo aperto e onesto, concentrandosi solo sulle soluzioni e non sui problemi. Fin dall’inizio di un progetto software, creiamo gruppi di lavoro collaborativi, che comprendono a pieno titolo i nostri clienti, in quanto esperti del dominio e destinatari del sistema che stiamo realizzando. Amiamo descrivere ogni situazione in modo chiaro e trasparente, per dare al cliente la possibilità di stabile in modo consapevolmente (e rivedere in qualunque momento), lo scope, il budget e le scadenze del progetto.

 


 

 

LEAN THINKING

“Tutto quello che dobbiamo fare è concentrarci sulle tempistiche, dal momento in cui riceviamo un ordine fino a quando incassiamo il pagamento, e fare di tutto per ridurle, eliminando le attività prive di valore aggiunto”, TAIICHI OHNO

“Il tipo di spreco più pericoloso è lo spreco che non riconosciamo”, SHIGEO SHINGO

 

Spot metodologie leanLAVORIAMO PER RIDURRE LO SPRECO, MENTRE CIÒ CHE GUIDA I NOSTRI PROGETTI È IL “BUSINESS VALUE”

Una grande opportunità per traguardare gli obiettivi del cliente e ridurre al contempo i costi

Il Lean Software Development è una traduzione della Produzione Snella (in inglese lean production o lean manufacturing) e dei principi e pratiche delLean IT nel dominio dello sviluppo software.” [5].

Abbiamo iniziato a discutere di Lean nel 2011, illuminati dalla lettura del libro “Lean Software Development: An Agile Toolkit”, scritto da Mary and Tom Poppendieck [6].

Il Lean Thinking è una strategia operativa nata in Toyota negli anni ’80, ma oggi viene universalmente applicata in settori e ambiti diversi per aumentare l’efficienza della produzione (nel nostro caso di software) ed eliminare gli sprechi, cioè tutto ciò che non porta valore aggiunto al cliente.

Il cosiddetto “Toyota Way”, sinonimo di Lean, si basa fondamentalmente su due concetti: profondo rispetto per le persone (che possono essere i lavoratori, i partners oppure i clienti) ed il continuo miglioramento.

La Standish Group, nel loro “The CHAOS Chronicles, 2013” [7], relativamente ai progetti software, riporta i seguenti risultati:

 

2004 2006 2008 2010 2012
SUCCESSO (on time, on target, on budget) 29% 35% 32% 37% 39%
CONTESTATO (per sforamento dei tempi e/o del budget, incompleto) 53% 46% 44% 42% 43%
FALLITO (interrotto prima del termine o mai usato) 18% 19% 24% 21% 18%

Per aiutarci a rimanere nella prima linea del report, abbiamo adottato i seguenti 7 principi del Lean Software Development:

  • Genchi Genbutsu (“Andare alla fonte”): Questo è un principio critico e fondamentale, molto spesso sottovalutato. È stato indicato come il primo fattore di successo per il continuo miglioramento. “Andare alla fonte”, cioè recarsi lì dove il cliente utilizzerà il prodotto commissionato, è necessario per decidere quali siano le decisioni giuste da prendere, raccogliere consensi e raggiungere gli obiettivi prefissati. Il management non dovrebbe mai limitarsi ad analizzare i report ricevuti o fare riunioni con altri manager, ma dovrebbe, invece, andare sul posto del lavoro e guardare con i propri occhi per scoprire e capire i veri bisogni del cliente, in modo tale da rendere il processo migliore;
  • Kaizen (“Miglioramento continuo”): Il Kaizen è una strategia di management giapponese che significa miglioramento lento e continuo, che coinvolge l’intera struttura aziendale: si tratta di un credo che si basa sulla convinzione che tutti gli aspetti della vita possano essere costantemente migliorati. Deriva dalle parole giapponesi “Kai” che significa “continuo” e “Zen” che significa “miglioramento”. Nell’ambito del software, ciò significa che non si deve guardare soltanto una piccola fase ma il processo di sviluppo per intero per non creare disomogeneizzazione interna o dei colli di bottiglia (per esempio gli sviluppatori più veloci dei tester);
  • Rispetto per le persone: “L’essenza del sistema della Toyota è che viene data l’opportunità a ciascun impiegato di trovare i problemi nel suo modo di lavorare, di risolverli e di fare miglioramenti”, Wakamatsu – Toyota;
  • Eliminare gli sprechi: Nello sviluppo software Lean, l’obiettivo principale è quello di eliminare gli sprechi che non danno valore aggiunto al soddisfacimento del cliente nell’arco di tutto il processo. Per eliminare gli sprechi bisogna riconoscere ciò che assicura realmente valore aggiunto (quello che vuole effettivamente il cliente) e quello che invece non lo fornisce. Tutto quello che non serve o non viene usato dal cliente è in pratica uno spreco: è statisticamente provato che un utente utilizza per la maggior parte del tempo soltanto una piccola parte delle funzionalità totali a disposizione.“Un tipico sistema è costituito per il 64% da funzionalità usate raramente o del tutto inutilizzate, il che suggerisce che il terreno più fertile per il miglioramento della produttività dello sviluppo software stia nel non implementare funzionalità non necessarie.”, Jim Johnson – The Standish Group;
  • Creare conoscenza: Lo sviluppo del software è un processo di creazione della conoscenza e il modo migliore per crearla è quella di avere un continuo riscontro con la valutazione da parte dell’utilizzatore finale, che può significativamente aiutare a realizzare un prodotto migliore e di successo. Le aziende dovrebbero dedicarsi di più alla ricerca e quando, durante lo sviluppo, riescono a scovare qualcosa di innovativo che fa progredire l’azienda stessa, devono renderlo parte integrante della conoscenza di base (Knowledge base) e condividerlo con i colleghi. Questo è importante soprattutto per facilitare il lavoro per prodotti futuri.
  • Rinviare le decisioni in sistemi di schedulazione pull: “Pull” indica just-in-time cioè fare una determinata cosa nel momento in cui è necessaria. Ciò significa che il lavoro stesso e la scadenza della consegna non vengono imposti dall’esterno ma dal team che si impegna nella sua realizzazione. Vista la rapidità con cui i requisiti e i bisogni del cliente variano, è preferibile posticipare il più possibile, all’interno delle iterazioni, le decisioni importanti e/o irreversibili per l’avanzamento dello sviluppo in modo da avere il maggior numero di informazioni possibili per evitare di intraprendere strade sbagliate.
  • Consegna rapida: Le aziende che riescono a essere competitive sulla base delle tempistiche hanno un grande vantaggio: hanno eliminato una quantità enorme di sprechi ed è risaputo che gli sprechi costano. Inoltre, un’alta velocità nello sviluppo sottende implicitamente un’elevata qualità. L’obiettivo finale è la definizione di un processo standardizzato, in modo da rendere più semplice possibile la consegna software.

 

 

CITATIONS:

  • KENT BECK : http://it.wikipedia.org/wiki/Kent_Beck
  • TAIICHI OHNO : http://it.wikipedia.org/wiki/Taiichi_Ohno
  • SHIGEO SHINGO : http://en.wikipedia.org/wiki/Shigeo_Shingo
  • YOSHIHITO WAKAMATSU : recuperato da “The Toyota Way”, Jeffrey Liker
  • JIM JOHNSON : http://www.standishgroup.com/about/management_team.php

REFERENCES:

1. http://it.wikipedia.org/wiki/Modello_a_cascata
2. http://www.agileday.it
3. http://it.wikipedia.org/wiki/Modello_incrementale
4. http://www.thoughtworks.com/about-us
5. http://it.wikipedia.org/wiki/Lean_software_development
6. http://www.poppendieck.com
7. http://versionone.com/assets/img/files/ChaosManifesto2013.pdf