Parlando di sviluppo software, tra i framework dello sviluppo Agile più interessanti Scrum è quello su cui oggi c’è maggiore attenzione.
Il motivo è semplice: in un contesto in cui la progettazione del software diventa sempre più serrata e difficile da prevedere, questo tipo di framework, utilizzato dai primi anni 1990 per gestire lo sviluppo di prodotti complessi, enfatizza tutti gli aspetti di gestione di progetto legati a contesti in cui è difficile pianificare in anticipo, offrendo un approccio che porta autorità decisionale a livello di proprietà ma anche di certezze operative.
La road map dello sviluppo imprevedibile
Lo sviluppo software a livello mondiale sta profondamente cambiando. Nell’ambito dello sviluppo Agile esistono metodi e approcci diversi per progettare un’applicazione. Il denominatore comune è la fase di raccolta o di generazione dei requisiti che, in un sistema di sviluppo Agile, deve essere caratterizzata da una grandissima flessibilità.
Che siano clienti, produttori, tester e team di sviluppo DevOps, le parti coinvolte giocano tutte un ruolo attivo nella creazione di requisiti di prodotto (User Story) utili a declinare nuove caratteristiche o particolari specifiche. Si tratta della cosidetta fase di Discovery che, in un approccio Agile, descrive il momento di raccolta delle specifiche che deve avere la soluzione software. Dal momento che il codice viene rilasciato in modo intermittente, gli utenti interni ed esterni, i tester e gli ingegneri hanno tempo e modo di considerare tutte le esigenze di sviluppo rispetto alle varie funzionalità applicative che devono andare a progettare.
L’importanza dello story mapping
Nella fase di ricerca dei requisiti concorrono diversi aspetti che includono tecniche come lo story mapping, una metodologia collaborativa mediante la quale, utilizzando una lavagna o banalmente un muro con dei post it, si realizza una vera e propria mappa concettuale del prodotto, evidenziandone i punti salienti, le caratteristiche e le motivazioni di business che giustificano un’attività di sviluppo.
In pratica avviene questo: una squadra definisce visivamente una mappa dei requisiti di prodotto, definendo le caratteristiche di progettazione attraverso una discussione attiva. Lo story mapping si focalizza su come ideare un design completo delle funzionalità, a cominciare dagli aspetti più verticali, fino ad arrivare allo sviluppo funzionale completo.
Man mano che gli user case sono riportati e condivisi, si discutono e si raccolgono le reali sigenze del sistema. Se, ad esempio, in questa fase una squadra scopre che sono necessari alcuni elementi utili a soddisfare le esigenze del cliente, questi entrano a far parte dei requisiti. Alcune specifiche, per altro, possono essere interne o esterne. In altre parole, gli sviluppatori vengono coinvolti attivamente nella creazione di nuova funzionalità. Il codice di un’applicazione esistente potrebbe dover essere potenziato per adattarsi ai frequenti cambiamenti che comportano le nuove specifiche progettuali, e tutte le relative implicazioni. Discutere dettagli complessi e questioni aperte è utile a scoprire quali saranno le modifiche necessarie a creare una caratteristica applicativa importante e di qualità.
Collaborazione e vision massimamente condivise
Lo story mapping è una fase molto efficace perchè, oltre a consentire ai team di prendere appunti e note in corso di discussione, rappresenta un momento importante di condivisione e di collaborazione tra i membri del team e di tutto il personale coinvolto nel progetto, aiutando a pervenire a un’unitarietà di vision e di modalità di sviluppo. In sintesi, viene offerto a tutti un layout generale delle funzionalità applicative, correnti e pianificate, dando a utenti e sviluppatori un orizzonte di comprensione importante delle esigenze e delle finalità. Grazie allo story mapping, inoltre, i team di sviluppo sono in grado di immaginare le caratteristiche o gli elementi esistenti nella loro portafoglio, potendo così dare una priorità ai vari task di lavoro.
Un altro plus di questo momento è la facilità con cui è possibile effettuare aggiornamenti o revisioni sia a livello individuale che a livello di team. Nella maggior parte degli strumenti, infatti, tutte le azioni sono tracciate, a completare uno storico informativo consultabile in qualsiasi momento. Infine, le story map mantengono sempre allineati tutti i referenti coinvolti nel progetto: sviluppatori, architetti, tester e qualsiasi altro gruppo coinvolto. Inoltre i clienti, avendo ben chiaro il quadro completo, sono più in grado di spiegare e descrivere ciò di cui hanno bisogno, in una fase in cui il codice è ancora in sviluppo e dunque è più facile da cambiare. Con la programmazione legata allo sviluppo della Internet of Things, questa flessibilità risulta ancora più strategica.
Il ruolo dello Scrum master
La road map include poi il coinvolgimento dello Scrum master che, in certo modo, è la cerniera di raccordo dei vari dei team Scrum. Questi gruppi di lavoro, infatti, essendo auto-organizzati e cross-funzionali scelgono come meglio compiere il lavoro coordinandosi al proprio interno in maniera autonoma, avendo tutte le competenze necessarie a realizzare il lavoro senza dover dipendere da nessuno al di fuori del team. Questo consente una grande flessibilità ma anche una maggiore creatività che porta valore allo sviluppo ma anche una maggiore produttività. I Team Scrum rilasciano i prodotti in modo iterativo e incrementale, massimizzando le opportunità di feedback, garantendo una versione potenzialmente utile del prodotto non solo funzionante ma anche sempre disponibile.
Il ruolo dello Scrum master nella fase di raccolta dei requisiti non è quello di essere un direttore del personale quanto, piuttosto, il supporter capace di gestire derive o complicazioni che devono essere ben focalizzate in modo da consentire alle squadre di sviluppo di procedere senza intoppi. Interfaccia tra proprietari dell’applicazione e utenti con tutte le loro necessità, lo Scrum master mantiene la squadra concentrata sugli obiettivi dell’analisi e della comunicazione, piuttosto che la rimozione quotidiana degli ostacoli, contribuendo così a influenzare positivamente la progettazione e la qualità del prodotto finale.