Anatomia di una User Story card – Retro

Continuo la saga sul tema delle user stories.

Dopo i due post:

vediamo adesso cosa contiene il retro di una user story card.

User-story-back

Ricordo che la User Story parte da una frase che descrive ciò che un utente fa o vorrebbe fare su un sistema o comunque nel suo lavoro quotidiano ed è scritta nel linguaggio dell’utente.

A questo punto le informazioni necessarie e che richiedono un alto livello di visibilità per tutti sono:

  • quali task e attività servono per completare concretamente la storia?
  • quali test devono essere scritti o implementati per garantire il livello di qualità richiesto e soprattutto per verificare con il cliente che la user story è effettivamente completa?
  • quanto manca per finire?

Le risposte a queste tre domande si trovano sul retro della user story card.

I test di accettazione (UAT)

In fase di planning è necessario elencare quali saranno gli User Acceptance Tests (UAT) che dovranno essere implementati per soddisfare questi requisiti:

  • servono in fase di analisi per chiarire ulteriormente le idee al cliente
  • servono a chi sviluppa per poter dire “ho fatto” e spostare quindi la user story card in “Done”
  • servono in fase di Demo Meeting per dimostrare e verificare che la user story è stata correttamente implementata e che l’implementazione fa ciò che ci si aspettava.

L’elenco dei task

Quando la scheda entra in una sprint deve essere già stato analizzato quali sono i passi da compiere per completare la User Story.

Elencando i task si ottengono questi vantaggi:

  • di nuovo viene stimolata la scomposizione della User Story in attività più piccole (ed in questo contesto in attività concrete quali sviluppo di righe di codice, attività di infrastruttura, realizzazione di DB ecc ecc)
  • viene data una stima dei task in ore. Dato che la User Story è già temporalmente limitata, la stima dei task che sono attività dettagliate e ancora più piccole dovrebbe essere più realistica
  • i task possono essere eseguiti in parallelo da sviluppatori (o pair programmer) diversi

Nota bene: è solo in questo contesto che compare per la prima volta il tempo, tipicamente in ore, come unità di misura. Ricordo che fino ad ora la User Story è stata stimata in Story Point e quindi svincolata dal fattore temporale.

La scomposizione in task ed ore e la relativa somma consentono di fare un controllo incrociato con gli Story Point per avere un ulteriore conferma della stima della User Story.

Ricordo sempre che lo spazio sulla scheda è limitato e quindi sia i test di accettazione sia i task non devono necessariamente essere esaustivi ma devono essere un promemoria per stimolare la comunicazione.

Il tempo residuo

Infine la domanda più importante, più frequente e con il maggiore grado di incertezza nella risposta: quanto ci vuole per terminare?

Tutto il lavoro di scomposizione, analisi e stima fatto fino ad ora sulla User Story Card viene riassunto nella somma delle ore residue che viene mostrata nella User Story Card e che deve essere aggiornato ogni giorno (normalmente dopo lo stand-up meeting e può essere fatto dallo Scrum Master).

E’ importante notare che in questa fase non è di alcun interesse parlare di ore lavorate ma di ore residue.

Le ore residue infatti vengono tracciate sul burndown chart e danno un’indicazione quotidiana dello scostamento dalla situazione ideale in modo da poter intraprendere ogni giorno le necessarie azioni correttive.

Ovviamente le ore lavorate sono un’informazione importantissima che deve essere tracciata su sistemi elettronici di Issue Tracking, ma che non incide sulla sprint e deve essere oggetto di analisi in fase di Retrospettiva.

Share

Anatomia di una User Story card – Fronte

Nel post precedente abbiamo visto cos’è una User Story e quali sono le motivazioni che la rendono uno strumento di analisi, di condivisione delle informazioni chiave e di stimolo al confronto all’interno di un team.

Adesso voglio scendere nel dettaglio della struttura di una User Story card.

Innanzitutto un primo nota bene: una User Story raccoglie in maniera discorsiva ciò che un utente fa o vorrebbe fare nel suo lavoro quotidiano.

Una User Story Card è la rappresentazione cartacea (tipicamente in formato A6) della storia ma non solo. Raccoglie altre informazioni quali la “dimensione” della storia, i task per completarla, i test di accettazione e così via.

Ha un visibilità enorme, la si può spostare, ci si scrive sopra velocemente, sono facilmente riordinabili e confrontabili e soprattutto lo possono fare tutti. Compreso il cliente.

Non esiste LA user story card che va bene per tutti, questa è il punto di partenza che utilizzo io (fronte e retro):

User-story-frontUser-story-back

Innanzitutto una nota sulla dimensione della scheda: non deve essere troppo grande in quanto non è richiesta l’esaustività delle informazioni (per quella si va su un sistema elettronico) ma il riassunto delle informazioni fondamentali.

Partiamo dal fronte.

Titolo della User Story

Il titolo della user story serve per identificare sinteticamente e univocamente la storia.

Per esempio in un sistema di commercio elettronico può essere una frase del tipo:

  • Mario Rossi può inserire il prodotto nel carrello
  • Mario Rossi può rimuovere un prodotto dal carrello
  • Mario Rossi può svuotare completamente il carrello

Tipicamente il titolo è la descrizione sintetica con cui viene caricata nel sistema elettronico di gestione del progetto (Microsoft Team Foundation Server, Jira, OnTime, RedMine, AtTask per citarne alcuni).

Descrizione della User Story

Ricordo che la user story è un frase con questa struttura:

As Who, I want What so that Why

Continuando le storie precedenti potrebbe essere:

SONO “Mario Rossi”

e dalla pagina di dettaglio del prodotto VOGLIO inserire il prodotto nel carrello

PERCHE’ potrò avere in unico punto tutti i prodotti che vorrei acquistare

Ricordo l’aspetto essenziale: la user story deve essere scritta dal punto di vista dell’utente e utilizzando il suo linguaggio. Non c’è nulla di tecnico qui, non ci sono database, C#, o pezzi di interfaccia ma solo quello che un utente vuole fare interagendo con il sistema.

Anzi la situazione ideale è che la storia venga scritta dal cliente.

Un altro aspetto da notare è che non si parla di generico utente o cliente ma si utilizza uno specifico utente che appartiene ad una categoria che scaturisce dalla fase di user role modeling (anche di questo ne parlerò in un altro post).

In questo caso Mario Rossi è stato individuato come l’utente tipico B2C ed è chiaro a tutti quali sono le sue aspettative, le sue competenze tecniche, la sua conoscenza del dominio.

Dimensione e scadenza

La domanda scontata di fronte ad un requisito o, in questo caso, ad una User Story è: quanto ci vuole per implementarla?

Giorni? Ore? Giorni ideali? Giorni uomo? E le ferie? E i 2 membri del team che la prossima settimana devono lavorare su un altro progetto?

Il riassunto di questa e di altre informazioni “temporali” è racchiuso nel concetto di Story Point.

Genericamente si può dire che lo Story Point è una unità di misura delle User Story (al pari delle ore o dei metri) ed una misura sintetica della “dimensione della storia”.

Riesce ad essere indipendente dal tempo, non risente delle ferie o dei giorni di malattia, consente una stima molto veloce e il confronto tra le schede.

Una User Story da 8 SP è sicuramente più grande di una User Story da 5 SP. Facile, immediato e comprensibile da tutti, tecnici, commerciali, cliente.

Diventa anche il miglior metodo per fare un planning, per seguire l’andamento del progetto e per stimare e migliorare la velocità del team.

Ecco perchè DEVE essere in bella vista sul fronte della User Story Card.

Un’ultima informazione che, se presente, deve essere in primo piano è un’eventuale scadenza. Le storie entrano in una sprint in base alla priorità decisa dal Product Owner ma se c’è una scadenza ovviamente questo fa si che la storia venga selezionata per entrare in una sprint in base alla data di consegna.

Share

Differenze tra SCRUM e Extreme Programming (XP)

Recentemente mi è stata posta questa domanda durante una presentazione dei metodi Agili: “Quali sono le differenze tra SCRUM e XP?”

Entrambi sono classificabili come “applicazioni” dei principi Agili.

La differenza principale è che SCRUM è maggiormente orientato alla gestione di un processo mentre XP è maggiormente focalizzato sugli aspetti tecnici legati allo sviluppo del software.

SCRUM è un framework di management che comprende aspetti quali il reporting, il planning, lo stato di avanzamento, la definizione degli incontri con l’obiettivo di favorire la comunicazione e avere un feedback molto rapido (al limite giornaliero) dello stato di un progetto.
releaseburndown
SCRUM cerca di ridurre al minimo l’overhead di burocrazia necessario per la gestione di un progetto e si focalizza su un processo iterativo e incrementale che porta a produrre solo ciò che serve e di maggior valore per l’azienda.

SCRUM in questo senso non è quindi strettamente legato ai processi IT ma può essere applicato con successo a qualsiasi processo aziendale.

Nell’ambito stesso di un’azienda IT si sottolinea l’importanza del fatto che SCRUM deve essere abbracciato dall’intera azienda quindi anche dal management, dai commerciali, dal marketing.

Una delle principali differenze pratiche è che SCRUM identifica una nuova figura, lo Scrum Master. Lo Scrum Master si discosta dal più classico Project Manager che definisce i task e dice chi fa cosa ma è un più generico servant-leader con questi compiti:

  • rimuovere gli impedimenti
  • assicurarsi che il processo SCRUM venga applicato correttamente
  • proteggere il Team dalle “distrazioni” (comprese le ingerenze del management e dei commerciali)

pair-programmingXP (Extreme Programming) pone invece maggiore enfasi su aspetti tecnici e pratici per lo sviluppo software.

Nel contenitore XP sono presenti tematiche quali:

  • Test-Driven Development
  • Continuous Integration
  • Pair Programming
  • Refactoring
  • Collective Ownership
  • On-site customer
  • Coding standards

Quale scegliere?

Secondo me in una azienda che sviluppa software la risposta corretta è entrambi in quanto le metodologie sono perfettamente complementari.

SCRUM da solo porterebbe sicuramente benefici in un ottica Just in time ma per raggiungere la massima efficacia e per far si che le promesse del Manifesto Agile vengano rispettate le tecniche XP si rivelano utili se non fondamentali.

All’opposto XP beneficia di SCRUM in quanto riceve un “contenitore” che garantisce il project management e l’interfaccia con il business, i commerciali ed i clienti senza troppo overhead e senza costrizioni.

Share

Italian Agile Day 2008 a Bologna

Visto che mi stò interessando sempre più ai metodi agili, XP, TDD e compagnia bella ho visto e pubblicizzo volentieri questo evento che si tiene nella mia città (Bologna).

In attesa di partecipare invito tutti a dare un’occhiata al sito dell’evento.

Italian Agile<br /><br />
Day

Riporto anche l’annuncio testuale:

Italian
Agile Day 2008!

Venerdi’ 21 Novembre 2008 si terrà a Bologna il quinto Italian Agile
Day
. Si tratta di una conferenza
gratuita
di un giorno dedicata alle metodologie Agili
per lo sviluppo e la gestione dei progetti software rivolta agli
sviluppatori, project leaders, IT managers, tester, architetti e coach
che hanno esperienze da condividere o che iniziano solo ora ad
interessarsi a queste tematiche.
La giornata ha come obiettivo la conoscenza pratica, le esperienze sul
campo e un attivo coinvolgimento di tutti i
partecipanti. L’accesso è libero previa
registrazione, i posti sono limitati. L’evento, per la terza volta consecutiva, si auto-finanzierà.

Share