Dopo aver letto il libro sullo Unit Testing in C# e NUnit (già recensito su questo blog), la mia seconda lettura di testi della casa editrice Pragmatic Bookshelf si è concentrata su questo altrettanto maneggevole e leggibile libro, ormai non più recentissimo (risale a più di 3 anni fa).
Già dall’immagine di copertina, in cui si vede uno sviluppatore al lavoro avendo alle spalle la presenza di un angioletto e di un diavoletto tentatore,esprime visivamente l’argomento che viene trattato, ovvero le buone (e cattive) abitudini che dovrebbe (non dovrebbe) avere un programmatore software.
Per chi sa già a grandi linee di cosa parlo, tutto ciò rientra in quella disciplina, a metà strada tra la filosofia e la programmazione, che viene definita metodologia Agile.
Nata alcuni anni fa per opera di alcuni illuminati professionisti, ha riscosso molti proseliti in ambienti attenti a tutta una serie di buone “abitudini” affinché un progetto software venga portato a termine con successo.
Idealmente possiamo suddividerla in due famiglie, che hanno però molto DNA in comune, ovvero:
Extreme Programming (XP)
Scrum
Andy Hunt (uno dei fondatori della Pragmatic) e Venkat Subramaniam, gli autori di questo libro, girano il mondo per conferenze e seminari illustrando questi concetti e soprattutto questo stile di vita lavorativa per gli ambiti IT. Il secondo ha anche fondato un sito piuttosto interessante e degno di essere visitato: www.agiledeveloper.com
dove si possono trovare articoli in tema a quanto riportato in questo libro.
Negli Stati Uniti ed in altre nazioni evolute, questo paradigma della “buona programmazione” ha già preso piede, e viene valutato al pari delle nude e crude conoscenze tecniche. In Italia, purtroppo, siamo ancora agli inizi, e quasi sempre viene lasciato il compito di organizzarsi (e di organizzare) alla singola persona, con tutte le difficoltà del caso (acuite dalla tipica situazione italiana che vede lo sviluppatore come un consulente esterno in un’azienda cliente, che quindi ha poco o nulla potere di organizzare persone e ambienti).
Tutto lo scibile che gli autori presentano in questo libro è spalmato in 45 macro concetti ripartiti equamente nei 9 capitoli che compongono il libro. Anche se possono essere letti separatamente uno dall’altro, seguono un’invisibile filo ideale che li collega sequenzialmente, e quindi la loro lettura è consigliabile affrontarla come viene proposta nel libro, capitolo dopo capitolo nell’ordine loro assegnato.
Andy Hunt è anche uno dei 17 fondatori dell’Agile Manifesto (www.agilemanifesto.org), tutti personaggi di un certo rilievo che nel febbraio 2001 si sono riuniti al freddo di Snowbird (Utah) per discutere delle tecnologie allora emergenti nello sviluppo del software.
Riporto di seguito, data la loro importanza, i 4 cardini su cui si basa questo manifesto. Le parole sottolineate sono gli aspetti su cui le metodologie agili si basano.
The Agile Manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Come si vede l’accento è posto sulla collaborazione (sviluppatori e utenti), sul fatto che il software effettivamente funzioni come da attese, e sulla ricettività ai cambiamenti. Queste sono le idee cardine su cui si fonda l’approccio “agile”.
Dopo il breve primo capitolo introduttivo, in cui si spiega a grandi linee cosa si intende per “agilità” nello sviluppo del software, gli autori iniziano ad esporre, con dovizia di particolari e dettagli (anche personali), tutti gli aspetti, le abitudine e le “best practice” per riuscire a portare a termine con successo un progetto di sviluppo software utilizzando queste metodologie.
Ovviamente, chi dispone già di una certa esperienza come Dev, non tarderà a riconoscere alcune abitudini già consolidate nel tempo, fosse solo per il proprio buon senso o come lezione per errori su cui si è già passati.
E questo potrebbe condurlo a pensare: “Ma le metodologie agili sono qualcosa di veramente innovativo o è soltanto del normale buon senso applicato allo sviluppo del software?”.
Diciamo che si basano e utilizzano il saggio e comune buon senso come punto di partenza, ma tante altri fattori su cui poggiano – Unit Testing, Continuous Integration, Sprint, ecc. ecc. – non sarebbero nati senza dei germi di innovazione.
Altri spunti invece potranno risultare completamente nuovi anche per chi ne viste già tante, ed è soprattutto per questo che il libro assume un certa validità.
Anche se, essendo il numero di pagine inferiore alle 200, e il linguaggio scorre via come se si stesse leggendo un romanzo, consiglio di leggere questo libro in brevi sessioni di non più di un capitolo alla volta (che comunque non sono brevissimi).
Fermarsi quindi a riflettere su ciò che si è letto e cercare di capire come le idee espresse dagli autori si possono applicare nella propria vita professionale.
Chi non è di primo pelo inoltre, non farà fatica a riconoscersi spesso nelle situazioni personali raccontate dagli autori, e leggendo come uno sviluppatore “agile” si sarebbe comportato nelle medesime situazioni, aiuta molto ad imparare dai propri errori e a migliorarsi di volta in volta.
I paragrafi da tenere ben presenti sono quelli chiamati “Keep Your Balance”, costituiti da brevi e significative frasi che riassumono un po’ i comportamenti migliori, e le frasi suggerite dove c’è l’immagine dell’angelo custode.
Termina il libro una breve appendice di 6 pagine riportante alcuni siti utili come riferimento e una bibliografia ragionata.
Come spesso accade nei libri di questa casa editrice, come ultima pagina viene inserito un foglio cartonato staccabile riassumente tutti i sintetici consigli disseminati nei vari capitoli. Lo si può quindi staccare e tenerselo bene in vista sulla scrivania (o portarselo appresso, a mo’ di compendio, nei propri spostamenti).
Consiglierei comunque di rileggersi ogni tanto qualche capitolo, anche in ordine sparso. Ci vuole tempo per diventare “agili”, e – come è accaduto anche a me – ogni volta si scopre qualcosa di nuovo da aggiungere alla collezione delle proprie buone abitudini.
Inutile dire che questo libro costituisce una lettura più che consigliata per i Program Manager più evoluti, moderni ed attenti alla qualità del proprio gruppo ed ambiente di lavoro.
I pochi esempi di codice sparsi qua e là nel libro sono scritti in C#, e vengono riportati quando si parla della necessità di mantenere il codice semplice e leggibile.
L’inglese, come tipico di questa casa editrice e soprattutto dei libri di Andy Hunt, è parecchio colloquiale, e spesso si incontrano parole sconosciute anche per chi è avvezzo a leggere in lingua anglosassone. Consiglio perciò di tenere sottomano un dizionarietto alla bisogna.
Chi è davvero mezzo madrelingua non faticherà ad apprezzare l’estrema facilità di scrittura di questo autore, capace di tenere incollato al libro il lettore anche per ore.
Non mancano infatti i commenti ironici. Uno su tutti. Ad esempio, commentando il fatto che parecchi programmatori di età non più giovanissima siano diventati calvi, l’autore ci svela come in realtà la loro pelata non sia altro che un pannello solare per una macchina che scrive codice!
Esteticamente il libro si presenta bene: la carta utilizzata è grezza ma robusta, e la rilegatura molto flessibile e rende piacevole sfogliarne la pagine.
La sua dimensione ridotta rispecchia i dogmi agili: non utilizzare 4 parole per esprimere un concetto che ne necessiterebbe 2.
Questa è la pagina dedicata al libro
Non è però presente nulla di scaricabile (ahimè), e la pagina delle Errata è vuota (almeno attualmente, ma credo che lo resterà per sempre, dato che il libro ha superato i 3 anni di età).
Domani inserirò un post con i 45 punti conclusivi tradotti in italiano, in modo da poter aver sottomano le idee base di questo libro.
PRO
Ogni sviluppatore che abbia a cuore come migliorarsi, dovrebbe leggere questo libro, ricco di idee interessanti, facili da mettere in pratica, e portatrici di risultati sicuri e soprendenti. Questa è la metodologia “agile”, spiegata in un libro dalla lettura piacevole e scorrevole, aiutata da un’impaginazione ed una rilegatura all’altezza della situazione.
CONTRO
Nessuno in particolare.
Voto complessivo: 8.5/10
Lettore: Tutti
Summary
1 – Cap. 1: Agile Software Development
10 – Cap. 2: Beginning Agility
26 – Cap. 3: Feeding Agility
43 – Cap. 4: Delivering What Users Want
76 – Cap. 5: Agile Feedback
98 – Cap. 6: Agile Coding
128 – Cap. 7: Agile Debugging
146 – Cap. 8: Agile Collaboration
170 – Cap. 9: Epilogue: Moving to Agility
176 – Appendix A: Resources
Titolo: Practices of an Agile Developer
Autori: Venkat Subramaniam e Andy Hunt
Editore: Pragmatic
ISBN: 978-0-9745140-8-6
Pagine: 189
Prezzo: 13.64 £ (su Amazon) – 29,95 $ (prezzo di copertina)
Data di uscita: 04 Apr. 2006