Game theory in software engineering

As various Agilists suggested, Game theory has a strong connection to the way Agile teams work.
The key, according to them, lies in maximising team goals as compared to individual rewards.
In game theory the person who is making the decision selects an action from a large number of strategies. A target function is created that reflects the interests of this person and depends on that chosen strategy.
Conflict situation is that the decision is made not by one person, but by a group of people, and the result depends not only on the strategy chosen by him, but also on decisions, made by the other players. Such a kind of conflict from the point of view of a mathematical model is called a game, and participants in a conflict are called players. The main postulate of game theory is: any participant in the system is automatically considered reasonable (at the same level as the operating party) and makes every effort to achieve their goals.
Unfortunately, the game theory is one of less known areas of exact mathematics, mingling with humanist sciences, with focus on the psychological aspect of the individual. Though, when you are a part of the game and decide on the next steps, you need to take the choice of the others into account. Bear in mind that when you think about their choices, it is necessary to count with that they are thinking the same way. In the moment of coming up with own strategy reflecting the ideas of the other “players”, you need to know they are doing the same.
Best of all game theory reflects itself in PM and BA way of thinking, though can be applied in any sphere of software engineering.
Game Theory as a Tool of Project Management
Game theory was first developed to predict situations where one player does better at another’s expense. Today, game theory has expanded to treat a wide range of situations and interactions, including human as well as non-human players (computers, for example). As such, game theory is an excellent tool for project management. Game theory here is a mathematical method for analyzing calculated circumstances, where a person’s success is based upon the choices of others. More formally, it is the study of mathematical models of conflict and cooperation between intelligent rational decision-makers. To determine the likely moves of players, it is necessary to carry out a certain work, which can be divided into several parts.
Here are some things that project managers need to think about in any negotiation process:
1. What is the issue you are trying to solve? What problems do you want to solve in the end? Go to a new market, expand production — the formulation of the ultimate goal is always important. How can your goals be correlated with strategic decisions already known in the market?
2. Who are the players? A common mistake is to think that you “fight” only with competitors, and the winner will be only one. In any game model, there can be much more players than you think. And the result of the game can be a general win.
3. Which players will have an impact on the success of your decision?
To use game theory for project management, draw a list of players keeping the above questions in mind. For each player then answer the following questions:
- Are there any time issues? Who is in a hurry and who can afford to delay? Will players make decisions independently or wait for other players make decisions?
- What players can make a commitment to help you and the project? Prioritize these players.
- Have you got an angle to negotiate? Mutual gain is possible if players have different preferences, priorities or capacities. Where mutual gain is likely, a negotiated outcome is possible.
- What are the players’ goals? Put yourself in each player’s shoes and assume their goals and actions will be rational from their point of view, even though you may not agree. In game theory, it is conventionally considered that the ultimate goal of each player is to maximize profits. But in practice this is not always the case. Sometimes the players set themselves other goals, for example, gaining a certain niche of market or increasing the visibility of their brand. As an operating player, you need to correctly determine the goals of all other participants.
Using game theory in the above manner helps you understand how people act and interact — an essential skill needed to successfully manage projects and to avoid the communication risks in educational project.
As we prepare for and approach a situation of negotiation consider the following questions:
- What does the person stand to gain or lose? Are they under a time constraint?
- If cooperative, would it be in our best interest to share details prior to the negotiation, and is it to the mutual benefit to determine if we will negotiate simultaneous or sequential.
- What are the mutual and achievable goals for cooperative, and for non-cooperative, what are the goals of the person we are negotiating with?
- Is the person able to make commitments on behalf of only themselves or others?
- Evaluating the other persons strategies, what are some potential risk areas of our strategy or approach? How can they use what they know about us to their advantage?
Alistair Cockburn initially compared software development to a cooperative game of invention and communication as in game theory. According to him, every project is a game and that it fits into a larger game of corporate strategy.
