Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdurre i metodi agili in una azienda

Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdurre i metodi agili in una azienda

La nostra esperienza ha mostrato che esistono alcune pratiche “rompighiaccio” che, con un costo di introduzione relativamente basso, permettono di far prendere coscienza alle persone di alcune problematiche e dinamiche tipiche dei progetti software e che ne minano il successo.
La presa di coscienza di queste problematiche e dinamiche è il primo passo per comprendere e abbracciare valori e principi dei metodi agili.
Le pratiche di cui vorremmo parlare e che definiamo “ice breakers” per quel che riguarda le metodologie agili sono:
- adozione della lavagna per rappresentare il flow del lavoro
- standup meeting
- retrospective
- build automatica (e automazione in genere)
- acceptance testing
A cascata poi queste pratiche se ne portano dietro altre più difficili da adottare fin da subito, ma più facili da far adottare quando le persone prendono coscienza dei problemi che gli impediscono di lavorare in modo efficace (pair, tecnica del pomodoro, user stories, TDD, CI, simple design, daily journal, etc) e abbracciano i principi dell’agile.
Per ogni pratica “ice breakers”, a partire dalla nostra esperienza, illustreremo il motivo per cui secondo noi sono tali, le dinamiche secondo noi migliori per proporne l’introduzione, anti-pattern e resistenze al cambiamento che abbiamo incontrato e come le abbiamo affrontate.

Pietro Di Bello

November 24, 2012
Tweet

More Decks by Pietro Di Bello

Other Decks in Technology

Transcript

  1. Breaking the ice with agile Agile Day 2012 Milano, 24

    Novembre Pietro Di Bello [email protected] www.xpeppers.com cinque strade per rompere il ghiaccio e introdurre i metodi agili in una azienda
  2. Pietro Di Bello ★ Uso e diffondo i metodi agili

    (dal 2002) ★ Mi piace programmare in Ruby e Java (ho iniziato con Java nel 2000 e da tre anni sono passato a Ruby) ★ Sono sempre alla ricerca di modi migliori di fare le cose [email protected] @pierodibello github.com/xpepper
  3. Le pratiche rompighiaccio La presa di coscienza di queste problematiche

    e dinamiche è il primo passo per comprendere e abbracciare valori e principi dei metodi agili. • coraggio • feedback • semplicità • comunicazione • rispetto • coraggio • commitment • openness • focus • rispetto XP Scrum
  4. Le pratiche rompighiaccio ★ lavagna ★ standup meeting ★ retrospettiva

    ★ build automatica ★ test di accettazione automatici
  5. Rompighiaccio #1: Lavagna •perché è rompighiaccio? •quali valori esercita? •quali

    altre pratiche attiva? •a cosa stare attenti •resistenze
  6. Se vuoi capire come lavora il team, guarda la sua

    lavagna Rompighiaccio #1: Lavagna
  7. Se vuoi capire come lavora il team, guarda la sua

    lavagna Se vuoi capire come sta andando il progetto, guarda la lavagna Rompighiaccio #1: Lavagna
  8. Se vuoi capire come lavora il team, guarda la sua

    lavagna Se vuoi capire come sta andando il progetto, guarda la lavagna Se vuoi capire quali problemi ha il processo di sviluppo, guarda la lavagna Rompighiaccio #1: Lavagna
  9. Consente di visualizzare in modo non ambiguo il processo produttivo

    del team... #1 Lavagna: perché è rompighiaccio?
  10. ...e ne evidenzia tutti i problemi #1 Lavagna: perché è

    rompighiaccio? troppe storie in progress
  11. ...e ne evidenzia tutti i problemi #1 Lavagna: perché è

    rompighiaccio? troppe storie in progress storie che tornano indietro a causa di un bug
  12. ...e ne evidenzia tutti i problemi #1 Lavagna: perché è

    rompighiaccio? troppe storie in progress storie che tornano indietro a causa di un bug storie bloccate in QA
  13. ...e ne evidenzia tutti i problemi #1 Lavagna: perché è

    rompighiaccio? troppe storie in progress storie che tornano indietro a causa di un bug storie bloccate in QA storie bloccate in progress
  14. E’ un ottimo punto di partenza per far riflettere il

    team #1 Lavagna: perché è rompighiaccio?
  15. #1 Lavagna: quali altre pratiche attiva? •user stories •informative workspace

    •iteration planning •standup meeting •whole team •incremental design •simple design
  16. #1 Lavagna: precauzioni d’uso e resistenze •tenerla costantemente aggiornata •introdurre

    al più presto i principi della pianificazione agile •guardarla •e se il team è distribuito o il cliente è spesso via? •dove l’appendiamo?
  17. Rompighiaccio #2: Standup Meeting •perché è rompighiaccio? •quali valori esercita?

    •quali altre pratiche attiva? •a cosa stare attenti •resistenze
  18. #2 Standup Meeting: perché è rompighiaccio? •Maggiore comunicazione tra gli

    elementi del team •Commitment reciproco (“Oggi farò questo…”) •Rafforzamento del senso di team •“ti aiuto io su questo problema di cui parli…” •imparare a chiedere e offrire aiuto
  19. #2 Standup Meeting: perché è rompighiaccio? •Maggiore reattività agli ostacoli

    che emergono •C’è subito evidenza se la pianificazione è corretta •ci sono persone che non sanno cosa faranno? •ci sono persone che hanno troppe cose in lavorazione?
  20. #2 Standup Meeting: precauzioni d’uso e resistenze •si riporta sempre

    al team-leader •i manager o stakeholders “dirottano” lo standup meeting •si inizia sempre in ritardo o in un orario diverso
  21. #2 Standup Meeting: precauzioni d’uso e resistenze •va sempre per

    le lunghe, si scende in dettagli tecnici fuori luogo •le persone sono evasive •le persone non ricordano quello che hanno fatto ieri
  22. #3 Retrospettiva: perché è rompighiaccio? •è il primo tassello del

    process improvement •il team ha la possibilità di riflettere sui propri errori e porre azioni correttive •il team ha al suo interno tutte le potenzialità per lavorare meglio
  23. •va preparata per tempo •facilitatore esterno •periodica •time-boxed •spiegare bene

    il suo scopo #3 Retrospettiva: precauzioni d’uso e resistenze
  24. #3 Retrospettiva: precauzioni d’uso e resistenze •alcuni manager potrebbero lamentarsi

    dell'eccessivo costo di queste attività •alcuni membri del team potrebbero non partecipare volentieri •decidere prima se coinvolgere o meno esterni al team o manager
  25. #3 Retrospettiva: precauzioni d’uso e resistenze •effetto "vogliamoci bene" •pubblicare

    in uno spazio visibile a tutti la lista delle azioni correttive scelte •moderare la discussione in modo che non sfoci nel "finger pointing"
  26. Rompighiaccio #4: Build automatica •perché è rompighiaccio? •quali valori esercita?

    •quali altre pratiche attiva? •a cosa stare attenti •resistenze
  27. “Nothing forces us to understand a process better than trying

    to automate it.” Growing Object-Oriented Software, Guided by Tests (S.Freeman, N.Pryce) #4 Build automatica
  28. #4 Build automatica: perché è rompighiaccio? Consente al team di

    progettare fin dall'inizio il sistema e i suoi rilasci in modo incrementale
  29. #4 Build automatica: perché è rompighiaccio? Il team impara cosa

    significa "finito" e ha la possibilità di verificare realmente il progresso fatto
  30. #4 Build automatica: perché è rompighiaccio? Migliora la fiducia nel

    team da parte del cliente, che vede che il team è in grado di rilasciare frequentemente senza panico
  31. #4 Build automatica: quali altre pratiche attiva? •test automation •test-driven

    development •refactoring •rilasci incrementali •continuous deployment •devops e configuration management
  32. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione?
  33. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo?
  34. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test?
  35. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test? come vengono effettuati i rilasci?
  36. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test? come vengono effettuati i rilasci? quante dipendenze da sistemi terzi ci sono?
  37. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test? come vengono effettuati i rilasci? quante dipendenze da sistemi terzi ci sono? esistono sistemi di monitoring della produzione?
  38. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test? come vengono effettuati i rilasci? quante dipendenze da sistemi terzi ci sono? esistono sistemi di monitoring della produzione? con chi bisogna interagire per avere accesso agli ambienti di test?
  39. #4 Build automatica: come si applica? E’ necessario analizzare con

    cura la situazione iniziale il codice è sotto controllo versione? esistono ambienti di test/ collaudo? quanto è facile creare un nuovo ambiente di test? come vengono effettuati i rilasci? quante dipendenze da sistemi terzi ci sono? esistono sistemi di monitoring della produzione? con chi bisogna interagire per avere accesso agli ambienti di test? come gestisco le dipendenze da sistemi esterni negli ambienti di test?
  40. #4 Build automatica: come si applica? A piccoli passi si

    deve pianificare una serie di interventi di automazione ad es partire da uno script che automatizza tutti i processi manuali effettuati per mettere in produzione una nuova versione
  41. #4 Build automatica: a cosa stare attenti? •stabilire una collaborazione

    positiva con la parte operational / sistemistica dell'azienda •procedere a piccoli passi
  42. Rompighiaccio #5: Test di accettazione automatici •perché è una pratica

    rompighiaccio? •quali valori esercita? •quali altre pratiche attiva? •a cosa stare attenti •resistenze
  43. #5 Test di accettazione automatici: perché è una pratica rompighiaccio?

    •I test di accettazione mettono in comunicazione stretta analisti, cliente e sviluppatori •Consentono lo switch di mentalità da "code & fix" a "rilascio di feature finita" •Consentono a tutti di chiarire qual'è lo scope della feature
  44. #5 Test di accettazione automatici: perché è una pratica rompighiaccio?

    •Trasmettono fiducia al cliente •Sono propedeutici per l'intero tema del testing e del design test-driven
  45. #5 Test di accettazione automatici: come si può applicare? Quando

    si pianifica una nuova feature, parte dell'analisi consiste nel descrivere quali sono i criteri di accettazione della feature
  46. Si può iniziare anche solo a raccogliere dei test di

    accettazione manuali durante il planning della feature #5 Test di accettazione automatici: come si può applicare?
  47. Si può iniziare anche solo a raccogliere dei test di

    accettazione manuali durante il planning della feature poi si passa a proporre la loro automazione #5 Test di accettazione automatici: come si può applicare?
  48. Si può iniziare anche solo a raccogliere dei test di

    accettazione manuali durante il planning della feature poi si passa a proporre la loro automazione e si mettono i test nella build automatica #5 Test di accettazione automatici: come si può applicare?
  49. #5 Test di accettazione automatici: quali altre pratiche attiva? •Testing

    automatico •Test-Driven Development •Continuous integration •Refactoring
  50. #5 Test di accettazione automatici: a cosa stare attenti? •Va

    bene partire da test manuali, ma non fermarsi a quelli •Fare in modo che i test automatici rimangano verdi •Non devono mentire •Devono essere veramente automatici
  51. Effetto cascata :^) A cascata queste pratiche se ne portano

    dietro altre più difficili da adottare fin da subito...
  52. Effetto cascata ...ma più facili da introdurre quando le persone

    prendono coscienza dei problemi che gli impediscono di lavorare in modo efficace e fanno propri i principi dei metodi agili ★Pair Programming ★Test-Driven Development ★Refactoring ★Design Incrementale ★Continuous Integration ★Tecnica del Pomodoro ★Daily Journal ★Collective Code Ownership ★ ... a piccoli passi, applicando un approccio iterativo e incrementale :^)
  53. L'integrazione con il resto dell'azienda ...ovvero, quando un collo di

    bottiglia in meno ti può strozzare lo stesso :)
  54. Come andare avanti? Per avere i risultati migliori, si devono

    valutare e sperimentare tutte le pratiche di XP. Ogni pratica XP è sostenuta e rafforzata dalle altre. Adottare solo un subset di pratiche potrebbe causare "asimmetrie" nel processo (alcune pratiche senza pratiche di sostegno funzionano meno bene, o rischiano di fallire).