Che cosa significa mob programming
Il mob programming è una pratica di sviluppo software in cui tutti i membri del team collaborano sulla stessa attività usando un solo computer.
Una persona è alla tastiera, mentre gli altri lo indirizzano dicendogli cosa scrivere. Alla sessione possono partecipare non solo sviluppatori, ma anche product owner e scrum master, business analysts, Q.A., stakeholder e tutte le persone che possono essere utili per portare avanti lo sviluppo.
Tale pratica si è diffusa negli ultimi anni fra i team di sviluppo software, ma si ispira a modalità di lavoro già diffuse in altri ambiti: in generale, ogni gruppo di persone che collabora attivamente all’esecuzione di un task più o meno complesso sta facendo una sorta di mob programming.
Il paradigma “driver e navigator”
Le interazioni tra chi scrive e chi indirizza sono regolate dal paradigma del driver e navigator.
Come funziona? Spieghiamolo con un esempio.
Immaginiamo di essere in auto: solo uno è al volante ed ha la responsabilità di condurre il veicolo; chi gli è a fianco, può consultare una mappa, suggerire percorsi alternativi, avvisare di eventuali rischi, e così via. Chi guarda la mappa ha un’idea chiara dell’itinerario e delle strade da seguire così da poter fornire a chi è al volante tutte le informazioni che gli servono per operare il veicolo.
Allo stesso modo, nel mob programming, chi naviga si concentra sull’obiettivo da raggiungere mentre il driver si occupa di adottare le strategie migliori per riportare nel codice le indicazioni ricevute.
Questo tipo di interazione richiede un certo grado di equilibrio: può essere che il driver sia un esperto guidatore e conosca anche le strade, così che sia sufficiente un’indicazione di alto livello come ad esempio “Prendiamo l’autostrada e usciamo a Genova”; potrebbe anche succedere che servano indicazioni più specifiche come “Vai dritto e al semaforo gira a destra per prendere l’autostrada”, o ancora più tecniche se il driver è alle prime armi: “Premi la frizione e inserisci la prima marcia”.
Smart input device
Il ruolo del driver è quindi quello di recepire le indicazioni dei navigator e tradurle in codice, senza partecipare attivamente alla discussione o prendere iniziativa.
È come se fosse un dispositivo che riceve input vocali (come Amazon Echo Dot o Google Home per intenderci), ma più intelligente perché riesce a tradurre un concetto, anche di business, in codice.
Avvalendosi della sua esperienza, ad esempio, partendo dall’indicazione “moltiplica l’importo di ogni prodotto nel carrello per la sua quantità, poi stampa il totale”, può decidere di implementarla scrivendo un ciclo in cui incrementa una variabile “somma”, oppure con un’operazione di “reduce”, o una funzione ricorsiva.
Il principio alla base di questa regola che definisce il ruolo del driver è che, per entrare nella codebase di un progetto, un’idea deve passare dalle mani di qualcun altro. In questo modo l’idea viene condivisa, discussa e validata e siamo sicuri che sia comprensibile, perché l’ha implementata qualcun altro.
L’idea è semplice ma è il concetto chiave alla base del mob programming.