Lean software development
Il Lean Software Development è una traduzione della Produzione Snella (in inglese lean production o lean manufacturing) e dei principi e pratiche del Lean IT nel dominio dello sviluppo software. Adattato dal Toyota Production System, una sottocultura pro-lean sta rapidamente emergendo dall'interno della comunità Agile.
Origini
[modifica | modifica wikitesto]Il termine Lean Software Development ha avuto origine in un libro omonimo, scritto da Mary Poppendieck e Tom Poppendieck. Il libro presenta i tradizionali Principi Snelli in forma modificata, così come un insieme di 22 tool che vengono confrontati e comparati con le pratiche agili. Il coinvolgimento di Mary e Tom nelle comunity legate all'Agile software development, incluso la loro presenza come relatori a numerose conferenze Agili, ha fatto sì che tali concetti fossero più ampiamente accettati e condivisi all'interno della comunità Agile.
Principi Lean
[modifica | modifica wikitesto]Lo sviluppo Lean potrebbe essere riassunto da sette principi, molto vicini concettualmente a quelli della Produzione snella.
Eliminare gli sprechi
[modifica | modifica wikitesto]Tutto ciò che non aggiunge valore al cliente va considerato come uno spreco (muda). Questo include:
- codice e funzionalità non necessarie
- ritardi nel processo di sviluppo del software
- requisiti incerti
- burocrazia
- lenta comunicazione interna
Amplificare l'apprendimento
[modifica | modifica wikitesto]Lo sviluppo del software è un processo di apprendimento continuo con la sfida aggiuntiva dei team di sviluppo e delle dimensioni del prodotto finale. L'approccio migliore per migliorare un ambiente di sviluppo software è quello di massimizzare l'apprendimento.
Decidere il più tardi possibile
[modifica | modifica wikitesto]Dato che lo sviluppo del software è sempre associato con qualche incertezza, i risultati migliori dovrebbero essere raggiunti con un approccio basato sulle opzioni, rinviando le decisioni il più possibile fino a che non può essere effettuata sulla base di fatti e non su previsioni ed ipotesi incerte.
Consegnare il più velocemente possibile
[modifica | modifica wikitesto]Nell'era della rapida evoluzione tecnologica, non è il più grande che sopravvive, ma il più veloce. Quanto prima il prodotto finale viene fornito senza difetti considerevoli, tanto prima possono essere ricevuti i feedback, ed inseriti nella prossima iterazione. Quanto più corte sono le iterazioni, tanto migliore sarà la formazione e la comunicazione all'interno del team.
Dare potere al team
[modifica | modifica wikitesto]Per lungo tempo c'è stata un'opinione diffusa, nella maggior parte delle aziende, riguardo al processo decisionale per l'organizzazione: i dirigenti erano abituati a dire ai lavoratori come svolgere il proprio lavoro. Nella tecnica work-out, i ruoli si trasformano: ai manager si insegna ad ascoltare gli sviluppatori, in modo da poter essere in grado di spiegare meglio le azioni che possono essere adottate, nonché fornire proposte di miglioramento.
Integrità nella costruzione
[modifica | modifica wikitesto]Il cliente deve avere una esperienza complessiva del sistema - questa è la cosiddetta integrità percepita: il modo in cui viene pubblicizzato, consegnato, diffuso, accesso, quanto intuitivo è il suo utilizzo, il prezzo e quanto risolva dei problemi.
Vedere il tutto
[modifica | modifica wikitesto]I sistemi software al giorno d'oggi non sono semplicemente la somma delle loro parti, ma anche il prodotto delle loro interazioni.
Pratiche del Lean software
[modifica | modifica wikitesto]Le pratiche di sviluppo software Lean, o ciò che i Poppendieck chiamano "strumenti" sono espressi in modo leggermente diverso dai loro equivalenti nello sviluppo di software agile, ma ci sono degli evidenti paralleli. Esempi di tali pratiche includono:
- Vedere gli sprechi
- Value Stream Mapping
- Sviluppo basato sui Set
- Sistemi pull
- Teoria delle code
- Motivazione
- Misure & metriche
Alcuni di questi strumenti trovano facilmente riscontro nei metodi agili. Lean Workcells, per esempio sono espressi nei metodi agili come team inter-funzionali.
Voci correlate
[modifica | modifica wikitesto]- Kanban
- Just in time (produzione)
- Kaizen
- Lean Startup
- Toyotismo
- Yasuhiro Monden (1998), Toyota Production System, An Integrated Approach to Just-In-Time, Third edition, Norcross, GA: Engineering & Management Press, ISBN 0-412-83930-X.
- Mary Poppendieck, Tom Poppendieck (2003), "Lean Software Development: An Agile Toolkit", Addison-Wesley Professional, ISBN 0321150783
Collegamenti esterni
[modifica | modifica wikitesto]- Poppendieck LLC website - sito di Mary e Tom Poppendieck (in inglese)
- Intervista con Mary Poppendieck (in inglese)
- Lean Software Institute, su leansoftwareinstitute.com.
- Introduzione al Lean Software Development Archiviato il 23 agosto 2010 in Internet Archive. - H. Kniberg (in inglese)
- Mary Poppendieck, Tom Poppendieck Lean Software Development: An Agile Toolkit for Software Development Managers
- Lean-Agile Straight Talk A podcast hosted by author Jim Trott and featuring author Alan Shalloway about Lean Software Development and Agile Software Development.
- Lean Integration[collegamento interrotto] A white paper from the Integration Consortium on the use of Lean methods in systems and data integration.
- Improving Agile through Lean, or The Essence of Lean Software Development Insights into Lean Software Development from projects, and implementation notes around extending Agile through Lean.
- InfoQ.com / Agile (includes Lean) - Tracking change and innovation in the enterprise software development community (News, Articles, Books, Video)
- Lean-Agile-Scrum - a discussion group for those interested in how Lean, Agility, and Scrum work together
- Lean Programming - a discussion group for those interested in programming in Lean Software Development environments
- Article: Lean Primer: Introduction (PDF), su leanprimer.com.
- Lean Startup Business Model Pattern - Lean software development principles applied to business models and entrepreneurship