SlideShare a Scribd company logo
1 of 94
Download to read offline
Storie
Andrea Francia

WeDev - 7 novembre 2018
1
@andreafrancia
Chi sono
@andreafrancia@andreafrancia
Andrea Francia
• Programmatore full stack (Ruby)
• Automatizzo i browser
• Faccio Test-Driven Development
• Uso quotidianamente XP (da 5 anni)
• Coordino il gruppo Test-Driven Development Milano
Sono un programmatore da
tanto tempo
Occasionalmente sono
coach (di TDD)
Conduco il TDD Milano
@andreafrancia
Tre cose:
• Shared Understanding (Comprensione/Visione condivisa)

• Un’idea di come funziona lo sviluppo con le storie

• Jukebox
La storia del telefono
senza fili
The telephone game
https://goo.gl/images/Hu5hSg
Royce 1970
https://goo.gl/images/ftf6Ts
https://goo.gl/images/UC614o
https://goo.gl/images/Ld93xv
https://goo.gl/images/jEEUpv
Mars Climate Orbiter
https://it.wikipedia.org/wiki/Mars_Climate_Orbiter
https://it.wikipedia.org/wiki/Mars_Climate_Orbiter#/
media/File:Mars_Climate_Orbiter_-_mishap_diagram.png
Visione condivisa
Come ottenere la visione
condivisa secondo me?
• Lasciare parlare chi deve costruire il prodotto
(sviluppatori) con chi ha bisogno che il prodotto sia
costruito (clienti).

• Il manager dovrebbe facilitare la comunicazione tra
sviluppatori e cliente, non dovrebbe essere il canale.

• In XP è previsto il “cliente il loco” (customer on site) che
è a disposizione del team di sviluppo per rispondere a
qualsiasi domanda e scrive i test di accettazione per
ogni carta.
Le storie in XP
Cos’è una storia?
Cosa sono le storie?
• Sono il modo con cui si organizza lo sviluppo in eXtreme
Programming
USER STORIES
13
https://www.slideshare.net/xpmatteo/agile-fluency-e-che-cosa-significa-per-il-business/13
Ron Jeffries’ 3Cs
Carta -vs- Storia
Non devono essere per
forza scritti come racconti.
Il racconto è utile per
comunicare con gli altri
• Esempio: Quando ho raccolto i requisiti da Carola
Dove sono i dettagli?
Come funziona il
processo?
Chi scrive le storie?
Come si selezionano le
storie per l’iterazione?
Buone storie
INVEST
https://xp123.com/articles/invest-in-good-stories-and-smart-tasks/
Independent
• Ogni storia dovrebbe essere indipendente dalle altre.

• In questo modo il cliente può scegliere la priorità senza
vincoli

• Sono necessarie degli skill dal punto di vista del design
per farlo.
Negotiable
• Le storie dovrebbero essere negoziabili. 

• Non sono un contratto scritto, ne dei requisiti su cosa il
software deve implementare

• Le carte dovrebbero avere una breve descrizione della
funzionalità

• I dettagli verrano fuori durante la discussione tra il cliente
e i programmatori.
Valuable
• Ogni storia dovrebbe avere un valore per qualcuno, per
l’utente finale, il cliente o qualche altro stakeholder.
Small
• Le storie dovrebbero essere abbastanza piccole da poter
stare dentro un iterazione.

• Una buona dimensione potrebbe essere quella che
permette di mettere da tre a cinque storie nell’iterazione.

• Usare le tecniche di splitting
Testable
• La storia poter essere verificabile

• altrimenti potrebbe essere impossibile dire quando
sono finite.

• I criteri di accettazione si possono mettere per esempio
dietro la carta

• Noi usavamo una wiki
Cosa sono i criteri di
accettazione?
Esempio criteri di
accettazione
• Storia: “A user can pay for the items in her shopping cart with a credit card”

• Criteri di accettazione:

• Test with Visa, MasterCard and American Express (pass).

• Test with Diner's Club (fail).

• Test with a Visa debit card (pass).

• Test with good, bad and missing card ID numbers from the back of the
card.

• Test with expired cards.

• Test with different purchase amounts (including one over the card's limit).
Stime e pianificazione
Planning poker
• 1. Agree on a short size scale

• 2. Team briefly discusses a story

• 3. Everyone silently selects a point card 

• 4. Team reveals all cards in unison

• 5. If outliers exist, discuss and re-vote
Planning Game
• Si misura la velocità del tema nell’iterazione precedente

• Si stima la capacità del team per prossima l’iterazione

• Il cliente da una priorità alle storie

• Gli sviluppatori danno una stima alle storie

• Si scelgono tante storie quante ne servono per riempire
l’iterazione, se necessario si splitta qualche storia
Quanto fare lunga
l’iterazione?
• Più corta è meglio è

• Servono skill sulle pratiche tecniche e design per tenerla
corta

• Cercare di arrivare ad una settimana dovrebbe essere un
obiettivo
Come misurare la
velocità
Quando finiamo?
Il formato connextra
Come ce lo raccontano
• As a ___________________

• I want to ___________________

• So that ___________________
Un esempio
• Come addetto al customer care telefonico

• Vorrei poter filtrare velocemente gli ordini dato il nome di
un cliente

• Così da poter vedere subito i suoi ordini e trovare quello
su cui ha il problema
Permette di chiarire gli aspetti
fondamentali della storia
• As a ___________________ —> Chi ne beneficia?

• I want to ___________________ —> Da che cosa?

• So that ___________________ —> Perché?
Problemi/incomprensioni
• Ci perdiamo il titolo della storia

• Non è un template per scrivere la storia

• È facile dimenticarsi del so-that
Problemi
Esempio non corretto
• Come: utente

• Vorrei: vedere il banner per i cookies

• In modo che:
Si chiamano “storie”
perché vanno raccontate
“Come Tizio vorrei fare X in
modo da” è un modo per
iniziare la conversazione.
I template possono servire solo per
imparare
Rachel Davies holding a story card
https://www.oreilly.com/library/view/user-story-
mapping/9781491904893/ch07.html
Dove finiscono le
specifiche? Esempi
Dove finiscono le
specifiche?
• Sul cartoncino non c’è spazio per le specifiche

• Non vuol dire che non dobbiamo farle, solo che le
mettiamo sul supporto adeguato => Non tutto è scritto
sul cartoncino
Le storie sono una
promessa per una
conversazione futura
https://www.slideshare.net/jeffpatton/user-story-
mapping-discovery-the-whole-story
https://www.slideshare.net/jeffpatton/user-story-
mapping-discovery-the-whole-story
Code and Tests
• Maintain only the code and the tests as permanent
artifacts. Generate other documents from the code and
tests. Rely on social mechanisms to keep alive important
history of the project. 

• Customers pay for the what the system does today and
what the team can make the system do tomorrow. Any
artifacts contributing to these two sources of value are
themselves valuable. Everything else is waste.
https://www.slideshare.net/giordano/bdd-tdd-and-beyond-
the-infinite/120-Feature_Evolving_a_living_cell/120
Argomenti extra
Fare una demo per il
planning game?
Le storie sono una pratica
dell’eXtreme Programming
User 

Stories
Come si usano le storie
• Fatto significa fatto tutto: per ogni storia:

• si raccolgono, comprendono e discutono i requisiti

• si decide una soluzione soddisfarli

• si implementa, si integra, si valida e si rilascia
l’incremento
Storie senza le
pratiche tecniche
Le storie “tecniche”
Perché usare la
carta?
Perché usare la carta?
• Lo fanno anche ad Atlassian (gli sviluppatori di Jira)

• Non serve login per vedere le informazioni.

• Le operazioni sono più veloci (CRUD).

• Montare una webcam su una board costa meno di una
licenza di un tool di planning.
Jeff$Pa'on$&$Associates,$jeff@jpa'onassociates.com,$twi'er@jeffpa'on
Shared$Understanding$and$collabora?on$
at$Atlassian
29
https://www.slideshare.net/jeffpatton/user-story-mapping-discovery-the-whole-story
Jeff$Pa'on$&$Associates,$jeff@jpa'onassociates.com,$twi'er@jeffpa'on
Shared$Understanding$and$collabora?on$
at$Atlassian
30
https://www.slideshare.net/jeffpatton/user-story-mapping-discovery-the-whole-story
Jeff$Pa'on$&$Associates,$jeff@jpa'onassociates.com,$twi'er@jeffpa'on
Shared$Understanding$and$collabora?on$
at$Atlassian
31
https://www.slideshare.net/jeffpatton/user-story-mapping-discovery-the-whole-story
https://www.reddit.com/r/theydidthemath/comments/7cbc5c/
request_what_is_the_carbon_footprint_difference/
https://www.theguardian.com/environment/green-living-blog/2010/jun/04/carbon-
Come splittare una storia
https://agileforall.com/new-story-splitting-resource/
https://devmaheshwari.wordpress.com/2011/11/18/
running-your-cucumber-features-on-different-browsers/
Agile Jira? Ma anche no!
https://it.atlassian.com/software/jira/agile-project-
management
@andreafrancia
Grazie
Andrea Francia
@andreafrancia

More Related Content

Similar to User Stories - Andrea Francia @ WeDev 7 novembre 2018

Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMMatteo Papadopoulos
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScriptRoberto Messora
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2Giulio Roggero
 
Presentazione noestimates
Presentazione noestimatesPresentazione noestimates
Presentazione noestimatesTommaso Torti
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web designgowow
 
Slide Wallabiez Agile Day 2007
Slide Wallabiez Agile Day 2007Slide Wallabiez Agile Day 2007
Slide Wallabiez Agile Day 2007Manuela Munaretto
 
Lezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingLezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingAndrea Della Corte
 
Agile Experience Design & Development - IAD 2012
Agile Experience Design & Development - IAD 2012Agile Experience Design & Development - IAD 2012
Agile Experience Design & Development - IAD 2012Timothy Carniato
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con DelphiMarco Breveglieri
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Cicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotCicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotPaolo Montrasio
 
Le pratiche ingegneristiche di eXtreme Programming
Le pratiche ingegneristiche di eXtreme ProgrammingLe pratiche ingegneristiche di eXtreme Programming
Le pratiche ingegneristiche di eXtreme ProgrammingAndrea Francia
 
Tecnologie e Tecniche per affrontare il Mondo che Cambia
Tecnologie e Tecniche per affrontare il Mondo che CambiaTecnologie e Tecniche per affrontare il Mondo che Cambia
Tecnologie e Tecniche per affrontare il Mondo che CambiaMarco Parenzan
 
Agile@scale, second chance
Agile@scale, second chanceAgile@scale, second chance
Agile@scale, second chanceFelice Pescatore
 
Seo horror stories - ConvegnoGT 2013 - Andrea Scarpetta
Seo horror stories - ConvegnoGT 2013 - Andrea ScarpettaSeo horror stories - ConvegnoGT 2013 - Andrea Scarpetta
Seo horror stories - ConvegnoGT 2013 - Andrea ScarpettaAndrea Scarpetta
 
La sicurezza applicativa ai tempi dell’ASAP
La sicurezza applicativa ai tempi dell’ASAPLa sicurezza applicativa ai tempi dell’ASAP
La sicurezza applicativa ai tempi dell’ASAPfestival ICT 2016
 

Similar to User Stories - Andrea Francia @ WeDev 7 novembre 2018 (20)

Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUM
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2
 
Presentazione noestimates
Presentazione noestimatesPresentazione noestimates
Presentazione noestimates
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
 
Slide Wallabiez Agile Day 2007
Slide Wallabiez Agile Day 2007Slide Wallabiez Agile Day 2007
Slide Wallabiez Agile Day 2007
 
Lezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingLezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme Programming
 
C lab pretotyping
C lab pretotypingC lab pretotyping
C lab pretotyping
 
Agile Experience Design & Development - IAD 2012
Agile Experience Design & Development - IAD 2012Agile Experience Design & Development - IAD 2012
Agile Experience Design & Development - IAD 2012
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con Delphi
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Cicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotCicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbot
 
WordPress Theme review
WordPress Theme reviewWordPress Theme review
WordPress Theme review
 
Symfony va a Skuola
Symfony va a SkuolaSymfony va a Skuola
Symfony va a Skuola
 
Le pratiche ingegneristiche di eXtreme Programming
Le pratiche ingegneristiche di eXtreme ProgrammingLe pratiche ingegneristiche di eXtreme Programming
Le pratiche ingegneristiche di eXtreme Programming
 
Agile Fixed Price
Agile Fixed PriceAgile Fixed Price
Agile Fixed Price
 
Tecnologie e Tecniche per affrontare il Mondo che Cambia
Tecnologie e Tecniche per affrontare il Mondo che CambiaTecnologie e Tecniche per affrontare il Mondo che Cambia
Tecnologie e Tecniche per affrontare il Mondo che Cambia
 
Agile@scale, second chance
Agile@scale, second chanceAgile@scale, second chance
Agile@scale, second chance
 
Seo horror stories - ConvegnoGT 2013 - Andrea Scarpetta
Seo horror stories - ConvegnoGT 2013 - Andrea ScarpettaSeo horror stories - ConvegnoGT 2013 - Andrea Scarpetta
Seo horror stories - ConvegnoGT 2013 - Andrea Scarpetta
 
La sicurezza applicativa ai tempi dell’ASAP
La sicurezza applicativa ai tempi dell’ASAPLa sicurezza applicativa ai tempi dell’ASAP
La sicurezza applicativa ai tempi dell’ASAP
 

More from Andrea Francia

Baby Steps TripServiceKata
Baby Steps TripServiceKataBaby Steps TripServiceKata
Baby Steps TripServiceKataAndrea Francia
 
TDD on Legacy Code - Voxxed Days Milano 2019
TDD on Legacy Code - Voxxed Days Milano 2019TDD on Legacy Code - Voxxed Days Milano 2019
TDD on Legacy Code - Voxxed Days Milano 2019Andrea Francia
 
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...Andrea Francia
 
Kata in Bash a DevOpsHeroes 2018 a Parma
Kata in Bash a DevOpsHeroes 2018 a ParmaKata in Bash a DevOpsHeroes 2018 a Parma
Kata in Bash a DevOpsHeroes 2018 a ParmaAndrea Francia
 
Test-Driven Development su Codice Esistente
Test-Driven Development su Codice EsistenteTest-Driven Development su Codice Esistente
Test-Driven Development su Codice EsistenteAndrea Francia
 
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)Andrea Francia
 
Introduzione a eXtreme Programming
Introduzione a eXtreme ProgrammingIntroduzione a eXtreme Programming
Introduzione a eXtreme ProgrammingAndrea Francia
 
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)Andrea Francia
 
Piccolo coding dojo (milano xpug 2013-04-11)
Piccolo coding dojo (milano xpug 2013-04-11)Piccolo coding dojo (milano xpug 2013-04-11)
Piccolo coding dojo (milano xpug 2013-04-11)Andrea Francia
 
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)Tutti i miei sbagli (Errori di un wannabe Open Source Developer)
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)Andrea Francia
 
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG miTutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG miAndrea Francia
 
Writing a Crawler with Python and TDD
Writing a Crawler with Python and TDDWriting a Crawler with Python and TDD
Writing a Crawler with Python and TDDAndrea Francia
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Andrea Francia
 
Subversion @ JUG Milano 11 dic 2009
Subversion @ JUG Milano 11 dic 2009Subversion @ JUG Milano 11 dic 2009
Subversion @ JUG Milano 11 dic 2009Andrea Francia
 
Working Effectively with Legacy Code (draft)
Working Effectively with Legacy Code (draft)Working Effectively with Legacy Code (draft)
Working Effectively with Legacy Code (draft)Andrea Francia
 

More from Andrea Francia (20)

Baby Steps TripServiceKata
Baby Steps TripServiceKataBaby Steps TripServiceKata
Baby Steps TripServiceKata
 
TDD on Legacy Code - Voxxed Days Milano 2019
TDD on Legacy Code - Voxxed Days Milano 2019TDD on Legacy Code - Voxxed Days Milano 2019
TDD on Legacy Code - Voxxed Days Milano 2019
 
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...
Lavorare con codice legacy “non testabile” - Incontro DevOps - 8 marzo 2019 -...
 
Kata in Bash a DevOpsHeroes 2018 a Parma
Kata in Bash a DevOpsHeroes 2018 a ParmaKata in Bash a DevOpsHeroes 2018 a Parma
Kata in Bash a DevOpsHeroes 2018 a Parma
 
Test-Driven Development su Codice Esistente
Test-Driven Development su Codice EsistenteTest-Driven Development su Codice Esistente
Test-Driven Development su Codice Esistente
 
Come si applica l'OCP
Come si applica l'OCPCome si applica l'OCP
Come si applica l'OCP
 
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
 
Introduzione a eXtreme Programming
Introduzione a eXtreme ProgrammingIntroduzione a eXtreme Programming
Introduzione a eXtreme Programming
 
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)
Test-Driven Development e Sviluppo Incrementale (TDD-Milano 2017-01-10)
 
Le 12 pratiche
Le 12 praticheLe 12 pratiche
Le 12 pratiche
 
Bash-Only Deployment
Bash-Only DeploymentBash-Only Deployment
Bash-Only Deployment
 
TDD anche su iOS
TDD anche su iOSTDD anche su iOS
TDD anche su iOS
 
Piccolo coding dojo (milano xpug 2013-04-11)
Piccolo coding dojo (milano xpug 2013-04-11)Piccolo coding dojo (milano xpug 2013-04-11)
Piccolo coding dojo (milano xpug 2013-04-11)
 
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)Tutti i miei sbagli (Errori di un wannabe Open Source Developer)
Tutti i miei sbagli (Errori di un wannabe Open Source Developer)
 
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG miTutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
 
Writing a Crawler with Python and TDD
Writing a Crawler with Python and TDDWriting a Crawler with Python and TDD
Writing a Crawler with Python and TDD
 
Introduzione al TDD
Introduzione al TDDIntroduzione al TDD
Introduzione al TDD
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008
 
Subversion @ JUG Milano 11 dic 2009
Subversion @ JUG Milano 11 dic 2009Subversion @ JUG Milano 11 dic 2009
Subversion @ JUG Milano 11 dic 2009
 
Working Effectively with Legacy Code (draft)
Working Effectively with Legacy Code (draft)Working Effectively with Legacy Code (draft)
Working Effectively with Legacy Code (draft)
 

User Stories - Andrea Francia @ WeDev 7 novembre 2018