breaking the ice with agile - cinque strade per rompere il ghiaccio e introdurre i metodi agili in...
DESCRIPTION
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: lavagna, standup meeting, retrospective, build automatica, test automatici di accettazione. 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.TRANSCRIPT
Breaking the ice with agile
Agile Day 2012Milano, 24 Novembre
Pietro Di [email protected]
www.xpeppers.com
cinque strade per rompere il ghiaccio e introdurre i metodi agili in una
azienda
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]@pierodibellogithub.com/xpepper
Non è facile...
Introdurre i metodi agili in una azienda è dannatamente difficile
Situazioni che abbiamo incontrato
Multitasking
Situazioni che abbiamo incontrato
Multitasking
Stress
Situazioni che abbiamo incontrato
Settorializzazione delle conoscenze e delle
competenze
Situazioni che abbiamo incontrato
Overtime
Situazioni che abbiamo incontrato
Overtime
Stress
Situazioni che abbiamo incontrato
Processo di sviluppo "opaco" e poco predicibile
Situazioni che abbiamo incontrato
Processo di sviluppo "opaco" e poco predicibile
Stress
Situazioni che abbiamo incontrato
Processo di sviluppo "opaco" e poco predicibile
StressManager Stressati
Situazioni che abbiamo incontrato
Frequenti interruzioni al
lavoro
Situazioni che abbiamo incontrato
Frequenti interruzioni al
lavoro
Stress
Situazioni che abbiamo incontrato
Fretta
Situazioni che abbiamo incontrato
Fretta
Stress
Situazioni che abbiamo incontrato
Scarsa attenzione alle buone pratiche di programmazione
Situazioni che abbiamo incontrato
Deploy “a mano”
Situazioni che abbiamo incontrato
Deploy “a mano”
Stress
Situazioni che abbiamo incontrato
Hotfix direttamente in produzione
Situazioni che abbiamo incontrato
Hotfix direttamente in produzione
Stress
Situazioni che abbiamo incontrato
Mancanza di sistemi di versionamento
Situazioni che abbiamo incontrato
Mancanza di sistemi di versionamento
Dropbox non è git
Situazioni che abbiamo incontrato
Nascondere i problemihttp://www.slideshare.net/jchyip/lean-software-development-on-radiators-and-refrigerators-presentation
Strategie
Quali strategie si adottano per introdurre i metodi agili
in una azienda?
Quali strategie si adottano per introdurre metodi agili in un team?
Prima i valori e i principi
Quali strategie si adottano per introdurre metodi agili in un team?
Solo pratiche organizzative
Le pratiche rompighiaccio
Per prendere coscienza delle problematiche che possono compromettere il successo
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
Le pratiche rompighiaccio
...con un costo di introduzione relativamente basso
Le pratiche rompighiaccio
★ lavagna
★ standup meeting
★ retrospettiva
★ build automatica
★ test di accettazione automatici
Perché cinque?
Per poter equilibrare l'introduzione di
pratiche tecniche con la comprensione
dei valori e dei principi
Rompighiaccio #1: Lavagna
• perché è rompighiaccio?• quali valori esercita?• quali altre pratiche attiva?• a cosa stare attenti• resistenze
Se vuoi capire come lavora il team,
guarda la sua lavagna
Rompighiaccio #1: Lavagna
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
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
Rompighiaccio #1: Lavagna
Rompighiaccio #1: Lavagna
Lavagna
dell’iterazione
Rompighiaccio #1: Lavagna
Lavagna backlog
Rompighiaccio #1: Lavagna
Rompighiaccio #1: Lavagna (elettronica)
Consente di visualizzare in modo non
ambiguo il processo produttivo del
team...
#1 Lavagna: perché è rompighiaccio?
...e ne evidenzia tutti i problemi
#1 Lavagna: perché è rompighiaccio?
...e ne evidenzia tutti i problemi
#1 Lavagna: perché è rompighiaccio?
troppe storie in progress
...e ne evidenzia tutti i problemi
#1 Lavagna: perché è rompighiaccio?
troppe storie in progress
storie che tornano indietro a causa
di un bug
...e ne evidenzia tutti i problemi
#1 Lavagna: perché è rompighiaccio?
troppe storie in progress
storie che tornano indietro a causa
di un bugstorie bloccate in QA
...e ne evidenzia tutti i problemi
#1 Lavagna: perché è rompighiaccio?
troppe storie in progress
storie che tornano indietro a causa
di un bugstorie bloccate in QA
storie bloccate in progress
E’ un ottimo punto di partenza per far
riflettere il team
#1 Lavagna: perché è rompighiaccio?
E’ visibile a tutti
#1 Lavagna: perché è rompighiaccio?
Consente di sincronizzare tutti su un
workflow condiviso
#1 Lavagna: perché è rompighiaccio?
#1 Lavagna: quali valori esercita?
• Comunicazione
• Feedback•Openness
• Commitment
• Focus
#1 Lavagna: quali altre pratiche attiva?
• user stories
• informative workspace
• iteration planning
• standup meeting
• whole team
• incremental design
• simple design
#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?
Rompighiaccio #2: Standup Meeting
• perché è rompighiaccio?• quali valori esercita?• quali altre pratiche attiva?• a cosa stare attenti• resistenze
#2 Standup Meeting: cos’è?
#2 Standup Meeting: cos’è?
#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
#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?
#2 Standup Meeting: quali valori esercita?
• Comunicazione
• Feedback
• Rispetto
• Coraggio
•Openness
• Commitment
• Focus
#2 Standup Meeting: quali altre pratiche attiva?
• pair programming
• whole team
• collective-code ownership
#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
#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
Rompighiaccio #3: Retrospettiva
• perché è rompighiaccio?• quali valori esercita?• quali altre pratiche attiva?• a cosa stare attenti• resistenze
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#3 Retrospettiva: cos’è?
#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
#3 Retrospettiva: quali valori esercita?
• Comunicazione
• Rispetto•Openness
• Commitment
• Coraggio
#3 Retrospettiva: quali altre pratiche attiva?
• whole team
• continuous improvement
• va preparata per tempo
• facilitatore esterno
• periodica
• time-boxed
• spiegare bene il suo scopo
#3 Retrospettiva: precauzioni d’uso e resistenze
#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
#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"
Rompighiaccio #4: Build automatica
• perché è rompighiaccio?• quali valori esercita?• quali altre pratiche attiva?• a cosa stare attenti• resistenze
“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
#4 Build automatica: perché è rompighiaccio?
Si collabora anche con parti "nuove" del team
#4 Build automatica: perché è rompighiaccio?
Si affrontano prima problematiche che emergerebbero solo con la messa in produzione
#4 Build automatica: perché è rompighiaccio?
Consente al team di progettare fin dall'inizio il sistema e i suoi rilasci in modo incrementale
#4 Build automatica: perché è rompighiaccio?
Il team impara cosa significa "finito"
e ha la possibilità di verificare realmente il progresso fatto
#4 Build automatica: perché è rompighiaccio?
Consente di rilasciare con maggiore frequenza le features sviluppate
#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
• Feedback
• Coraggio
#4 Build automatica: quali valori esercita?
#4 Build automatica: quali altre pratiche attiva?
• test automation
• test-driven development
• refactoring
• rilasci incrementali
• continuous deployment
• devops e configuration management
#4 Build automatica: come si applica?
E’ necessario analizzare con cura la
situazione iniziale
#4 Build automatica: come si applica?
E’ necessario analizzare con cura la
situazione iniziale
il codice è sotto controllo
versione?
#4 Build automatica: come si applica?
E’ necessario analizzare con cura la
situazione iniziale
il codice è sotto controllo
versione?esistono ambienti di test/
collaudo?
#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?
#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?
#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?
#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?
#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?
#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?
#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
#4 Build automatica: a cosa stare attenti?
• stabilire una collaborazione positiva con la parte operational / sistemistica dell'azienda
• procedere a piccoli passi
Rompighiaccio #5: Test di accettazione automatici
• perché è una pratica rompighiaccio?• quali valori esercita?• quali altre pratiche attiva?• a cosa stare attenti• resistenze
#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
#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
#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
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?
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?
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?
#5 Test di accettazione automatici: quali valori esercita?
• Feedback
• Comunicazione
#5 Test di accettazione automatici: quali altre pratiche attiva?
• Testing automatico
• Test-Driven Development
• Continuous integration
• Refactoring
#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
#5 Test di accettazione automatici: resistenze
• Alcuni test automatici saranno difficili da scrivere
• non scoraggiatevi
Effetto cascata :^)
A cascata queste pratiche
se ne portano dietro altre
più difficili da adottare fin
da subito...
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 :^)
Come andare avanti
Procedere a piccoli passi
Come andare avanti
Make things visible
Come andare avanti
Learn
Come andare avanti
Tenere una retrospettiva periodica sul
processo
L'integrazione con il resto dell'azienda
...ovvero, quando un collo di bottiglia in meno ti può strozzare lo stesso :)
Cosa può andare male?
La resistenza al cambiamento
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).
Contacts
•www.xpeppers.com
•@xpeppers