Il primo Product Owner della storia

In questi giorni sto leggendo il libro di Jeff SutherlandFare il doppio in metà tempo: Puntare al successo con il metodo Scrum“.
Il volume racconta in maniera discorsiva come attraverso varie esperienze personali e professionali Sutherland – il padre fondatore di Scrum insieme a Ken Schwaber – sia arrivato ad elaborare il famoso framework.

Non mancano aneddoti divertenti sui progetti più disparati salvati dall’adozione di Scrum (dai sistemi di antiterrorismo sviluppati dall’FBI, ai primi ATM, agli applicativi per la gestione delle ricette online, ma anche ristrutturazioni edilizie e matrimoni).

Una delle parti più interessanti per me è il racconto di come è nata la figura del Product Owner e come se l’è immaginata ai tempi l’autore.

Tutto sta a mettere in ordine di priorità il lavoro da fare.
Come si fa? Beh, per prima cosa vi serve qualcuno che sia in grado di capire contemporaneamente qual è la visione e dove sta il valore. In Scrum lo chiamiamo “Product Owner”.

Il Product Owner decide quale dev’essere il lavoro. Gestisce il Backlog, i compiti che include, e soprattutto l’ordine in cui vanno messi in atto.
Nel 1993, quando ho avviato il primo team Scrum, non avevo un Product Owner. Facevo parte del gruppo dirigente e avevo tante altre responsabilità oltre a quella di capire esattamente cosa doveva fare il team in ogni Sprint.
Mi occupavo del management e del marketing, trattavo con i clienti e definivo la strategia. Ma in quel primo Sprint ho capito che potevo anche gestire il Backlog. Dovevo solo fare in modo di avere abbastanza “storie” e abbastanza caratteristiche su cui mettere al lavoro il team nello Sprint successivo.
Il problema era che dopo il secondo Sprint abbiamo introdotto il Daily Stand-up. La velocità è aumentata del 400% nello Sprint successivo, e il team ha portato a termine in una settimana il lavoro che avevamo preventivato su un mese.
Non c’era un altro Backlog su cui metterlo al lavoro! Avevo pensato di avere davanti un mese per creare altre “storie”.
È un problema che vorrebbero tutti, bisogna ammetterlo, ma andava comunque affrontato. Quindi ho ideato il ruolo del Product Owner e ho cercato di capire che caratteristiche dovrebbe avere idealmente chi è chiamato a ricoprirlo.

Mi sono ispirato al Chief Engineer di Toyota
… ciò che non hanno [ i Chief Engineer] è l’autorità.
Nessuno riporta a loro, semmai sono loro che riportano ai propri gruppi.
I collaboratori possono dire ai Chief Engineer che sbagliano, perciò costoro devono accertarsi di aver ragione.
Non valutano la performance di nessuno, e non concedono né promozioni né aumenti, ma decidono la visione della nuova vettura, e stabiliscono come verrà costruita, con la persuasione, e non con la coercizione.
È questa idea che volevo incorporare in Scrum.

Già agli albori di Scrum sapevo di aver bisogno di qualcuno che conoscesse molto bene il cliente.
Il Product Owner doveva essere in grado di riportare al team il feedback del cliente a ogni Sprint. Doveva dedicare metà del proprio tempo a parlare con le persone che acquistavano il prodotto (ascoltandone le opinioni sull’ultima release incrementale e su come creava valore), e l’altra metà a sviluppare il Backlog con il team (spiegando ai suoi membri cosa apprezzavano e cosa non apprezzavano i clienti).
Ricordatevi che il “cliente” potrebbe essere il consumatore in generale, una grande banca, vostro marito o chi ha bisogno del vaccino contro il rotavirus e dipende da voi per ottenerlo. Il cliente è chiunque tragga valore da ciò che fate.
Però non volevo un manager. Volevo qualcuno in cui il team credesse e di cui potesse fidarsi quando metteva in ordine di priorità il Backlog. Perciò sono andato a prendere il più bravo di tutti nel product marketing; attenzione, non nell’engineering, ma nel marketing. Ed è così che Don Rodner è diventato il primo Product Owner.
Conosceva il prodotto che stavamo sviluppando non da un punto di vista tecnico – pur sapendone abbastanza da poter comunicare con gli ingegneri – ma piuttosto dal punto di vista del cliente.
Di che cosa avevano bisogno coloro che usavano effettivamente il prodotto? Quando siete alla ricerca di un Product Owner, scegliete qualcuno che sia in grado di mettersi nei panni di chiunque tragga valore da ciò che fate.

Caro Product Owner, di cosa sei realmente owner?

Avete presente la differenza tra un prodotto, una specifica funzionalità ed un componente di prodotto?
Questa distinzione – magari non immediata per tutti – è alla base della classificazione che Roman Pichler adotta per chiarire l’ambito di intervento del Product Owner.
Ancora oggi infatti c’è una certa confusione su questa figura perché si tratta di un ruolo complesso, sfaccettato e che può essere applicato in modo differente a seconda dei contesti organizzativi e della dimensione dell’azienda.

Ma partiamo dalle basi…
Di cosa si occupa il Product Owner?
Il Product Owner è colui che gestisce il prodotto per conto dell’organizzazione.
Avrà quindi due referenti principali: da una parte gli utenti o clienti, dall’altra l’azienda stessa che commercializza il prodotto.
Il prodotto è un mezzo per creare valore.
Qualcosa in grado di risolvere un problema o generare un beneficio per gli utilizzatori e i clienti, ma anche un asset tangibile dell’azienda in grado di generare revenue o stimolare la vendita di altri prodotti/servizi.

Secondo questa definizione è legittimo chiedersi se il Product Owner gestisca uno o più prodotti e se ciò che gestisce sia davvero un prodotto.
L’ambiguità è data dal fatto che spesso le funzionalità e i componenti – che sono parti del prodotto – vengano considerati essi stessi prodotti, pur non essendo in grado di generare valore da soli.

Analizziamo più nel dettaglio questi concetti.
Una funzionalità è un attributo del prodotto con cui l’utente può interagire.
Parliamo ad esempio di una funzione di ricerca e navigazione, del log-in o del check-out per effettuare un acquisto.
Tutti questi sono step dello user journey, non prodotti essi stessi.
Il valore per l’utente è dato dall’esperienza complessiva, non dalla singola funzionalità (avete mai sentito discorsi di questo genere? “Non sono riuscito ad acquistare il prodotto che volevo, ma sono rimasto soddisfatto del semplicissimo processo di registrazione”. Mai visto!).
Colui che gestisce singole funzionalità di prodotto è un Feature Owner.

D’altra parte un componente è un building block del prodotto, un elemento della sua architettura come ad esempio un database management system, un data access layer o la user interface stessa.
Anche in questo caso si tratta di una parte del prodotto (uno strato a ben vedere), non del prodotto nell’accezione di veicolo di valore.
Qui il concetto nella testa dell’utilizzatore finale si fa sempre più labile. Come è organizzato tecnicamente il prodotto non ha alcun importanza per il cliente (“Basta che funzioni!”).
Chi gestisce singoli elementi dell’architettura del prodotto è un Component Owner e di norma ha un background tecnico dato l’ambito specializzato di intervento.

Anche a livello della product ownership vera e propria è possibile fare una distinzione.
Un conto è gestire un prodotto a livello strategico, altra cosa è gestirne l’evoluzione day-by-day.
Pur essendo questi due livelli intercomunicanti, le skill e le competenze richieste sono profondamente diverse.
Pichler parla in questo caso di “Big Product Owner” e “Small Product Owner”.

Il Big Product Owner è responsabile sia della strategia sia della tattica, ma delega l’esecuzione della seconda ad altre figure.
E’ colui che elabora la vision di prodotto e ne definisce gli obiettivi. Deve sapere come il prodotto crea valore, chi sono i clienti, qual è la sua value proposition distintiva e come si differenzia rispetto ai competitor.
Il Big Product Owner definisce la roadmap di prodotto, gestisce gli stakeholders, interagisce con i customer e gli user, produce forecast e tiene traccia delle performance.

Lo Small Product Owner è responsabile di attività di tipo tattico.
Gestisce e prioritizza il backlog, scrive le user stories, si occupa del release planning, partecipa alle cerimonie Scrum e lavora a diretto contatto con il team di sviluppo e lo Scrum master avendo prevalentemente a che fare con i vincoli di prodotto (tempi, costi e ambito).

Ovviamente il tipo di Product Owner adottato in un determinato contesto è in stretta correlazione con l’organizzazione dei team di lavoro e la dimensione dell’azienda.
Se l’azienda adotta component team avremo dei Component Owner, se utilizza feature team potremo avere sia Feature Owner sia Product Owner.
La differenza tra Big e Small Product Owner può dipendere anche dalla dimensione dell’azienda: in start-up, realtà medio-piccole e aziende grandi dove sono stati adottati framework di scaling sono più facilmente presenti Big Product Owner (figure più vicine all’ambito del product management classico); in realtà di medie dimensioni dove sono presenti più prodotti o prodotti maturi la responsabilità è più spesso ripartita tra Small Product Owner, mentre il vero controllo del prodotto è tenuto dal management o da figure dedicate (es. Head of Product, Business Owner, ecc.).

E voi che tipo di Product Owner siete? Avete sperimentato questi diversi livelli di gestione? Avete preferenze a riguardo? Mi piacerebbe confrontarmi con chi ha esperienze di prima mano su questo tema.

Per approfondimenti sull’argomento trovate a questo indirizzo la registrazione del webinar di Roman Pichler sul ruolo del Product Owner che ha ispirato questo post.

Come gestire user stories tecniche

Capita a tutti di dover inserire tra le attività del team task di tipo prettamente tecnico.

In questo articolo vi porto l’esempio di 3 modi differenti di gestire questo tipo di richieste.
Innanzi tutto ha senso parlare di user stories tecniche?
Mhhh, dipende…
Se siamo in grado di individuare nella richiesta un soggetto, un oggetto e un beneficio esplicito è utile definirla attraverso il format della user story.
Se non è così e ci si spacca la testa per far rientrare una richiesta in un modello che non le appartiene in alcun modo meglio evitare del tutto. Non l’ha prescritto il medico che tutto ciò che entra nel backlog sia esclusivamente una user story!
Ci può essere molto altro, ad esempio task di bug fixing, attività architetturali, prototipi, spike e via così.

Ha senso tracciare queste attività tecniche?
Assolutamente sì! Il team spende del tempo su questi task così come sull’implementazione di nuove funzionalità ed è importante tenerne traccia per monitorarle e pianificare il modo migliore di gestirle nel tempo.

Come affrontarle?

Sprint funzionali e sprint tecnici

Quando nel corso del tempo non c’è stata un’attenzione continuativa alla qualità e al refactoring possono presentarsi casi in cui il codice legacy ha raggiunto livelli decisamente problematici.
In alcuni di questi casi mi è capitato di vedere i team di sviluppo alternare sprint in cui venivano implementate nuove funzionalità e sprint tecnici dedicati soprattutto al refactoring e alla “messa in sicurezza”.
Ad esempio a 3 sprint funzionali seguiva uno sprint tecnico.
Dico subito che non sono una fan di questa soluzione perché per la mia esperienza produce più svantaggi che vantaggi.

Svantaggi
E’ di difficile “digestione” da parte del business che fatica a comprendere uno stop forzato ogni mese e mezzo; è spesso difficile individuare un chiaro obiettivo dello sprint tecnico; il product owner ha difficoltà a misurare il valore di questo tipo di interventi (che peraltro poco si prestano a demo); richiede una maturità di gestione se possibile ancora più elevata da parte del team.
Infine spesso e volentieri questo sforzo non porta comunque un miglioramento effettivo in tempi brevi del codice legacy.

Vantaggi
Il team è fortemente focalizzato sulla risoluzione degli aspetti tecnici, li gestisce in totale autonomia e non subisce interruzioni.

User stories funzionali e tecniche nel medesimo sprint

Questa modalità di gestione è piuttosto frequente.
Il tempo disponibile dello sprint è suddiviso tra sviluppi funzionali e attività di tipo tecnico. Diciamo che il team concorda con il product owner di dedicare ad esempio l’80% del tempo ai primi ed il restante 20% ai secondi.
E’ il classico esempio di “un colpo al cerchio e uno alla botte”…

Svantaggi
Il team fa contest switching all’interno dello sprint (si tratta spesso di attività a sé stanti rispetto al resto); è difficile individuare un unico sprint goal.
Richiede comunque tempi lunghi per vedere effettivi benefici a livello di legacy.

Vantaggi
E’ un compromesso più che accettabile per il business perché non richiede periodicamente uno stop delle attività; questa modalità di gestione può essere adottata in ogni sprint; al termine di ogni iterazione consente di avere workable software da mostrare durante le demo.

Aspetti funzionali e tecnici nella medesima user story

Questa è un’altra possibilità e devo dire che tra tutte è quella dalla quale sento di aver tratto maggior beneficio.
In sostanza in ogni storia il team stima una quota parte di refactoring del codice e/o dei test. Questo si traduce in prima battuta in user stories che vengono valutate con un peso maggiore (e quindi in una diminuzione iniziale della velocity del team), ma in un tempo relativamente breve la situazione torna alla normalità e – addirittura – a migliorare.
E’ importante notare che richiede grande maturità tecnica ai membri del team e la capacità di fare solo ciò che è opportuno e nulla di più (no virtuosismi se non sono necessari).

Svantaggi
Il refactoring viene effettuato sulle sole storie funzionali lavorate nel corso dello sprint; iniziale diminuzione della velocity.

Vantaggi
Non ha effetti collaterali sugli stakeholder; questa modalità di gestione può essere adottata continuativamente; aumenta da subito la qualità del software e l’attenzione del team a questo aspetto; nel tempo porta grande confidenza ai dev sulle parti che hanno toccato e maggiore velocità di sviluppo.

E voi quale tipo di approccio adottate?
Quale ritenete più utile per il vostro caso? Avete esplorato altre possibilità?
Ci sono casi in cui per risolvere problemi di legacy avete dovuto adottare approcci più radicali?
Sono curiosa di sentire le vostre esperienze…