Cosa è Kanban e Come Funziona nella Produzione del Software

Cosa é Kanban E Come Funziona Nella Produzione Del Software

Reading Time: 4 minutes

Se operi nel mondo dello sviluppo software, è probabile che tu abbia già sentito parlare di Kanban. Questa metodologia di lavoro, che non è nata nell’ambito della produzione del software, è utilizzata da molte organizzazioni tecnologiche per lavorare secondo i principi agili.

In questo articolo, esploriamo cos’è Kanban e come può essere impiegato per massimizzare l’efficienza nelle organizzazioni tecnologiche.

Kanban nello Sviluppo Software

Kanban nello sviluppo software è stato introdotto per la prima volta da David Anderson come sistema di project management. Secondo Anderson, Kanban nel software veniva adottato dalle organizzazioni poiché richiedeva minimi cambiamenti nel modo di lavorare (principalmente visualizzare il lavoro in corso). Per questo motivo, alcune organizzazioni lo predilessero a Scrum ed XP (che erano già diffusi) in quanto molto meno intrusivo.

Inoltre, organizzazioni che non avevano mai provato ad adottare alcuna metodologia Agile si avvicinavano piú facilmente a Kanban poiché non richiedeva nessun cambiamento significativo nel modo esistente di lavorare.

Vediamo ora in cosa consiste effettivamente Kanban come metodologia di lavoro nello sviluppo del software.

1. Visualizzazione del Flusso di Lavoro

Uno dei pilastri di Kanban è la visualizzazione del lavoro in corso. I post-it sulle lavagne sono il miglior modo per rappresentare il flusso di lavoro su cui il team si sta concentrando.

Le lavagne o board sono solitamente organizzate secondo una semplice struttura del tipo: da fare, in corso, completato. Non è fondamentale che le board siano reali lavagne: di questi tempi vengono sostituite con lavagne virtuali (tipo Trello, Jira, etc). L’importante è che il team abbia a disposizione un luogo comune che rappresenti in maniera inconfutabile il flusso di lavoro.

Questa attenzione alla trasparenza e alla visualizzazione permette a tutti i membri del team di monitorare facilmente lo stato delle attività e identificare eventuali ostacoli.

2. Limitazione del Lavoro in Corso (WIP)

Un altro degli aspetti fondamentali di Kanban è il contenimento consapevole della quantitá di lavoro in corso. Cosí come esiste un limite alla quantitá di liquido che puó attraversare un tubo in un lasso di tempo, allo stesso tempo la capacitá di un team è limitata.

Ponendo l’attenzione sulla visualizzazione del lavoro in corso, Kanban incoraggia la limitazione del lavoro in corso (Work In Progress): se un team di 5 persone ha 10 post-it nella colonna in corso probabilmente sta cercando di occuparsi di piú cose di quante effettivamente abbia capacità di fare.

Il contenimento del lavoro in corso ha significativi effetti benifici su un team che produce software. Andare oltre l’effettiva capacitá di lavoro in corso del team ha effetti negativi sulla capacitá di concentrazione degli individui che compongono il team:

  • si favoriscce il cosiddetto context switching che aumenta il carico mentale che ogni individuo del team deve mantenere durante lo svolgimento di lavoro giá sufficientemente complesso
  • ha un impatto negativo sulla qualitá del codice e di conseguenza sulla qualitá del prodotto che si sta realizzando
  • aumenta il rischio di burn-out per il team
  • non lascia spazio ai cosiddetti tempi morti che aiutano gli individui a recuperare energie ma anche a favorire momenti di creatività che possono dare origine a nuove idee

3. Just-in-time work

Kanban inoltre favorisce il cosiddetto just-in-time work. Mancando di rituali sulla cosiddetta manutenzione del backlog, Kanban non solo è una metodologia leggera e flessibile, ma sposa appieno la filosofia Agile del rispondere al cambiamento è piú importante che seguire un piano, cosí come del tendere alla riduzione degli sprechi della filosofia Lean.

Il just-in-time work aiuta i team a rispondere prontamente al cambiamento, al feedback degli utenti, al sorgere di problemi: invece di mantenere il focus su un piano prestabilito fino alla fine del ciclo corrente, il team ha la libertá di ristabilire le priorità continuamente, aumentando la propria capacità di rispondere al cambiamento delle condizioni esterne.

Come adottare Kanban

Dunque, come possiamo effettivamente adottare Kanban nel nostro team di lavoro? Il mio consiglio è quello di iniziare dai fondamentali:

  1. Definizione delle Fasi di Sviluppo: Identificare e definire chiaramente le fasi chiave del ciclo di sviluppo, dalla pianificazione all’implementazione. Possiamo partire semplicemente con To do, In progress e Done e poi scoprire nuove fasi che aiutano il nostro team a perfezionare il modo in cui producono valore per l’utente finale.
  2. Bacheca Kanban Digitale o Fisica: Utilizzare una bacheca Kanban, che può essere fisica o digitale, per visualizzare e tracciare le attività in corso. Questo è forse l’aspetto fondamentale di Kanban: visualizzare il lavoro in corso. Senza di questo non si puó parlare di Kanban
  3. Limiti al Lavoro in Corso: Stabilire limiti realistici per evitare sovraccarichi e garantire la qualità del codice e favorire il benessere dei membri del team.
  4. Aggiornamenti Continui: Adattare il processo in base ai feedback del team e alle esigenze specifiche del progetto.
  5. Bonus: Monitoraggio delle Metriche di Sviluppo: Misurare e analizzare le metriche di sviluppo, come il tempo di rilascio e il numero di bug risolti, per identificare possibili aree di miglioramento. Questo tipo di misurazione potrebbe venire successivamente, quando il team ha maturato una consapevolezza della metodologia Kanban. Rimane peró un aspetto fondamentale: senza la misurazione non possiamo capire se il nostro modo di lavorare sta effettivamente funzionando.

Vantaggi di Kanban nello Sviluppo Software

Kanban è una metodologia molto semplice che centra la propria attenzione sulla visualizzazione del lavoro in corso. Visualizzare il lavoro in corso favorisce a cascata tutta una serie di pratiche benefiche per un team che lo rendono particolarmente efficiente e capace di correggere il proprio operato sulla base dei feedback dall’ambiente circostante.

Visualizzazione, controllo del WIP, e capacità di facilitare il just-in-time work, peró, devono essere accompagnate dalla comprensione del valore che si vuole consegnare nelle mani dell’utente finale.

Come leader nell’ambito della produzione del software è importante aiutare il team a focalizzarsi sull’utente finale e a comprendere effettivamente il perché di ció che si sta facendo. Se ti interessa approfondire meglio questa prospettiva puoi dare un’occhiata al mio articolo The Best Teams I’ve Worked With in cui analizzo le caratteristiche di team di successo con cui ho avuto la fortuna di lavorare.

Kanban é risorsa preziosa per le organizzazioni tecnologiche, che offre una metodologia agile che si adatta perfettamente alla natura evolutiva dello sviluppo software. Se accompagnato da una gestione del team che promuove trasparenza, collaborazione, focus sul cliente e attenzione al benessere psicologico dei colleghi, puó facilitare la nascita di team incredibilmente performanti.


Se ti interessano le mie considerazioni sulla produzione del software puoi seguirmi su LinkedIn, su Twitter, oppure puoi ascoltare il podcast in cui io e Marco parliamo di tante tematiche inerenti alla produzione del software: SpaghettiCode.


Pubblicato

in

da

Tag:

Commenti

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.