La mia guida al programma dell’Agile Day 2010

Quest’anno il programma dell’Italian Agile Day è più ricco che mai. Vorrei poter seguire tutte le sessioni… e immagino che tutti i partecipanti abbiano questo dilemma. Per questo ho scritto alcune note per orientare chi magari non ha dimestichezza con tutti gli argomenti presenti.

Tipi di sessione

La maggior parte delle sessioni quest’anno sono di tipo frontale; cioè c’è un tizio che parla, gesticola e mostra delle slide sul proiettore, e il pubblico ascolta o al massimo risponde alle domande del tizio.

Ci sono però anche alcune sessioni di stampo più pratico: i famosi workshop. In un workshop il pubblico deve partecipare attivamente. Può essere molto faticoso ma è anche molto interessante. Le sessioni di tipo workshop quest’anno sono:

  • Agilità come evoluzione sistemica di Pierluigi,
  • Due uomini e una lavagna di Alberto,
  • Guelfi versus Ghibellini di Sergio,
  • The Dot Game di Alberto e Jacopo.

Il Dot Game è anche un gioco: c’è una lunga tradizione nel mondo Agile di giochi concepiti per imparare. Uno dei primi è stato lo XP Game di Pascal Van Cauwenberghe. Io l’ho organizzato decine di volte; penso che sia molto utile. Per approfondire: iscriviti a questa mailing list.

Alcune delle sessioni sono kata o performance di programmazione dal vivo (ne parlo più avanti.) Nella sessione BDD Live Show gli autori si dicono pronti a ricevere l’input dal pubblico nel caso si incontri un ostacolo imprevisto…

Tema: le soft skill

Molti sono attratti dal mondo Agile per le pratiche tecniche: il TDD, il Continuous Deployment, ecc. Ma le pratiche tecniche non sono sufficienti: il software lo fanno le persone, e le persone sono tutte diverse. Non solo diverse l’una dall’altra, ma anche diverse da un giorno all’altro :-)

Per lavorare bene in team bisogna coltivare le cosiddette soft skill. Le sessioni Note to managers: IT is different, get over it di Andrea Provaglio e la keynote di Paolo Perrotta parleranno del fattore umano nello sviluppo software.

Le sessioni Agilità come evoluzione sistemica di Pierluigi Pugliese, Guelfi versus Ghibellini di Sergio Berisso e The Dot Game di Jacopo Romei e Alberto Brandolini sono centrate su come lavorare in team.

Un tema che corre sotto tutte queste sessioni è che lo sviluppo software non assomiglia per niente alla produzione industriale. Anche parlare di “fabbricare” software è errato, a mio avviso. “Sviluppare”, “fare crescere” sono termini più appropriati. Lo sviluppo software assomiglia molto più al giardinaggio che alla manifattura.

Tema: Lean

Il Lean manufacturing è una corrente di pensiero che nasce e fiorisce in Giappone ed ha consentito alla Toyota di diventare il primo produttore di automobili nel mondo. Non lasciatevi ingannare dai problemi recenti per cui hanno preso in giro la Toyota; è come quando per una volta il primo della classe prende un brutto voto, e tutti gli asini gioiscono! Il pensiero Lean mette al primo posto la creazione di valore per il cliente. Da questo concetto apparentemente semplice nascono potenti conseguenze. (Per inciso, la manifattura occidentale mette al primo posto il profitto e una malintesa “produttività”; e i risultati sono sotto gli occhi di tutti.)

In una fabbrica Lean gli operai sono responsabili del loro modo di lavorare. Sono essi stessi che scrivono il manuale di operazione per le loro postazioni. I manager di una fabbrica Lean passano più tempo negli impianti che nei loro uffici. Al centro del Lean c’è il miglioramento continuo (kaizen). Leggi The Toyota Way per saperne di più.

Non so se da questo brutale sommario si capisce che c’è una profonda affinità fra Lean e Metodi Agili. Anche nei metodi agili il fondamento è la consegna di valore reale per il cliente. Anche nei metodi agili le persone sono l’asset più importante. Anche nei metodi agili si privilegiano la concretezza e lo sporcarsi le mani piuttosto che le gerarchie e le teorie tayloriste.

Uno degli strumenti usati dal Lean è il kanban, che è una maniera di limitare la quantità cose che sono contemporaneamente in lavorazione. Il kanban usato dagli agilisti prende la forma di un tabellone su cui il processo di lavoro viene visualizzato. Recentemente il Kanban (con la K maiuscola) è stato presentato come un metodo per introdurre l’agilismo in azienda. Al contrario di Scrum o XP, che sono in aperta rottura con il modo di lavoro corrente, il Kanban ha un’introduzione più “morbida”. Si inizia analizzando e visualizzando sul tabellone il metodo di lavoro corrente, identificando il “cliente”. Questo è il trampolino per introdurre il miglioramento continuo: si misura e si ottimizza il tempo che ci mette un task a passare attraverso il processo. Il vantaggio è che, almeno in prima istanza, non vengono minacciati gli equilibri esistenti. Leggi Kanban per saperne di più.

Le sessioni IAD dedicate al Lean e al Kanban sono

  • Scrumban, a methodology fusion, di Fabio Armani, che ha applicato in azienda una combinazione dei due metodi Scrum e Kanban.
  • Complexity vs. Lean (in inglese), di Jurgen Appelo, un consulente che pubblica un blog molto seguito.
  • La Lean Startup e il customer development model. In Italia. Di Nicola Junior Vitto. Il “Lean Startup” è un’applicazione dei principi del Lean alla nuova micro-imprenditoria. Leggi il blog di Eric Ries per saperne di più.
  • Lean e Kanban: la nuova rivoluzione Agile di Claudio Perrone. Claudio ci racconta la sua esperienza in Irlanda come agente di cambiamento.
  • The Dot Game. Una delle teorie affini al Lean è la Teoria dei Vincoli (Theory of Constraints) di Eli Goldratt. Sospetto che questa sessione (che consiste in un gioco) presenterà delle riflessioni legate a questo argomento. (Leggete The Goal, è un libro interessantissimo sia per la forma che per il contenuto.)

Tema: il Test-Driven Development

Il TDD, e la sua variante Behaviour-Driven Development (BDD) sono una pratica tecnica centrale per gli agilisti. Se vogliamo partire a sviluppare senza una fase iniziale di progettazione, e pretendiamo di riuscire a mantenere basso il costo di manutenzione dell’applicazione, dobbiamo essere in grado di progettare l’applicazione strada facendo. Altrimenti rischiamo di produrre il classico gomitolo di spaghetti, e quello che facciamo non è agile ma un becero code-and-fix.

Quindi, per raggiungere gli obiettivi dei Metodi Agili, ci serve una base tecnica solida. Il TDD è la tecnica base che ci permette di progettare l’applicazione in maniera incrementale e di fare evolvere il design. Per approfondire questi temi le sessioni Affiliamo i nostri strumenti: un test driver fatto in casa di Jacopo e The secret art of Agile Javascripting
di Luca.

Uno dei sotto-temi che si è sviluppato negli ultimi anni è quello delle abilità artigianali. Per sviluppare queste abilità, non c’è come la pratica! Così come i musicisti, i chirurghi, i cultori di arti marziali, anche gli sviluppatori possono imparare tantissimo dall’eseguire esercizi in maniera consapevole. La sessione di Roberto e Paolo, The BDD Live Show rientra in questo tema, e anche Code Kata Live di Gabriele, Antonio e Giordano. Se volete vedere all’opera questi artisti marziali del codice, potete vedere alcuni loro exploit su katacasts. Oppure partecipare a una serata in uno XPUG.

Per ora…

Ci sono altre cose che vorrei raccontare; altri temi che emergono quest’anno sono “come introdurre l’Agilità in azienda”, “Come misurare come stiamo andando”, più altri temi tecnologici come Javascript e NoSQL. Tempo permettendo posterò un seguito domani.

Leave a Reply