Sunday, September 12, 2010

Dilemma del prigioniero iterato e principi agili

Il modello del dilemma del prigioniero mostra che la strategia più razionale, “defeat”, non è quella ottimale, tuttavia nel dilemma del prigioniero iterato esiste un evidente vantaggio usando strategie “irrazionali” (ma il termine più fortunato è “superrazionali”).

Qui abbiamo una interessante rappresentazione visuale del processo.

I metodi agili sono secondo me un banco di prova interessante di questo modello.

Nel manifesto agile si parla di collaborazione, e nei metodi che si ispirano a questo manifesto sono previste le iterazioni, quindi, considerando una iterazione come una mossa, le strategie “superrazionali” del dilemma del prigioniero, basate sulla possibilita' di cooperare anche senza essere sicuri che tale cooperazione sia corrisposta, sembrano adeguate.

Per esempio:

Il customer si aspetta che ad una prima iterazione venga portata a termine la feature 'A'.

Il customer la descrive nel suo linguaggio, il team la interpreta, e la implementa.

In linea di principio la descrizione che fa il customer della feature non potrà mai essere abbastanza precisa da non generare equivoci, altrimenti la descrizione stessa sarebbe talmente "effettiva" da rappresentare un "programma" (cosa che spetta al team).

Di principio sembra ineluttabile che il team alla fine dell'iterazione possa scoprire che quanto implementato non e' quello che voleva il customer.

La strategia “defeat” del customer sarebbe quella di innescare un conflitto basato su cose in linea di principio indimostrabili, o iniziare facendo descrizioni abbastanza vaghe da aumentare la probabilita' che qualcosa vada apparentemente storto, in modo da puntare ad un “blame game” in una posizione di vantaggio.

La strategia “defeat” del team sarebbe invece quella di implementare l'interpretazione a loro più comoda della feature 'A', e non cercare di capire veramente le intenzioni del Customer, o di non proporgli gli strumenti (non necessariamente tecnici, vedi cap. 4 di “Scrum and Xp from the Trenches”) più adatti per ridurre le incomprensioni.

(aggiungiamo pure la strategia “superirrational” del Customer che rifiuta di adottare questi strumenti, o quella “superirrational” del team che propone questi strumenti ma senza coglierne le vere ragioni, - vedere anche alla voce “cargo cult”)

Usare sistematicamente il “defeat” nel modello del dilemma del prigioniero reiterato è una strategia perdente, e dunque è più accettabile per entrambi la strategia cooperativa dell'assumere il reciproco interesse a capirsi, e migliorarsi, cosa che rientra nei principi del manifesto agile e, a maggior ragione, del manifesto for software crafsmanship.



1 comment:

Tonino Lucca said...

Un'ampia serie di riferimenti in questo post di InfoQ:
http://www.infoq.com/news/2010/11/game-theory-and-agile