ProntoPro è un’azienda che aiuta a trovare online professionisti in diversi settori e offre la possibilità di confrontare preventivi in poche ore, gratis e senza impegno.
I loro software sono un asset chiave per il valore erogato dall’azienda, motivo per cui stanno cercando di migliorare le skill tecniche e le soft skill del loro team.
Ci hanno contattati proprio per questo: allineare, migliorare le skill tecniche, teoriche e pratiche sul tema DDD – Domain Driven Design – approccio utile a creare software il più in linea possibile con il business, in grado di evolvere negli anni seguendo obiettivi e necessità aziendali.
Formazione e workshop su misura
Abbiamo organizzato i primi incontri da remoto per definire l’obiettivo da raggiungere e le esigenze: una volta delineato il quadro, abbiamo creato un workshop distribuito in quattro mezze giornate, organizzate per temi con parti teoriche e pratiche.
Ogni sessione aveva uno scopo ben preciso ed un’agenda, condivisa prima delle sessioni.
Per ogni tema abbiamo creato slide e una board Miro, insieme ad un icebreaker iniziale per “riscaldare” il gruppo, esercizi pratici e momenti dedicati a domande e feedback.
Abbiamo dedicato la prima giornata ad un focus sul tema DDD e introdotto il workshop sull’EventStorming.
EventStorming è un workshop utile a creare allineamento e ad avere un linguaggio comune per il software che si sta creando o mantenendo.
Inizialmente l’idea era di fare l’EventStorming su un dominio diverso da ProntoPro, ma – chiedendo quali fossero le aspettative della giornata – alcune persone del team desideravano applicare il workshop di EventStorming al dominio specifico di ProntoPro, quindi in corso d’opera abbiamo accolto questo cambiamento.
In poco piú di due ore abbiamo fatto EventStorming su parte del loro dominio, per creare una visione globale e condivisa del processo lavorativo che tutti i giorni affrontano.
Ci siamo concentrati su alcune parti critiche per capire bene quali policy (e quante) ci potessero essere nei punti più delicati. La comunicazione tra le persone per approfondire i concetti chiave e possibili criticità, insieme ad un linguaggio appropriato guidato dallo “strumento” EventStorming, sono stati molto importanti per allineare il team, chiarire dubbi ed esplicitare il processo globale.
il workshop collaborativo di EventStorming
Nella la seconda mezza giornata, abbiamo utilizzato l’EventStorming come caso d’uso reale e chiaro a tutti per introdurre i concetti di Bounded Context e Context Mapping legati al loro software, utili all’organizzazione del codice in base al dominio, per esprimere al meglio i concetti nei loro contesti specifici.
Usando il dominio proprio di ProntoPro, il team è stato coinvolto in diversi esercizi volti anche a capire come la comunicazione sia alla base del lavoro quotidiano e come questi strumenti possano abilitarla giorno dopo giorno.
Alcune buone pratiche e concetti utili
Così, per le ultime due mezze giornate, abbiamo preparato un repository su misura con del codice di dominio di ProntoPro – seguendo i principi e i concetti intercettati precedentemente – per introdurre tactical DDD e l’architettura esagonale, utili alla creazione di codice mantenibile che possa evolvere negli anni senza dover fare refactoring esagerati o pensare alla riscrittura completa del codice.
Grazie al codice creato, abbiamo fatto sviluppo insieme per qualche ora con l’obiettivo di organizzare al meglio il software applicando le tematiche e le informazioni emerse in precedenza.
Il valore di queste ultime sessioni risiede non nel “tecnicismo” ma nel trasferire l’approccio al problema e come si comunica all’interno del team per esprimere al meglio i concetti di dominio: le informazioni emerse dall’EventStorming ci hanno guidato nel rivedere il flusso del software.
Abbiamo scritto un po’ di codice insieme
Il nostro obiettivo per questo workshop è stato quello di trasferire concetti teorici e pratici in merito al Domain Driven Design, insieme a casi reali ed esperienze professionali.
Un aspetto che abbiamo tenuto a diffondere è l’importanza della comunicazione sia all’interno del team che fuori: lo sviluppo del codice è un’attività corale che deve tenere conto di molti aspetti, tecnici, di business e di manutenibilità.
Il workshop è stato ben strutturato, dinamico ed equilibrato tra teoria e pratica. Abbiamo trovato le sessioni teoriche molto stimolanti; in particolare le discussioni emerse durante queste sessioni sono state utili e motivanti. Per quanto riguarda le sessioni pratiche, i ragazzi di Flowing sono entrati in pochissimo tempo nel dominio di ProntoPro, sebbene quest’ultimo sia vasto e complesso. Questo ci ha permesso di calare nel nostro contesto pratiche e concetti relativi al Domain-Driven Design, assicurandoci una comprensione più viscerale degli stessi. In generale, ci ha colpito la professionalità e l’energia positiva che i ragazzi di Flowing ci hanno trasmesso per tutta la durata del workshop.
David Sorrentino, Head of Software Engineering @ ProntoPro