Le 3 C delle user stories: carta, conversazione e conferma

Oggi parliamo di storie, un grande classico per i product owner, e andiamo alla base della loro costruzione esplorando insieme le 3 C delle user stories: carta, conversazione e conferma.

Ma cosa sono le user stories? Sono semplici descrizioni, contenute in una frase, di ciò che un determinato utente vuole ottenere raccontate dal suo punto di vista.
Sono nate nell’ambito dell’Extreme Programming prima dell’inizio di questo millennio (la loro origine si fa risalire al 1998) e sono poi diventate popolari in tutti i processi agile.

User story: qualche esempio di scrittura delle card

Facciamo qualche esempio pratico per capirci meglio.
Immaginiamo di stare sviluppando un sito di annunci (i cosiddetti classified) che consente a venditori e acquirenti di scambiarsi beni materiali e servizi accordandosi tra privati.
La nostra piattaforma avrà user stories come queste:

  • come utente di <nome della piattaforma> , posso effettuare ricerche su articoli specifici.
  • come venditore, posso facilmente consultare la lista di tutti i potenziali acquirenti interessati al prodotto che ho messo in vendita.

Come vedete sono frasi brevi che descrivono cosa un utente vuole fare, raccontate secondo il suo punto di vista.
Un’altra cosa che possiamo notare è che abbiamo più tipologie di utenti: nel primo caso parliamo di un utente generico, nel secondo adottiamo il punto di vista di uno dei principali attori della piattaforma (in venditore).

Possiamo fare la stessa cosa mettendoci dal punto di vista dell’acquirente:

  • come potenziale acquirente di una macchina usata, voglio poter vedere delle foto del veicolo.

Cosa manca ancora in questo esempio?
Manca un dettaglio che per me è la parte più importante delle user stories, la cosiddetta clausola so-that.
Ciò che spiega perché un determinato utente vuole una certa cosa, qual è la sua finalità, qual è il risultato finale a cui tende (o outcome).

La storia potrebbe prendere allora questa forma:

“come potenziale acquirente di una macchina usata, voglio poter vedere delle foto del veicolo così da potermi accertare delle sue condizioni”

O dal punto di vista del venditore:

“come proprietario di un auto che desidero vendere, posso creare una pagina in cui descrivere lo stato dei veicolo e mostrarlo al suo meglio”

Notate che stiamo parlando della medesima funzionalità (le foto associate al prodotto) da due punti di vista differenti: quello del venditore e quello dell’acquirente.

User story: l’importanza del punto di vista

Bene, abbiamo introdotto il formato più classico con cui si scrivono le user stories:

Come <tipo di utente>, voglio <funzionalità> così da <obiettivo o valore per l’utente>.

Semplice ed efficace! Chiunque è in grado di esprimere un bisogno, una necessità o un desiderio secondo questo formato.
Ma non è solo la semplicità ad essere la chiave del successo delle user stories, l’elemento essenziale qui è la prospettiva: il punto di vista che adottiamo ci aiuta a relazionarci con specifiche tipologie di utenti, a metterci nei loro panni.

Sembra un dettaglio ma non lo è.
Ditemi se vi fa lo stesso effetto esprimere le medesime funzionalità come si descrivevano una volta nei documenti di requisiti …

  • il sistema consente all’utente di effettuare una ricerca
  • il sistema consente all’utente di pubblicare online un prodotto
  • il sistema consente all’utente di associare una o più foto a un prodotto

Il significato di queste affermazioni è lo stesso ma nel primo caso rispondiamo con più empatia perché stiamo mettendo l’utente – una persona – al centro della scena.

User story: la conversazione a partire dalla carta

Un errore in cui cadono spesso i team che muovono i primi passi con i framework agili è pensare che una volta scritta la user story tutto sia chiaro e definito.
In realtà chi ha un po’ più di esperienza alle spalle sa bene che la scrittura è solo l’inizio del gioco.
Non dobbiamo dimenticare che la user story comprende tre C:

  • una scheda o carta (= card),
  • la conversazione (= conversation)
  • criteri di conferma (= confirmation).

Le 3 C sono un’allitterazione ideata da Ron Jeffries per chiarire che una user story è più di un semplice testo scritto su carta fisica o su strumento software.
Le user stories sono brevi, non sono fatte per contenere molti dettagli bensì per agevolare delle conversazioni (si parla anche delle storie anche come “placeholder per conversazioni con il team”).
La carta è solo una delle tre C, la più visibile, e anche quella meno importante.

Mi è capitato in passato di lavorare con team che pretendevano di avere il massimo livello di dettaglio nelle storie; questo desiderio di chiarezza e completezza per quanto comprensibile dà l’illusione che tutto sia stato definito e compreso ma non aiuta le persone ad uscire dalla propria comfort zone e fare il “viaggio di scoperta” nei bisogni dell’utente.
E’ dall’interazione tra il product owner, il team allargato e gli utenti che nasce la vera comprensione di ciò che c’è da fare, non da una frase scritta su un pezzo di carta.

Non si tratta di un modo alternativo di scrivere requisiti, la card è “una promessa a due vie” come dice Mike Cohn:

  • la promessa del team di porre domande prima di iniziare a lavorare su una storia
  • la promessa del product owner di essere disponibile ad approfondire l’argomento.

Questi due aspetti insieme ci evitano di dover scrivere corposi documenti di specifiche contenenti ogni singola funzionalità.

Se il team si parla prima di iniziare a lavorare, il product owner può specificare solo quanto basta per poter avere quella conversazione.
E’ la conversazione in sé che rende agile un team, non la scrittura delle storie, l’utilizzo di post-it o di tool come Jira.

User story: la C di conferma

Quando Mike Cohn illustra questa parte delle storie dice che non gli piace iniziare qualcosa se non capisce come saprà quando ha terminato. E a chi piace questa incertezza?
I criteri di conferma di una user story servono proprio a questo; sono il modo in cui il product owner definisce insieme al team ciò che deve essere fatto affinché lo sviluppo possa essere considerato completo.

Ricordate quando a scuola per la prima volta un insegnante vi ha assegnato un riassunto di un libro? Alzi la mano chi non si è chiesto quanto dovesse essere lungo lo scritto!
Ecco, questo è un classico esempio di criterio di accettazione. Per alcuni professori una sintesi di una pagina è accettabile, per altri non si parla di sufficienza sotto le 3 pagine (e non pensate di barare con la dimensione del testo e l’interlinea!).

Una parte della conversazione tra il team e il product owner prima di lavorare una storia riguarderà proprio i criteri di conferma, ovvero come ciò che sarà sviluppato verrà valutato per l’accettazione durante la sprint review.
Si tratta delle “condizioni di soddisfazione” della storia. In altre parole, affinché il product owner possa considerare la user story fatta, una determinata cosa deve fare questo, quello e quell’altro.

Torniamo al nostro esempio di prima quando parlavamo della possibilità di associare delle foto all’auto che il nostro utente vuole mettere in vendita.
Per questa user story potremmo definire criteri di accettazione di questo tipo:

  • i formati di immagine accettati dal sistema (es. jpg, png, ecc.)
  • il peso massimo della singola immagine
  • la possibilità di vedere un’anteprima dell’immagine caricata
  • e magari anche la possibilità di poter ruotare eventuali immagini capovolte prima della pubblicazione.

User story: la prima C da sola non basta!

Siamo arrivati alla fine del nostro excursus sulle user stories.
Come abbiamo visto le storie non sono un nuovo modo di scrivere i requisiti, ma molto di più. Hanno come minimo 3 funzioni:

  • sono un placeholder per una conversazione sui bisogni degli utenti
  • sono strumenti per capire cosa vogliono gli utenti e cosa ha senso realizzare
  • sono un modo per programmare il lavoro del team.

Quindi ricordatevi di prestare attenzione a tutti e 3 gli aspetti: non solo al testo che andrete a scrivere su una scheda, ma anche alle conversazioni sulla funzionalità e ai criteri di conferma che utilizzerete per determinare se la storia è completa.

Note

Questo post è liberamente tratto dalle lezioni di Mike Cohn sulle user stories. Se volete approfondire vi consiglio il suo corso – molto valido – “Better User Stories“.

Nel blog trovate anche diversi post dedicati alle storie. Eccone qui una piccola selezione:

IAD 2019: la mia intervista con AgileForItaly

In occasione degli Italian Agile Days che si sono tenuti a Modena l’8 e il 9 Novembre 2019 ho avuto il piacere di fare quattro chiacchiere sul tema Impact Mapping con gli amici di AgileForItaly.

Li conosco da tempo e ammiro il gran lavoro che Tiziano, Pierpaolo e Davide  stanno facendo per diffondere in modo chiaro e divertente le tematiche Agili in Italia.
Ci accomuna la medesima passione e la voglia di non prenderci troppo sul serio ;)

Nell’intervista parliamo di temi che ho già avuto modo di approfondire in altri post:

Qui in particolare ci siamo soffermati su come applicare l’Impact Map ai progetti growth, come produrla in modo collaborativo all’interno del team di lavoro, come darne visibilità in azienda e ogni quanto aggiornarla. Ho aggiunto anche qualche trucchetto su come partire da 0.

Ecco qui l’audio.
Buon ascolto!

E se ancora non lo conoscete vi consiglio di dare quanto prima un occhio al sito di AgileForItaly. Troverete tante risorse interessanti.

LeSS (Large-Scale Scrum): 15 domande a Craig Larman

Craig_Larman

Questa settimana ho partecipato ad un Meetup con Craig Larman, uno dei pionieri nell’applicazione di Scrum in contesti allargati.
Larman era a Milano dal 4 al 6 Luglio per il suo corso di Certified LeSS Practitioner.
Durante l’incontro i partecipanti hanno avuto l’occasione di approfondire dubbi e questioni direttamente con l’autore di “Scaling Lean & Agile Development“.
Questa è una sintesi delle domande emerse nel corso della serata.

Cosa significa essere agili?

Significa essere flessibili, adattarsi al cambiamento.
Non a caso quando queste pratiche sono nate erano due le parole in lizza per descrivere il framework: agile e adaptive ed entrambe sottolineano questo concetto.
Diciamo infatti “essere agili” piuttosto che “fare Agile”.
Essere agili significa mettere da parte l’arroganza di conoscere e abbracciare l’umiltà dell’imparare.

Quali sono gli elementi caratteristici di LeSS?

LeSS prevede 3 ruoli: il Product Owner, responsabile di massimizzare il valore prodotto; da 2 a 8 team che hanno il compito di realizzare l’incremento di prodotto potenzialmente rilasciabile e gli Scrum Master ad agevolare il processo (di norma 1 Scrum Master ogni 3 team).
In LeSS esiste un unico Product Backlog per il prodotto.
Per quanto riguarda gli Sprint Backlog invece ogni Team ha il proprio che viene stabilito nel corso dello Sprint Planning.
LeSS prevede gli stessi eventi di Scrum, ma li declina diversamente per la presenza di più team.

Quanti sono i framework LeSS?

Large-Scale Scrum prevede 2 framework: LeSS e LeSS Huge
Il primo si applica a situazioni in cui è presente un Product Owner, 1 product backlog e da 2 a 8 team di sviluppo che lavorano sul medesimo prodotto.
LeSS Huge si applica in contesti ancora più ampi, dove un singolo Product Owner avrebbe difficoltà ad avere una visione complessiva dell’intero prodotto.

Ci sono delle pre-condizioni per adottare LeSS?

LeSS non è un framework che si presta ad essere adottato bottom-up; deve essere introdotto dall’alto, al senior level.
Necessita la presenza di un management evoluto perché richiede un profondo cambiamento del sistema. Stiamo parlando di eliminare tutti i component team, così come i progetti e i programmi.

Può essere utilizzato in realtà multi-site?

LeSS è stato implementato in molte realtà con persone che lavorano su diverse sedi.
Ma c’è un vincolo: all’interno di un singolo team le persone devono essere co-locate, non disperse. I diversi team possono invece essere sparsi su più sedi geografiche.

Come posso convincere il management ad adottare LeSS?

Non puoi convincerli. Non funziona la dinamica di convinzione.
Sono loro che devono arrivare a sentire davvero l’urgenza del cambiamento, perché le dinamiche di resistenza al cambiamento sono molto forti nelle organizzazioni.
L’idea di fondo è che le persone debbano arrivare a fare propria un’idea (own), invece che accoglierla da altri (rent).
Nel momento in cui la convinzione è una dinamica interna solo allora si crea davvero la possibilità per un cambio radicale.
Molte aziende hanno troppi soldi” dice Larman, quindi si possono permettere tante modalità disfunzionali e non hanno questo senso di urgenza. Mettono in atto solo “fake changes”.

Non c’è proprio nulla che posso fare per agevolare questo cambiamento?

Ciò che si può fare è cominciare a creare interesse e curiosità intorno a questo argomento.
Le possibilità sono tante: far circolare dei libri che trattano di LeSS presso persone chiave in azienda, inviare video, trovare degli sponsor interni all’organizzazione, crearsi degli alleati in questo percorso, promuovere eventi e incontri con esperti esterni all’azienda.

Come avviene lo Sprint Planning?

Lo sprint planning è diviso in due parti.

Nella prima parte sono presenti il PO ed i rappresentanti dei diversi team (è bene che ruotino da un planning all’altro).
Questa prima parte dura massimo 2 ore per uno sprint di 2 settimane, ma spesso si conclude in meno di un’ora.
In questa fase il PO presenta le user stories in ordine di priorità, viene definito lo Sprint Goal ed i rappresentanti dei team selezionano le attività sulle quali lavoreranno.

Nella seconda parte sono di fatto i team ad organizzarsi e più tavoli di discussione possono essere portati avanti in parallelo. In questo momento ogni team elabora il proprio piano per produrre l’incremento di prodotto. Il PO può chiarire eventuali dubbi in questo momento.

Come vengono assegnate le user stories ai vari team?

Le user stories non vengono “assegnate”.
In Scrum trattiamo le persone come adulti.
Sono i team ad auto-organizzarsi e a scegliere le storie da realizzare per poter produrre un incremento.

Che cosa si intende per integrazione continua?

Non parlo tanto di continuous integration ma di integrate continuously.
L’integrazione continua non è una questione di strumenti e tool, riguarda il comportamento e la forma mentis degli sviluppatori.

Si basa su 3 pratiche:

  • effettuare check in e check out del codice con cicli il più corti possibile (stiamo parlando di qualche minuto!);
  • evitare l’utilizzo di branches (tutti i team lavorano sul master);
  • utilizzare un sistema di continuous integration sempre attivo e dove i test girano continuamente.

Come è opportuno procedere quando non si hanno le idee chiare su quale architettura adottare?

In questi casi è bene utilizzare un processo di Agile Modeling in cui i diversi team si trovano assieme ed elaborano idee al fine di individuare la migliore soluzione al problema.
Vengono fatti sketches dell’architettura. Si tratta di prendere decisioni partecipate.

In fase di implementazione tuttavia solo uno dei team parte ad abbozzare la soluzione condivisa (è una questione di focus). Può così verificare se si tratta di un’idea valida o se è necessario apportare delle correzioni piuttosto che riconsiderare il tutto.

Le emerging architecture non funzionano bene in contesti large scale.

Ma in pratica per iniziare ad adottare LeSS come è bene partire?

All’inizio è bene evitare di avere un gruppo troppo piccolo (ad esempio 2 soli team) o troppo numeroso. Nel primo caso il test non è rappresentativo, nel secondo il livello di difficoltà è eccessivo.

Partite con questo set:

  • 50 persone circa
  • 1 solo prodotto
  • 1 unica sede
  • per un periodo di 6 mesi

E’ fondamentale costruire un’esperienza di successo, perché il codice funzionante è molto più convincente di qualsiasi power point. In questo modo (e solo in questo) si guadagna credibilità all’interno dell’organizzazione.

Come sono organizzati i team in relazione ai prodotti?

Da questo punto di vista LeSS è perfettamente in linea con Scrum.
Scrum è un modello product-centric.
I team devono essere disaccoppiati dal codice ma in relazione stabile con i prodotti.
Più team lavorano sempre su un determinato prodotto.
Quando l’organizzazione non è strutturata in questo modo non sto adottando un framework Agile, sto semplicemente tentando di migliorare l’efficienza nella gestione dei progetti.

Qual è il ruolo del Product Owner in LeSS?

Il ruolo del Product Owner in LeSS non cambia rispetto a Scrum e ai contesti non scalati.
Il PO è colui che gestisce il prodotto soddisfando i bisogni degli utenti finali, colui che comunica al team gli obiettivi e la vision di alto livello.
Il PO non è un Business Analyst; è un imprenditore, un innovatore, un pensatore a livello sistemico, di fatto un “mini CEO”.
In LeSS è previsto che un Product Owner possa gestire sino a 8 team (con il supporto di alcuni Scrum Master), per un totale di oltre 50 sviluppatori. Questo significa necessariamente adottare un modello di product ownership “diffusa”, dove i membri del team hanno un’elevata conoscenza del dominio e grande maturità professionale.

Quanto è grande un prodotto in LeSS?

La grandezza del prodotto dipende da diversi fattori: il numero di prodotti che un’azienda gestisce e la loro ampiezza.
Per intenderci Microsoft Word è un prodotto, un prodotto ancora più grande è MS Office.
Ad ogni prodotto corrisponde un product backlog e diversi team lavorano continuativamente sul medesimo prodotto.
Più l’azienda segmenta il prodotto e maggiore è la possibilità che diminuisca il valore delle singole user stories lavorate. Sta ottimizzando “localmente”, ma non a livello sistemico.
Per produrre maggior valore è bene avere prodotti di ampio respiro, più grandi e non più piccoli.