I Kanban non sono una metodologia

25 August, 2010 (18:21) | agile, lean, programming

E’ noto che nel nostro campo ogni nome viene sovraccaricato di significati, l’ultimo esempio riguarda i Kanban

Prima si è iniziato a parlare di Lean, poi qualcuno ha iniziato ad usare e a parlare di Kanban Board, infine adesso Kanban è diventato quasi il nome di una metodologia. Adesso quando uno parla di Kanban non so a cosa pensare:

  • Starà parlando di Kanban come sinonimo di Lean? Si ma Lean come sinonimo di Lean Thinking, ovvero la filosofia Lean o Lean Development, ovvero l’applicazione della filosofia Lean allo sviluppo del software?
  • Starà parlando di Kanban come sinonimo delle board che adesso vanno tanto di moda negli Agile shop?
  • Starà parlando di Kanban come di una non meglio precisata metodologia? Come lo ScrumBan, ovvero uno Scrum che fa uso di Kanban Board o come Kanban, ovvero l’uso delle Kanban Board misto a qualche pratica presa da XP?

Insomma un delirio, la salvezza come al solito sta nella conoscenza: bisogna tornare alle origini della parola, studiarne l’evoluzione per capirne le implicazioni ed un eventuale contesto d’uso

Kanban si traduce in cartellino: I giardini imperiali giapponesi sono curati all’ossessione e sono considerati un patrimonio del giappone, per questo solo poche (supponiamo 100) persone alla volta sono autorizzate ad entrare, per garantirlo vengono usate delle tessere di plastica bianche, ne esistono solo 100, una persona può entrare solo se possiede una di queste tessere che possono essere prelevate da un contenitore all’ingresso, quando il contenitore è vuoto nessuno può entrare, quando una persona esce deposita la sua tessera che verrà automaticamente trasferita nel contenitore all’ingresso consentendo a qualcuno di prelevarla ed entrare. Le tessere di plastica sono Kanban

Quindi i Kanban sono la rappresentazione sistemica del vincolo sulla capacità produttiva dell’impianto. Cosa significa quesa frase e come può tornare utile allo sviluppo del software lo spiego subito

L’applicazione del pensiero Lean porta ad eliminare una classe di problemi e/o di sprechi nell’attività produttiva attraverso un approccio sistemico ovvero creando un ambiente di lavoro che rende difficile commettere errori. Un esempio tipico sono i connettori la cui forma impedisce fisicamente di sbagliare verso. Un altro bell’esempio ce lo forniscono gli ospedali in cui si applica il pensiero Lean, nei quali tutte le attrezzature hanno un posto dedicato che solitamente viene marcato con un’immagine stilizzata del tipo di attrezzo che dovrebbe occupare quello spazio, in questo modo

  • E’ molto semplice accorgersi se uno strumento è fuori posto perchè ci sarebbe l’immagine dello strumento senza lo strumento stesso
  • Nei momenti d’emergenza non devi metterti a pensare dove si trova uno strumento perchè sta sempre nello stesso posto
  • L’ordine non è più una questione di gusto personale :-)
  • Essendo la distribuzione degli strumenti così rigorosa è possibile fare esperimenti per capire se un’eventuale riorganizzazione (che è quasi sempre microscopica seguendo il principio del Kayzen) produce un miglioramento o meno

Quando si ha a che fare con dei sistemi complessi è molto più efficiente ed efficace applicare un controllo indiretto invece che tentare di forzare le singole parti al proprio volere, basta pensare all’acqua, le singole particelle costituiscono un sistema complesso con proprietà emergenti, come fai a trasportare l’acqua? tenti di convincere le singole particelle? La sposti fisicamente? O crei un canale e lasci che felicemente scorra seguendo le proprie leggi ma finendo esattamente dove vogliamo Quest’ultimo può essere definito un approccio sistemico

Ahhhh se solo la maggior parte dei manager sapesse… il mondo girerebbe diversamente, ma la resa dei conti arriverà presto caro cravattato dall’ignoranza bovina… ma sto divagando

Le Kanban Board creano un ambiente di lavoro dove è difficile commettere una serie di errori classici della produzione: avere molte user stories in lavorazione (semilavorati) che non portano valore al sistema, evitare il sovraccarico di lavoro del team, individuare molto velocemente eventuali parti critiche dello sviluppo di una user story, ecc… Bene, ma dove sono i Kanban nelle Kanban Board che si usano nella produzione di software? Non sono le carte delle user stories (come banalmente si potrebbe pensare), i kanban rappresentano i limiti della produttività del sistema, in questo caso il limite è sul numero delle user stories che possono essere in lavorazione ovvero i kanban sono i singoli “posti” che possono essere occupati dalle carte delle user stories.

Per ogni fase ci possono essere un numero limitato di user stories, in questo modo si possono facilmente identificare eventuali stalli, fasi problematiche, sprechi di vario genere ecc…, peccato che tutto questo sia molto lontano dall’essere Agile… perchè? Semplice il limite è imposto sulle fasi, si presuppone quindi che ogni fase sia un sottosistema dimensionabile a piacere per equilibrare il flusso delle user stories fino al loro completamento, una fabbrica insomma, alla fine siamo tornati al waterfall (il cravattato ci prova sempre, non c’è niente da fare)

Molto più Agile e sensato sarebbe limitare la capacità produttiva del team sulle dimensioni del team stesso, banalmente una user story per sviluppatore, al limite per coppia di sviluppatori. Ad ogni sviluppatore assegnamo una calamita, le user story appese alla lavagna sono in lavorazione, una user story può essere appesa usando solo una di quelle calamite, una calamita può essere usata solo con una user story alla volta ed il gioco è fatto. Le fasi possono essere ancora conservate, possono essere utili per stanare certi problemi, ma l’enfasi dovrebbe essere sugli sviluppatori e non sulle fasi (“Individuals and interactions over processes and tools” vi ricorda qualcosa?)

Concludo dicendo una cosa ovvia: più si studia uno strumento/pratica/tecnica e più è facile utilizzarlo saggiamente nel contesto in cui ci si trova per raggiungere i nostri obiettivi, il pericolo è quello di abusarne o peggio essrne abusati :-)

Comments

Comment from Marco Abis
Date: August 25, 2010, 6:53 pm

Gabriele concordo al 100% e lo dico da quanto David ha pubblicato un intero libro su Kanban spingendo la pratica come fosse una metodologia per interesse personale (l’ho detto pubblicamente diverse volte e con David presente quindi nessun problema a quotarmi ;-D)

Comment from Luigi R. Viggiano
Date: August 26, 2010, 9:25 am

Un articolo interessante, e ho imparato una parola nuova “Kanban” che non avevo mai sentito prima (certi cravattari sono piu’ aggiornati di me sulle buzzwords).

Anche nel design del software (o di oggetti di uso quotidiano) e’ possibile forzare l’uso corretto e impedire di eseguire delle operazioni nel modo sbagliato. Come hai indicato nel caso di certi connettori asimmetrici. Ma anche, visto che siamo in Svizzera, quando gli sportelli automatici si rifiutano di darti i soldi finche’ non hai ritirato il bancomat dalla macchinetta; cosi’ eviti di prendere i soldi e dimenticarti il bancomat :-)

C’e’ una parola per definire questo metodo? Cioe’ il design che ti forza a fare le operazioni nel giusto modo? Ma l’approccio mi piace e cerco quando possibile di applicarlo anche nel design del software.

Comunque, a proposito di parole, credo che la parola “metodologia” sia impropria, ma entrata nell’uso comune, magari dopo passaggi latino=>inglese=>italiano. A mio avviso bisognerebbe parlare di “metodo” quando si parla di applicazione, mentre la “metodologia” e’ la scienza/studio del metodo.

Comment from Piergiorgio Grossi
Date: August 26, 2010, 7:57 pm

Gabriele

mi piace il tuo ‘bignami’. Non mi ritrovo completamente in tutto quello che scrivi (a partire dal ‘Molto più Agile e sensato sarebbe …’) ma sono d’accordo sicuramente sul: ‘più si studia uno strumento/pratica/tecnica e più è facile utilizzarlo saggiamente nel contesto in cui ci si trova per raggiungere i nostri obiettivi’. Allo ’studia’ avrei probabilmente aggiunto un ‘pratica’ … lo studio di per sé lascia il tempo che trova.

Aggiungo un commento generale: visto lo stato indecoroso di molti team di sviluppo in Italia, il fatto che un team usi anche in maniera impropria uno strumento (pratica o simil metodo o tool o …) e quindi che inizi a farsi delle domande sul ‘come’, lo trovo comunque un primo passo e quindi non necessariamente un male.

My 2€cents,

PierG

Pingback from Kanban (lang italian) « a developer’s breadcrumb
Date: August 29, 2010, 5:24 am

[...] source: I Kanban non sono una metodologia [...]

Comment from Paolo Manca
Date: September 1, 2010, 2:58 pm

Giusto per completare il quadro concettuale segnalo il testo classico, che ha intodotto il kanban nell’industria: Taiichi Ohno, “Lo spirito Toyota. Il modello giapponese della qualità totale”, Feltrinelli, Torino, 2004 (ed. originale 1978). Lo sto leggendo in questo periodo. E’ scritto bene, non è eccessivamente lungo, è chiaro. Lo trovo istruttivo da molteplici punti di vista. Sia dal punto di vista della produzione, sia da quello manageriale, sia dalla comprensione delle dinamiche economiche.

Pingback from Gabriele Lana » I Kanban sono Agili?
Date: September 12, 2010, 5:10 pm

[...] un commento di Piergiorgio e un post di Tony entrambi riferiti al mio ultimo post, ho capito che probabilmente non mi sono [...]

Comment from Alessandro Nadalin
Date: October 9, 2010, 2:48 pm

Ciao Gabriele,

scusa se “arrivo” dopo un pò di tempo a questo post, ma volevo farti una domanda ( forse stupida ) assumendo in principio la mia profanità verso le due entità protagoniste della stessa:

Anche se prodotti di culture, tradizioni e riflessioni profondamente diverse, i Kanban e la legge di Brooks sono elementi strettamente correlati, vero?

Comment from Gabriele Lana
Date: October 10, 2010, 8:13 am

@alessandro direi che sono complementari, la legge di Brooks parla di un limite della capacità del sistema di crescere, non da un punto di vista numerico ma da un punto di vista della “produzione di valore”, mentre l’utilizzo di Kanban serve per mantenere “fluida” la “produzione di valore”. Quindi si, alla fine è sempre di “produzione di valore” che si parla ed in particolare in entrambi i casi si cerca di evitare la trappola delle “ottimizzazioni locali”: la legge di Brooks ci avverte di non focalizzarsi sull’ottimizzazione della quantità delle cose (linee di codice) prodotte a scapito della qualità, i kanban non ci permettono di operare un ottimizzazione sulla singola fase produttiva qual’ora questo comporti una perdita di produttività (lead time) del sistema. Dico che sono complementari perchè tu potresti far crescere la capacità produttiva in maniera fluida (kanban) ma incappare lo stesso nella legge di Brooks. Ho risposto alla domanda?

Comment from Alessandro Nadalin
Date: October 10, 2010, 9:12 am

esaustivissimo, grazie mille :)

Write a comment