Archive

Posts Tagged ‘prisoner’s dilemma’

The Prisoner’s dilemma – The principle why agile works?

I just finished reading Richard Dawkins’ "The Selfish Gene". I didn’t read it to get an insight on agile software development. Being part of the skeptic movement, I read this of personal interest. But there it stared me right in the face; The prisoner’s dilemma.

You don’t have to believe in biologic evolution to understand Prisoner’s dilemma. You just have to have seen any police series on the tv.

Let’s say that two guys are caught for a crime. They are independent of each other questioned about a crime and given the option to tell on their partner to receive a lessened sentence. The police evidence is not that strong, so if none of you tell on your buddy, chances are that both guys get’s a small sentence. But if one tells on the other, that guy goes free and the other get a really hard sentence. You can see the result in the table below:

So, what should you do? If you tell on your buddy and he don’t, why then you are a real winner, but if you both betray each other, the collective loss is greater than if you stuck together.

Prisoner’s dilemma is a part of The Gaming Theory, and it can be applied on many situations handling human interaction. In many cases you can gain a lot by playing selfish, but if everyone plays the selfish card, everyone looses.

So, how does this apply to agile software development. Well, if you look at a more general picture of the dilemma you can see it with general values or with text (and observe that cooperate in this context refers to the two criminals and their behaviour towards each other, not the police):

    

If you on one hand have the product owner and the other hand have the scrum team, a product owner can gain from selfishly trying to gain maximum effort from the scrum team and thereby gaining maximum business value from a sprint. The scrum team on the other hand can selfishly try to do as little as possible.

If you look at individual team members you can see the same. A team member can selfishly try just to pick the fun tasks/do nothing and leave the rest to the other guys.

You get my point?

So how does Prisoner’s dilemma apply to evolution? The basic idea behind evolution is that something which gives a gene a slightly better chance of reproducing will become a little bit more common in the gene pool and thus; spread. In other words, there are two elements that are needed. There is competition (slightly better is in relation to another option/gene) and there is a repetitiveness (the game is played over and over again). And the later part is very important. There is a big difference if there is repetition.

Let’s say that you are one of the prisoners in the first example. If you look at that individual situation, what would you choose? Well, 10 years are a long time and perhaps that risk you’re not prepared to take. Yes, if you both tell on each other you can loose three years, but it can be a game you’re willing to pay. But that is given that you never turn to crime again. Who will gang up with you next time if you are known to tell on your buddies?

And here is where it gets real interesting when we talk about agile software development. If we have a non iterative process, more people tend to gamble on being the sole winner and less play the cooperation card. It’s when there is the chance of the game being played again cooperation becomes more interesting. The reason for this is that an issue we haven’t covered yet is retribution. If you tell on your buddies or play the selfish card, your buddies will retaliate. The product owner who betrays his team will probably have a more suspicious team after that, the team member who doesn’t do what he’s supposed to will probably hear about this afterwards. And a team with behaviour; how will they perform in relation with a team which cooperates all the time?

Having an iterative process clarifies that cooperation is the stable strategy of the team members and stakeholders. It will not make people cooperate. As Ken Schwaber puts it: Scrum does not bring excellence, it exposes incompetence.

Retaliation is a hard nut and according to Prisoner’s dilemma it must be there to make individuals understand the need for not playing the selfish card. But the retaliation must be swift and then it must be forgiveness. That is; if a team member betrays the team once, he must be "punished" just then and after that, the incident should be forgotten. Otherwise, too much energy is put into punishment. Dawkins points at a number of computer simulations which shows that the quick-retaliation-then-forget-strategy wins this game every time; a strategy which is called Tit for Tat.

I will leave you here to dwell on if Prisoner’s dilemma. If you’re interested in more on this dilemma, read The Selfish Gene or on Wikipedia:
http://en.wikipedia.org/wiki/Prisoner%27s_dilemma
http://en.wikipedia.org/wiki/Tit_for_tat