翻译自: https://medium.com/@myroslavazel/game-theory-in-software-engineering-812101b77840
正如各种敏捷专家所建议的那样,博弈论 与敏捷团队的工作方式有着紧密的联系。
根据他们的说法,关键在于最大化团队目标而不是个人奖励。在博弈论中,决策者从大量策略中选择一个行动。创建一个目标函数,反映此人的利益,并依赖于所选择的策略。
冲突情况在于决策并非由一个人做出,而是一群人做出,结果不仅取决于他选择的策略,还取决于其他玩家的决策。从数学模型的角度来看,这种冲突被称为游戏,冲突的参与者被称为玩家。博弈论的主要前提是:系统中的任何参与者都被自动认为是理性的(与操作方在同一水平线上)并尽力实现其目标。
不幸的是,博弈论是精确数学中较少为人知的领域之一,与人文科学交织在一起,侧重于个人的心理方面。然而,当你是一部分游戏并决定下一步时,你需要考虑其他人的选择。记住,当你考虑他们的选择时,他们也正在以同样的方式思考。在提出反映其他“玩家”想法的自己策略时,你需要知道他们也在这样做。
博弈论最好体现了项目管理(PM)和商业分析(BA)的思维方式,虽然它可以应用于软件工程的任何领域。
博弈论作为项目管理工具
博弈论最初是为了预测一名玩家在另一名玩家的损失下会表现得更好而开发的。如今,博弈论已经扩展到处理广泛的情形和互动,包括人类玩家和非人类玩家(例如计算机)。因此,博弈论是项目管理的优秀工具。在这里,博弈论是一种数学方法,用于分析计算出的情形,其中一个人的成功基于其他人的选择。更正式地,它是智能理性决策者之间冲突和合作的数学模型的研究。为了确定玩家的可能动作,有必要进行一定的工作,可以分为几个部分。
在任何谈判过程中,项目经理需要考虑以下几点:
你试图解决的问题是什么?你最终想解决哪些问题?进入新市场,扩大生产——最终目标的制定始终重要。如何将你的目标与市场中已知的战略决策相关联?
谁是玩家?一个常见的错误是认为你只是在与竞争对手“战斗”,胜者只能有一个。在任何博弈模型中,玩家可能比你想象的要多得多。博弈的结果可能是一个总体上的胜利。
哪些玩家会对你的决策成功产生影响?
为了在项目管理中使用博弈论,请根据以上问题列出玩家名单。然后为每个玩家回答以下问题:
是否存在时间问题?谁在赶时间,谁可以拖延?玩家是独立决策还是等待其他玩家决策?
哪些玩家可以承诺帮助你和项目?优先考虑这些玩家。
你有谈判的角度吗?如果玩家有不同的偏好、优先级或能力,互利是可能的。如果互利是可能的,则可以进行谈判。
玩家有什么目标?把自己放在每个玩家的立场上,假设他们的目标和行动从他们的角度来看是理性的,尽管你可能不同意。博弈论中,通常认为每个玩家的最终目标是最大化利润。但在实践中情况并非总是如此。有时玩家会设定其他目标,例如占领市场的某个细分市场或提高品牌的知名度作为一个操作方,你需要正确确定所有其他参与者的目标。
以上述方式使用博弈论可以帮助你理解人们的行为和互动——这是成功管理项目和避免教育项目中的沟通风险所必需的基本技能。
在我们准备和接近谈判情况时,考虑以下问题:
此人有何获利或亏损?他们是否有时间限制?
如果合作,提前共享细节是否符合我们的最佳利益,并确定我们会同时或顺序进行谈判,是否对双方有利?
对于合作有哪些共同的和可实现的目标,而对于不合作,我们正在谈判的对象的目标是什么?
此人能否代表自己或他人做出承诺?
评估他人的策略,我们的策略或方法有哪些潜在的风险领域?他们可以如何利用他们对我们的了解来获得优势?
Alistair Cockburn最初将软件开发比作博弈论中的发明和沟通的合作游戏。根据他的说法,每个项目都是一个游戏,它适应于更大的企业战略游戏。