Agile è… non dire mai “ci pensi tu”

Un committente crede che tu ed il resto del tuo team di sviluppo possiate semplificare per delega, grazie ai metodi agili, il suo lavoro. Lui crede che possiate prendere il suo canovaccio, espanderlo nei dettagli, metterlo in piedi e portarlo pronto in tavola. Molti credono – come lui – che i metodi agili siano uno stupendo scenario in cui sponsorship illuminate da un’idea fulgida possano premere il pulsante rosso di veloci e precisi missili fire-and-forget che andranno a colpire il bersaglio del successo senza ulteriore necessità di azione e pensiero, certe volte addirittura senza alcun rischio d’impresa, “tanto facciamo tutto agile, no?”

A questi diluitori di significato, ricordo che da queste parti si predilige la collaborazione col cliente piuttosto che stare lì ad aspettare che i contratti vengano impugnati inesorabilmente da una delle parti contro l’altra e che invece sarebbe bene giocare allo stesso tavolo dall’inizio alla fine del progetto senza stare lì a sostituire la voglia di lavorare con deleghe e regolette, perché la prima serve comunque, le seconde non funzionano e le terze nessuno le ha ancora trovate.

La forma mentis è la stessa di chi dice che l’agile tutto sommato è solo buon senso riorganizzato rivelando a chi ascolta solo una grave superficialità nel parlare di una mentalità che offre parecchi punti di vista a volte persino controintuitivi.

Ecco, il buon senso: farebbe bene a farne uso un committente del genere e nel frattempo cercarsi un altro team, un’altra metodologia. Di sicuro un altro coach.

December 21 2010 | Dalle trincee | 4 Comments »

Dei dubbi, delle certezze, della crisi e della crescita.

Dopo aver affrontato il tema dello stile di coaching con Federico Galassi, Stefano Leli e Gabriele Lana durante la cena pre-IAD 2010 e risollecitato da un recente, recentissimo thread della mailing list SIAgile, in cui la discussione avviata da Pino riguardo i pattern SOLID ci ha portato a discutere di crescita personale, evangelizzazione, didattica costruttiva, didattica distruttiva, regole e principi ho pensato di scrivere qualcosa su questo sempre più avaro blog. Alla fine ruota tutto attorno alla questione: è utile imparare a seguire regole ed affermarle e riaffermarle in seno ad un percorso (auto)didattico? In questo post intenderò mostrarti perché a mio avviso la risposta sia un SOLIDo[1] “sì”.

continue reading »

December 08 2010 | Esperti | 18 Comments »

Checklist e approccio lean in barca

Gentilmente sollecitato insieme ad Alessandro da Matteo eccomi qui a raccontare qualcosa sull’impiego di checklist nel nostro team… di regata. Partiamo dal problema: come assicurarsi che in ogni fase della regata, a cominciare dall’allestimento della barca, le azioni necessarie vengano eseguite? Come garantire che vengano eseguite nell’ordine corretto? Come prevenire vuoti di memoria, potenzialmente pericolosi?

continue reading »

October 16 2010 | Uncategorized | 8 Comments »

Lean e-xtrategy

e-xers

Sono di ritorno da una splendida due giorni passata lavorando con i ragazzi di e-xtrategy pensata per svolgere una retrospettiva su un progetto appena concluso, che ho avuto modo di seguire sin dall’inizio. Inutile dire che l’esperienza è stata formativa per me almeno quanto lo è stata per loro, che mi offrono sempre grande fiducia e libertà di svolgere le nostre analisi, senza sovrastrutture inutili, senza pregiudizi e senza la pretesa di dover nascere imparati, né io né loro.

I topic emersi e sviscerati sono stati diversi e purtroppo qui in questa sede posso solo riassumere i maggiori: kanban, value stream map, automatizzazione dei test e agile ux.

Kanban

Il problema immediatamente emerso dalla retrospettiva è stato quello di gestire le attività dell’azienda che non producono valore diretto per il cliente ma che vanno in ogni caso raccolte, valutate, inserite in una coda di priorità. Per tutti questi task la necessità di un punto di gestione concorrente e la possibilità per lo staff di e-xtrategy di lavorare in uno spazio di aperto e condiviso (elegantissimo peraltro n.d.r.) ha fatto emergere in pochi brevi passaggi l’adozione del kanban. Il kanban, lo scrivo brevemente a beneficio dei neofiti, è sostanzialmente una lavagna dove viene tracciato secondo poche ma ben determinate regole lo stato dei diversi task, abilitando il team ad una modalità di lavoro

  1. concorrente, dove sono ridotti al minimo gli stati di attesa per svolgere il proprio lavoro
  2. pull, dove si annulla la necessità di una figura responsabile dell’erogazione del lavoro da svolgere
  3. trasparente, dove ognuno sa e può sapere cosa sta facendo l’azienda nel suo insieme in un dato momento.

Abbattimento della burocrazia, trasferimento del controllo verso il basso e tracciamento di tutte le attività sono il cuore di questa soluzione.

Kanban in salsa marchigiana

'Porta' può essere tradotto dal marchigiano in questo contesto come 'Done' :-)

Value stream map

Sempre nell’ottica di individuare con precisione le attività che producono valore diretto per il cliente e distinguerle dalle attività accessorie abbiamo fatto ricorso alla mappatura del flusso del valore, che permette di individuare quali punti del processo ostruiscano la consegna del valore stesso al cliente. Come attività complementare abbiamo stabilito un ranking delle attività interne all’azienda secondo l’importanza percepita dal cliente rispetto al valore consegnato. Questo ranking è stato utile per capire in maniera più oggettiva quali siano le attività su cui cercare di tagliare i costi.

Interessante a dir poco, in un’azienda che passa la gran parte del tempo a scrivere codice PHP per consegnare siti web più o meno complessi, l’attività di scrivere PHP risulta essere fra le meno rilevanti per il cliente finale, quindi fra le meno dense dal punto di vista del valore consegnato. In sostanza una prova a posteriori di quanto sostengo da un bel po’: il codice è un mezzo, mai l’obiettivo.

Automatizzazione dei test

Per stabilire un punto di incontro oggettivo che stabilisca l’impalcatura di lavoro per il maggior numero di persone possibile all’interno dell’azienda si è stabilito di far attecchire i test funzionali una volta per tutte, incarnati da Selenium – nelle sue nuance Selenium RC per PHP e Selenium IDE. Il workflow per ora ipotizzato – perché solo dopo qualche settimana o mese di riscontri se ne potrà stabilire la bontà assoluta e relativa ad e-xtrategy – vede lo specialista XHTML/CSS produrre test funzionali di alto livello basati sui prototipi scritti in XHTML (vedi sotto) usando Selenium IDE – che permette di scrivere i test semplicemente usando il browser -  e poi una serie successiva di raffinamenti nelle fasi di sviluppo in cui i programmatori PHP con Selenium RC possono integrare gli stessi test in PHPUnit.

Interaction design (più) agile

Ale inizia a scrivere l'html del wireframe
Le intraprendenti decisioni prese dal team e-xtrategy in quei due giorni sono state argomento di discussione anche al di fuori delle mura e-xtrategy con commenti dei soliti noti ad un post di Alberto – Ilaria Mauric compresa, interaction designer di e-xtrategy. L’obiettivo che condivido con il team e-xtrategy in questo frangente è quello di mitigare, se non risolvere, il problema posto dall’integrazione di un team UX con un team di sviluppo. Dopo i primi esperimenti negli anni scorsi, infatti, i principali interaction designer con cui ho collaborato hanno rivisto al ribasso il loro entusiasmo per i metodi agili e si sono arroccati dietro un “per la progettazione il waterfall è inevitabile”, nonostante i pochi esperimenti fatti avessero lasciato soddisfatti tutti i team coinvolti – intesi nel loro senso più eterogeneo. Ovviamente, poi ho capito, per le aziende specializzate in interaction design il discorso ha senso: perché impelagarsi ad integrare il mio metodo con quello di chi sviluppa se il mio business è esclusivamente basato sulla progettazione?

E-xtrategy però presenta una situazione diversa in cui la multidisciplinarietà del team interno è elevata e in cui quindi una metodologia agile integrata ritorna immediatamente di altissimo interesse. Interaction designer, visual designer, sviluppatore XHTML/CSS e sviluppatori PHP, poiché a stretto contatto, possono condividere molto spesso i loro semilavorati e perfino lavorarli in pair cross-funzionali!

Il succo insomma sta nel ridurre al minimo l’approccio fornitore-cliente che vuole – per fare un mero esempio – che l’interaction designer sviluppi un wireframe che poi venga traformato in prototipo che poi venga passato al visual designer che poi passi il template al programmatore XHTML/CSS che poi passerà il lavoro finale alla gente del PHP, in una lunga serie di piccoli waterfall. Con alcuni accorgimenti è possibile circoscrivere molto la necessità di una progettazione upfront: sviluppato un prototipo XHTML molto simile al wireframe, si comincia a scrivere test funzionali per garantire che quel wireframe-ormai-prototipo sia la base di tutto il lavoro successivo per tutto il team. Si fa in modo insomma che il wireframe venga sugellato dai test automatici come il codice eseguibile, con un immenso guadagno sia in termini di formalismi e oggettività – il wireframe esaltato dai test nel suo giusto ruolo di contratto – sia in termini di organizzazione del lavoro – gli sviluppatori e i grafici possono in questo modo lavorare in parallelo sin dalle prime fasi dello sviluppo.

Non mi rimane che ringraziare e-xtrategy per la rinnovata esperienza di coaching e promettere a te di riportare qui la cronaca dei prossimi sviluppi più rilevanti relativamente a tutti questi temi .

July 31 2010 | Dalle trincee | 8 Comments »

L’importante è avere disciplina

Ma sì dai, l’importante è avere disciplina, darsi un metodo. Poi agile o non agile non importa, è uguale.

No, hai capito?

No.

July 23 2010 | Base | No Comments »

Il Manifesto Agile in italiano – Reloaded

In un ormai antico post forse avevi letto della mia traduzione del Manifesto Agile. Oggi torno qui, parecchio tempo dopo, all’indomani della pubblicazione della traduzione italiana ufficiale del Manifesto Agile per ringraziare le persone con cui ho collaborato. Con tutti i traduttori e revisori ho condiviso pochi ma ottimi momenti insieme, di collaborazione vera.

Un piccolo gioiello di lavoro concorrente reso possibile da una altissima condivisione di valori, che ha a sua volta permesso – una volta tanto – di dedicarsi fin dal primo secondo alla creazione di valore invece che all’individuazione di un processo per crearlo. Un foglio elettronico online e via, a concentrarsi sugli aspetti linguistici della traduzione, sul core.

Non è stato semplice. Tradurre un documento come il Manifesto Agile, in cui ogni parola ha un peso preciso ed enorme, ti pone continuamente di fronte al compromesso tra fedeltà all’originale e bellezza della forma tradotta. Collaborare con persone tutte di grande consapevolezza, ma culturalmente miste, ha permesso di discutere ogni singola parola problematica e raggiungere sempre un compromesso linguisticamente denso: quella che si dice conoscenza implicita.

Il bello è stato far scorrere questa conoscenza implicita avanti e indietro tra le teste di persone distanti tra loro anche migliaia di chilometri e saper mettere su un processo pragmatico, umilmente efficace. A queste teste lontane ma compatte va il mio grazie.

July 01 2010 | Dalle trincee | 10 Comments »

Sfuggente e di qualità

Ron Jeffries, nella mailing list extremeprogramming@yahoogroups.com, in queste ultime ore a chi scriveva

[Unified Process] has [a flow with all the steps] formally described. I know [extreme programming] have different philosophies but they are both methodologies and should them both have a formal process.

rispondeva così

Sorry. Agile processes are not formal.

Questa risposta sintetizza (perché chiaramente si tratta di sintesi affatto esaustiva) molti aspetti difficili dell’approccio al mondo agile. Tra i primi che mi vengono in mente ora, mentre devo scappare per tornare al mio lavoro, trovo:

  1. I metodi agili non possono essere spiegati top-down. Una spiegazione frontale può aiutare, può introdurre, ma poi basta: bisogna fare e capire. La mera inesistenza di una impalcatura formale scardina ogni tentativo di verbalizzarne una.
  2. I processi agili sono facilmente fraintendibili da chi non è disposto ad approfondire il tema perché è più facile fare di concetti dai contorni sfumati quello che si vuole per giustificare le proprie esigenze dirette o addirittura le proprie debolezze. Penso a quanti ritengono che l’agile si risolva nella formula iteratività+incrementalità facendosi sfuggire che anche Unified Process contempla un approccio iterativo e incrementale.
  3. I metodi agili sono adatti a fronteggiare la realtà perché ne riflettono la complessa vaghezza. Non esiste squadra di calcio che possa vincere una partita applicando schemi rigidi. Non esiste medico serio che si aspetti che un paziente sia un sistema che restituisce output lineari . Non esiste ecologo che pensi che si possa agire per step contemporanemanete deterministici e lineari per rimettere a posto un ecosistema. Esistono invece molti professionisti IT che credono che un sistema complesso – come un progetto – possa essere controllato da entità (più) semplici – una persona o addirittura un tool.

Quello che credo sia il nostro dovere tutti i giorni è crescere aumentando la nostra consapevolezza della complessità del contesto dei progetti IT e saper galleggiare su quelle onde ridefinendo ogni giorno il nostro equilibrio, senza affetto per quello trovato oggi, senza nostalgia per quello abbandonato ieri.

Trovi sia difficile? Lo è!

June 11 2010 | Base | 2 Comments »

@jacoporomei

Dopo anni di resistenza affatto attiva, semmai dovuta al timore di un sovraccarico di linea per il mio limitato quantitativo di materia grigia, ho deciso di sfidare i miei neuroni più social cedendo alla seduzione di Twitter. Dedicherò i miei tweet agli stessi temi che tratto su questo blog, ovviamente cavalcandone la natura più real time. Vediamo un po’ cosa accadrà a @jacoporomei.

April 26 2010 | Dalle trincee | 2 Comments »

Design concorrente per team distribuiti con Google Drawing

Dai tempi della fine dello storico PowWow – esempio quintessenziale del fenomeno dot-com anni ‘90 – cioè dal 2000, attendevo il ritorno di uno strumento per disegnare cooperativamente online in tempo reale. C’erano sì stati alcuni strumenti alternativi anche su piattaforme molto diffuse come MSN o Skype, ma mai con i miei clienti ero riuscito a trovare un modo comodo e facilmente accessibile per disegnare al volo durante una conference call. Beh, finalmente oggi è possibile tornare ai vecchi fasti.

Nella suite Google Docs infatti è stata recentemente aggiunta Drawing, l’applicazione per creare e modificare diagrammi. Con la consueta grammatica di interazione gli utenti possono condividere i loro diagrammi con altri utenti e collaborare interattivamente sugli stessi diagrammi esattamente come Google Spreadsheet ci aveva già abituato a fare con i fogli elettronici. In pratica abbiamo tutti noi finalmente a disposizione una whiteboard (quasi) gratuita da condividere con chiunque, ovunque ed in qualsiasi momento.

Per me questo rappresenta l’abbattimento di una barriera molto scomoda, vincolante buona parte della mia attività lavorativa. Ogni volta che mi sono trovato costretto a fare una riunione in remoto o a fare pair programming via Skype, è sempre mancata la possibilità di disegnare. Non so tu, ma io quando condivido e discuto concetti al di sopra di una complessità minima ho bisogno di fare schizzi ed esempi grafici. Negli ultimi anni avevo fatto grandi sforzi per ovviare a questa vera e propria amputazione mediatica, sforzandomi di raffinare la capacità di rimuovere le ambiguità dai discorsi e di comunicare in modo più verbale e meno visuale. Lo strumento di Google rende finalmente questa traduzione non necessaria e, soprattutto, non richiede grandi iniziative da parte dei miei clienti: un account Google. Punto. Niente plug-in, niente applicazioni, perfino niente Flash Player!

La conseguenza più importante per tutti di questo lancio è la nuova abilitazione ad un processo di design concorrente, tipicamente desiderato nel contesto lean, poiché concorrenza significa feedback più immediati. D’ora in avanti quindi niente più ostacoli per tracciare un po’ di UML durante un pair programming in remoto, più nessun problema per tracciare semplici grafici durante una conference call e, arrivo a pensare, d’ora in avanti avremo anche aperta la possibilità per i nostri interaction designer di prototipare (parti di) interfacce anche con collaboratori e clienti lontani!

Certo, questo non dovrà mai significare la rinuncia ad ogni tentativo possibile di incontrarsi de visu, e non tanto per un mio inguaribile romanticismo neo-luddista, quanto invece per l’oggettiva qualità della comunicazione fra le persone… di persona! Poi si sa, difficilmente resisterai al fascino di una partita a tris in remoto! ;)

April 21 2010 | Dalle trincee | 4 Comments »

phpDay 2010: e quattro!

Ache quest’anno posso comunicarti la mia partecipazione al phpDay, la conferenza italiana annuale dedicata a PHP.

È il quarto anno di fila che partecipo a questo evento come speaker, l’anno scorso con Sue me sue you blues – Contratti e preventivi nei processi agili, quest’anno con Qualità totale. Diventa sempre più difficile di anno in anno rimanere all’altezza dei nomi di fama nazionale e internazionale previsti in programma. Di questo come al solito non :) ringrazierò il Gr.U.S.P., che organizza tutto come sempre in passato.

Anche questa volta sarò al phpDay in compagnia di Bonacivita, il mio lealissimo motociclo. Dopo un inverno di arresto forzato, coglierò l’occasione dell’evento e la sua insolita prossimità con Roma per inaugurare la mia nuova stagione di mototurismo.
Bonacivita a Patrasso #2

April 20 2010 | Uncategorized | 2 Comments »

« Prev - Next »