breaking the ice with agile - cinque strade per rompere il ghiaccio e introdurre i metodi agili in...

Post on 07-Dec-2014

1.432 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

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 Bellopietro.dibello@xpeppers.com

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

pietro.dibello@xpeppers.com@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

• info@xpeppers.com

•@xpeppers

top related