Game Theory and Agile Software Development
Game theory was initially developed in economics to understand behavior of firms, markets, consumers etc. Since then, its scope and use has expanded to various fields like politics, sociology, psychology and Agile software development.
Alistair Cockburn initially compared software development to a cooperative game as in game theory. He characterized software development as a co-operative game of invention and communication. According to Alistair, every project is a game and that it fits into a larger game of corporate strategy.
Victor Palau added that the application of game theory becomes pretty obvious in collaborative software development where the collaboration is based on trust. He compares such a collaboration to the classic prisoner's dilemma. Prisoner's dilemma demonstrates why two people might not collaborate even if it is in their best interests to do so. Victor suggested his view on how to make the collaboration successful which works well with the Agile principles. According to Victor,
- Iterated the Game as much as possible: Ensure the collaboration is not based on a one-off interaction. The easiest way to do this is to have a multiple-deliveries integration plan vs big bang approach.
- Raise the stakes: The prisoner's dilemma is based on the fact that the reward of defecting is far larger than cooperating. You can alter the situation by raising the stakes for mutual cooperation, making it much more attractive to both parties. (i.e. in a situation where “if nobody talks, you are both free” there is no dilemma)
Mike Griffiths suggested the application of game theory to align PMO's. According to Mike, since project is a collaborative game, team members need to collaborate to be successful. PMO should act as a supporting body to this team game approach. Viewed through this lens the roles of a PMO become much clearer and more useful. Some of the roles, for a PMO, suggested by Mike were,
- Monitor and control project performance – track the game performance, are we winning, how much time do we have left, are the players OK?
- Develop and implement standard methodologies, processes, and tools – support the game, build and maintain facilities, provide equipment.
- Develop the competency of project personnel, including training and mentoring – train and coach the players, identify future captains.
- Multiproject management, including program and portfolio management, coordination and allocation of resources between projects – manage teams, tournaments and leagues to make sure everything stays co-ordinated.
- Strategic management, including participation in strategic planning and benefits management – game development, new rules of play, league development.
Simon Bennett suggested the application of Game theory to Agile contracting. Simon demonstrated how traditional software development contracts are not appropriate for Agile projects. Keeping in line with the prisoner's dilemma Simon suggested that though contractual agreement has the potential to results in an optimal deal but leads most of the time to the worst possible scenario.
Jurgen Appelo mentioned the game theory to suggest that there will never be a one best way of developing software. According to Jurgen,
An evolutionary stable strategy (ESS) is any combination of practices that enables a system to be successful and survive, in some environment. The ESS is a concept defined in game theory, but it applies just as well to economics, biology, psychology, and software development. Evolutionary stable strategies depend on their environment, and on any other ESS-es in that same environment.
With the possible exception of adaptability, there is no other single property that every ESS needs to have in order to survive. Game theory teaches us that there cannot be one best strategy for all participants in an environment.
As various Agilists suggested, game theory has a strong connection to the way Agile teams work. The key, resulting in the successful outcome for the development game, lies in maximizing team goals as compared to individual rewards. According to Martin Proulx,
As is stated in the Agile Manifesto – “Customer Collaboration over Contract Negotiation” would almost always give better results than aiming to maximize individual rewards. Unfortunately, our irrational (and sometimes greedy) nature doesn’t allow the maximum outcome to be reached.
1) You have the tit-for-tat players. This creates a very stable environment. A player does good, and has good done in return. A player behaves selfishly and gets slapped back in return. It's a police state, but predictable and makes progress.
2) The generous player forgives the occasional infraction on the part of his co-players. This model provides the most productive environment, where amazing growth occurs. This is the ideal Agile team player.
3) The sociopathic player who capitalizes on the forgiveness of the generous player. The sociopathic player will amass personal gain, but at a cost to the general game. Ultimately, the environment falls apart. The sociopath wins as an individuals, but the ultimate result is ruin. The ONLY way to combat the sociopathic element is to return to tit-for-tat play.
Agile recognizes this risk when they emphasize the WHOLE TEAM approach and rewards based on TEAMS not individuals. Further support is in the makeup of the Agile team without manager participation. If anyone with firing power is present, that person has potential to skew the team. Keeping the emphasis on behaviors of an Agile Team consistent with the Agile values goes a long way towards winning the game.