Lean Development: principi di base e best practice Introduzione all'approccio Lean Software Development, un sistema di principi e pratiche di sviluppo software basato sul pensiero snello e sulla riduzione degli sprechi

Lean Development: principi di base e best practice

Il Lean Software Development è una metodologia di sviluppo agile ispirata ai principi della produzione snella (nota anche come lean manufacturing o lean production), una filosofia produttiva che punta a minimizzare gli sprechi fino ad annullarli. Il termine è stato coniato all’interno dell’ omonimo libro scritto nel 2003 da Mary e Tom Poppendieck, due project manager molto attivi all’interno della Agile community, che contiene la descrizione dei principali approcci metodologici e strumenti operativi del sistema.

Il Lean Software Development si compone di sette principi base, tutti considerati estremamente importanti all’interno della comunità Agile.

#1. Eliminare gli sprechi

Tutto ciò che non aggiunge valore al cliente va considerato come uno spreco. Esempi di spreco: codice e funzionalità non necessarie, ritardi nel processo di sviluppo del software, requisiti incerti, burocrazia, lenta comunicazione interna.

#2. Amplificare l’apprendimento

Lo sviluppo del software è un processo di apprendimento continuo, quindi il training & learning on the job, nonché la condivisione delle informazioni (knowledge sharing) costituisce un obiettivo primario.

#3. Decidere il più tardi possibile

Come misura di mitigazione delle incertezze, tipiche dello sviluppo del software moderno, si favorisce un approccio basato sulle opzioni, rinviando le decisioni fino a quando non si acquisiscono dati sufficienti per poter correggere previsioni e ipotesi potenzialmente imprecise (data-driven decision).

#4. Consegnare il più velocemente possibile

In questo particolare momento storico, contraddistinto da cambiamenti rapidi e continui, la velocità è il punto di forza dello sviluppo: per questo motivo le iterazioni devono essere prodotte nel più breve tempo possibile, così da poter ricevere i feedback da inserire nella successiva; da questo si evince anche che, quanto più corte sono le iterazioni, tanto migliore sarà la formazione e la comunicazione all’interno del team, nonché lo sviluppo del prodotto.

#5. Dare potere al team

Adozione della tecnica work-out, in cui i ruoli tra dirigenti e operativi si invertono: i manager sono tenuti ad ascoltare gli sviluppatori ed apprendere da loro il know-how necessario per poter effettuare di volta in volta le scelte più efficaci, nonché fornire proposte di miglioramento.

#6. Costruire l’integrità

E’ importante che i clienti abbiano una percezione globale e ben definita del sistema (integrità percepita): come viene pubblicizzato, consegnato e distribuito, quanto è accessibile, quanto è intuitivo il suo utilizzo, quanto costa, quali problemi risolve e in che modo, etc.; inoltre, è importante che i singoli componenti del sistema funzionino bene insieme con un equilibrio tra flessibilità, manutenibilità, efficienza e reattività (integrità concettuale).

Per ottenere questi risultati è fondamentale il ricorso al refactoring, adottando un approccio che garantisca un miglioramento continuo (continuous improvement) e un sistema di rilasci frequente (continuous deployment) che consenta al software di evolvere in modo iterativo e veloce (continuous integration); è inoltre fondamentale adottare good practice di sviluppo (DRY – Don’t Repeat Yourself et sim.) che consentano di mantenere semplicità, chiarezza e un numero minimo di funzioni all’interno del codice durante i vari refactoring, nonché un paradigma di test automatizzati (continuous testing, testing automation) per ridurre i difetti e i bug di regressione.

#7. Visione di insieme

I sistemi software al giorno d’oggi non sono semplicemente la somma delle loro parti, ma anche il prodotto delle loro interazioni. I difetti nel software tendono ad accumularsi durante il processo di sviluppo: segmentando le varie funzioni in sotto-processi più piccoli (segmentation) e standardizzando le diverse fasi dello sviluppo (standardization) è possibile individuare ed eliminare le cause alla radice dei difetti. Questo è particolarmente vero nei sistemi complessi, dove più organizzazioni sono coinvolte nel suo sviluppo ed esistono numerosi team di sviluppo: in quei casi è importante anche stringere relazioni ben definite tra diversi fornitori, al fine di produrre un sistema con componenti che interagiscono senza problemi.

Modalità di adozione

Il pensiero snello, per essere applicato con successo all’interno di un gruppo di lavoro, deve essere compreso bene da tutti i membri del team.

“Pensa in grande, agisci in piccolo, fallisci velocemente; impara rapidamente”: questi slogan, presenti nel libro dei Poppendieck, riassumono bene l’importanza della comprensione del campo e l’idoneità dell’implementazione di principi snelli lungo l’intero processo di sviluppo del software:  i principi lean funzionano bene solo qunado sono implementati insieme, a patto di riuscire a sviluppare un sufficiente “buon senso” all’interno di tutto l’ambiente di lavoro coinvolto.

Conclusioni

Per il momento è tutto: ci auguriamo che questo piccolo approfondimento possa essere d’aiuto a chi ha deciso di avvicinarsi a questo interessantissimo e moderno set di good practice per lo sviluppo software.

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.