Mob Programming: lo sviluppo software nel lavoro in team

Il cosiddetto Mob Programming è una forma relativamente nuova di sviluppo software incentrata sul lavoro in team. Il prodotto finale viene realizzato da più persone tutte incaricate dello sviluppo.

Vantaggi e svantaggi del Mob Programming in sintesi

Vantaggi

Svantaggi

✔ Inserimento senza complicazioni di nuove persone

✘ Elevato dispendio di tempo ed energie

✔ Apporto di competenze ed esperienze da più persone esperte

✘ Opinioni diverse possono causare disaccordi

✔ Responsabilità condivisa

✘ Difficile da gestire nel lavoro da remoto

✔ Qualità superiore del codice

✔ Soluzioni creative e orientate all’obiettivo finale

✔ Test di gruppo

Che cos’è il Mob Programming?

Il Mob Programming è un metodo di sviluppo software relativamente recente basato essenzialmente sul lavoro in team organizzati ad hoc. Ispirato al concetto di sviluppo software agile, l’obiettivo di questo approccio consiste nel disfarsi delle strutture gerarchiche che spesso frenano un processo decisionale rapido ed efficiente. Un’ulteriore caratteristica ripresa dalle metodologie agili è l’attenzione particolare alla collaborazione.

L’approccio collaborativo del Mob Programming può anche essere inteso come evoluzione del Pair Programming: sempre seguendo il principio “l’unione fa la forza”, quest’ultimo prevede che alla programmazione si lavori in coppia, mentre il Mob Programming coinvolge una quota minima di cinque persone fino ad arrivare a un massimo di dieci.

Rispetto al lavoro in team tradizionale, il Mob Programming presenta un’ulteriore serie di peculiarità: invece di lavorare su più computer mediante strumenti di collaborazione consueti nell’ambito informatico, come ad esempio GitHub, nel Mob Programming si utilizza un solo terminale, che viene proiettato su una parete in modo che sia visibile a tutto il team. In più, i singoli componenti del sistema complessivo non vengono assegnati a seconda della specializzazione degli individui: il Mob Programming, infatti, prevede che chiunque faccia parte del team lavori simultaneamente allo stesso codice. Persino la realizzazione delle linee guida, i test e i deploy dei software sono a carico dell’intera squadra.

I ruoli nel Mob Programming

Per strutturare il lavoro di gruppo, all’inizio di ciascuna fase del Mob Programming vengono assegnati diversi ruoli ai membri del team. Passato un determinato lasso di tempo (in genere dai 15 ai 30 minuti) avviene un cambio di ruoli. Ciascun gruppo è composto da una figura di “driver” e da varie figure di “navigator”:

  • driver: si tratta della persona che scrive le ultime righe del codice. Chi ricopre questo ruolo si occupa pertanto di mettere in pratica idee e concetti che sono stati elaborati all’interno del team.
  • navigator: i rimanenti membri del gruppo sono definiti navigator e sviluppano le idee in modo collaborativo.

A seconda dell’approccio di Mob Programming prescelto, possono esserci ulteriori ruoli tra i navigator:

Il compito di destinated navigator, ad esempio, è quello di dare una struttura a spunti e idee espresse dal team e di mediare tra opinioni discordanti, in modo tale che chi è driver non si ritrovi a dover scegliere tra diverse varianti di implementazione. Spesso a questo ruolo è associato anche quello di timekeeper, che prevede la gestione del tempo e di conseguenza dei cambi di ruoli.

Infine, è previsto anche il ruolo di researcher. In caso di dubbi o domande, chi è researcher si occupa di eseguire ricerche e raccogliere informazioni per l’intero gruppo. Il team può includere anche persone che non contribuiscono direttamente alla fase di sviluppo, ma che si limitano a osservare l’intero processo e porre domande in caso di dubbi. Si tratta del ruolo di learner.

Le regole del Mob Programming

Non ci sono regole precise su come debba essere progettato in maniera concreta il Mob Programming. La progettazione è più incentrata sullo scopo di sviluppo individuale e sulle rispettive dinamiche dei team. Esistono però delle linee guida che aiutano a far sì che il Mob Programming venga implementato con successo.

Ad esempio, risulta opportuno collegare il computer del driver a uno schermo condiviso di grandi dimensioni oppure a un proiettore, per fare in modo che chiunque nel team possa seguire lo stato attuale del codice. Di conseguenza, anche la prossimità fisica svolge un ruolo importante nel Mob Programming: nel migliore dei casi, l’intero team di programmazione si trova nella stessa stanza. Solo in questo modo si può trarre vantaggio da uno scambio diretto e personale.

In aggiunta, un buon presupposto per un Mob Programming di successo è rappresentato dall’assegnazione dei ruoli all’interno del gruppo. Nello specifico chi ha il ruolo di timekeeper e avvia il cambio di ruoli è essenziale per ottenere il massimo dallo sviluppo collaborativo. L’elevato turnover all’interno di singoli ruoli consente un flusso costante di nuovi input.

Vantaggi e svantaggi del Mob Programming

L’approccio del Mob Programming offre numerosi vantaggi. Gli innumerevoli scambi di esperienza all’interno del team favoriscono un processo di sviluppo software creativo e incentrato sugli obiettivi. Oltre a ciò, ogni persona che fa parte del team può approfittare dell’esperienza altrui e ampliare la propria visione d’insieme. A fronte di questo scenario, il Mob Programming è perfetto per introdurre gradualmente nuove risorse nei progetti. La figura del learner, che esiste proprio per questo scopo, è parte integrante di questo modello di sviluppo software.

Inoltre, il Mob Programming divide le responsabilità che derivano dallo sviluppo software, riducendo al minimo la pressione sui singoli sviluppatori. Dato che il codice viene scritto collettivamente, è meno soggetto a errori e di qualità superiore; in più, i test congiunti contribuiscono a garantire un’elevata qualità. Tutto ciò è ovviamente migliorato dal fatto che l’intero team lavora contemporaneamente sullo stesso codice. Pertanto, gli errori che si verificano nella fase di integrazione di componenti software sviluppati separatamente vengono eliminati in anticipo.

Ciononostante, il Mob Programming comporta anche alcuni svantaggi. Tra questi, il più rilevante è presumibilmente la considerevole quantità di tempo e di personale necessaria per implementare l’approccio agile. Mediare tra opinioni diverse su una stessa questione può portare a difficoltà anche nella programmazione di un codice coerente. Un ulteriore punto critico è che il Mob Programming risulta decisamente meno efficace in un contesto di smart working, di conseguenza è meno adatto al lavoro da remoto. Benché esistano approcci che offrono questa metodologia di sviluppo software in sessioni online, la possibilità di uno scambio personale diretto è uno degli aspetti fondamentali del Mob Programming tradizionale.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.