Fondata nel 2012, Tannico è l’enoteca online con la più ampia e attenta selezione di vini italiani del mondo. Attualmente il sito è attivo in diciotto Paesi e solo nel 2020 ha permesso la vendita di 2.500.000 bottiglie nel mondo. Il catalogo conta oltre 15.000 etichette, di cui l’80% italiane provenienti da 2.500 cantine. Approvvigionare un magazzino che vanta tali numeri è complesso, così Tannico ci ha contattati per realizzare una soluzione che semplifichi la gestione degli ordini e le relazioni con i fornitori e la logistica. Noi abbiamo accettato la sfida iniziando a surfare tra le complessità di questo dominio.

La discovery: definire le priorità e un piano rapido per soddisfarle

Come di consueto, la nostra attività è iniziata con una discovery. Un nostro team cross funzionale ha incontrato virtualmente le persone di Tannico che conoscono il processo di gestione ordini, così da far emergere i loro obiettivi, insieme alle aspettative degli utenti.

Ridurre il tempo necessario a gestire gli ordini verso i fornitori è emersa chiaramente come priorità principale, insieme ad alcuni obiettivi secondari, come la riduzione del numero di anomalie segnalate dalla logistica e la centralizzazione delle informazioni relative ai fornitori, allocate in diverse piattaforme.

Utilizzando la Stakeholder Map abbiamo approfondito chi sono i soggetti interessati al nuovo progetto, chi ha responsabilità decisionali e chi ne è coinvolto. 

Inoltre, abbiamo esplorato i vincoli del progetto e portato in evidenza le priorità da tenere in considerazione durante lo sviluppo della piattaforma.

Visto il dominio complesso, ci siamo avvalsi dell’Eventstorming per esplorarlo. Da questa attività sono emersi gli eventi che occorrono durante il flusso di gestione ordini, i vari attori, i sistemi software che interscambiano dati e le criticità del processo. Abbiamo inoltre definito un vocabolario condiviso (Ubiquitous Language) al fine di ridurre le ambiguità nelle conversazioni.

Infine, abbiamo mappato i flussi emersi dall’Eventstorming su delle user story, descrizioni delle funzionalità della piattaforma viste dalla prospettiva degli utenti. Questa attività ci ha permesso di definire una roadmap di progetto con dei rilasci incrementali. L’obiettivo della prima milestone, fissata ambiziosamente dopo sette settimane, è abilitare i Buyers – gli operatori di Tannico che mantengono le relazioni coi fornitori – a centralizzare le informazioni relative ai fornitori sulla nuova piattaforma e inviare ordini ai fornitori tramite email automatiche, il tutto interscambiando dati con l’e-commerce e il sistema di previsioni di vendita.

All’opera!

Dopo aver esplorato il dominio e aver chiarito obiettivi e metriche, abbiamo rimodulato il team cross funzionale così da mettere in campo le competenze più giuste per questo progetto. I materiali prodotti durante la discovery hanno abilitato l’ingresso di nuovi membri nel team, permettendogli sin da subito di portare valore al progetto. Così, iterazione dopo iterazione, abbiamo messo in campo tutte le competenze necessarie, occupandoci di progettazione delle interfacce e dell’esperienza d’uso, di sviluppo frontend, backend e dell’infrastruttura cloud.

Abbiamo deciso, di concerto con Tannico, di sviluppare il backend dell’applicazione in PHP. Nello specifico ci siamo avvalsi di Symfony e ApiPlatform per realizzare delle REST API che vengono consumate da un frontend basato su React e Next.js. Lo stack tecnologico è stato scelto in modo da permettere in futuro al team di sviluppo interno a Tannico di prendere in carico eventuali evolutive della piattaforma con uno sforzo minimo. Nella scelta dell’architettura e dei framework abbiamo inoltre tenuto in considerazione i ragionamenti fatti durante la discovery sulla qualità del software, sul debito tecnico e sull’impatto che essi hanno in combinazione con altre leve, come scope, budget e deadline. Nella fattispecie, abbiamo accettato alcuni compromessi al fine di ridurre i costi, rilasciare valore in anticipo e avere subito feedback dagli utenti, consapevoli del fatto che in futuro potrebbe essere necessario del refactoring.

Per quanto riguarda l’infrastruttura cloud, che risiede su AWS, è stata realizzata con un approccio incrementale: questo ci ha permesso di mettere online le prime funzionalità già dalla prima iterazione. I servizi impiegati per questo scopo sono molteplici vista la complessità del progetto. Nella parte frontend abbiamo utilizzato CloudFront ed S3 per la tipologia di Framework presente. Per quanto concerne le API, invece, abbiamo creato un cluster ECS con compute engine Fargate, che assicura la diffusione su diverse availability zone (zone di disponibilità) per garantire alta affidabilità. A completamento dell’utilizzo di ECS abbiamo configurato il servizio Step Functions per l’esecuzione di task periodici.

Abbiamo instaurato sin da subito una comunicazione quotidiana, diretta ed efficace con le persone di Tannico: abbiamo creato un canale Slack condiviso con loro per dialogare e collaborare tutti alla buona riuscita del progetto. Inoltre abbiamo stabilito una riunione che teniamo con cadenza settimanale, il cosiddetto iteration meeting, durante la quale passiamo in rassegna le user story completate nell’iterazione precedente e definiamo lo scope dell’iterazione successiva. 

Il software funzionante è il principale metro di misura di progresso”, così recita uno dei principi del Manifesto agile: per questo ad ogni iteration meeting presentiamo le nuove feature e chiediamo agli utenti di provarle sin da subito, così da prendere atto dei progressi e darci tempestivamente feedback. Questo momento si è rivelato fondamentale per il team in quanto ha permesso alle persone di aver chiare le priorità e lo scope di ogni singola iterazione, e quindi di discutere e calibrare i dettagli implementativi delle varie user story al fine di mantenere una velocity adeguata a raggiungere gli obiettivi stabiliti nella roadmap. 

Il nostro contratto Soddisfatti o Rimborsati ha fatto da tutore a questo processo, spingendoci alla ricerca continua e puntuale di feedback da parte del cliente e garantendo a quest’ultimo il rilascio costante di valore agli utenti. 

Un altro dei principi del Manifesto agile invita i team a riflette a intervalli regolari su come diventare più efficace. Per questo, già dopo un paio di iterazioni ci siamo presi del tempo per fare una retrospettiva, in modo da riflettere sull’operato del team e capire come fare meglio nelle iterazioni successive. Dalla retrospettiva sono emersi tanti aspetti positivi, tra cui una sana comunicazione tra le persone di Flowing e Tannico, e il fatto che il processo e l’organizzazione del lavoro nel suo complesso fossero soddisfacenti. Tuttavia, un gruppo motivato trova sempre spunti di miglioramento, così sono emersi anche alcuni aspetti sui quali agire per migliorare ulteriormente il processo. Uno di questi punti richiedeva un aumento del tempo da dedicare al design delle interfacce. Grazie al nostro processo interno di planning, siamo riusciti a trovare una soluzione che ci ha permesso già dall’iterazione successiva di ri-focalizzarci su quanto il progetto richiedeva.

I prossimi passi

Attualmente siamo alla decima iterazione. I Buyers hanno già iniziato ad utilizzare la nuova piattaforma per gestire i loro ordini e organizzare le informazioni relative ai fornitori. La strada per raggiungere gli obiettivi del progetto è ancora lunga e ogni settimana emergono nuove idee e bisogni. Abbiamo raccolto i primi feedback e sulla base di questi abbiamo rimodulato le priorità sulle prossime funzionalità. Nelle prossime settimane rilasceremo una nuova versione che consentirà l’accesso alla piattaforma anche ai fornitori, così da automatizzare ulteriormente il processo. 

Flowing ci sta aiutando ad ottimizzare dei processi interni sviluppando un software adatto alle nostre esigenze che – essendo molto specifiche – presuppongono un alto grado di conoscenza dei meccanismi interni.
Flowing utilizza varie metodologie di lavoro, grazie alle quali è stato semplice e veloce
condividere conoscenza e iniziare a parlare subito una lingua comune.
Questo, insieme ad una organizzazione del lavoro molto precisa e ordinata ed una comunicazione lineare e pragmatica, ci ha permesso di avere valore già dalle prime iterazioni.
Le tecnologie da utilizzare sono state decise insieme in modo da permetterci di essere indipendenti sugli sviluppi ed eventualmente riuscire a lavorare a quattro mani.

Cristiano Pellegrino, CTO Tannico