博弈论和敏捷软件开发

  • Vikas Hazrati
  • 金明

2010 年 12 月 11 日

话题:敏捷最佳实践文化 & 方法

博弈论最初起源于经济学,用来分析企业、市场、消费者等的行为。从那之后,其范围和运用已经扩展到了多个领域,如政治学、社会学、心理学和敏捷软件开发。

Alistair Cockburn最先把软件开发与博弈论中的合作博弈【译注:cooperative game,也称为正和博弈】进行比较。他把软件开发形容为充满创新与沟通的合作博弈。按照 Alistair 的说法,每一个项目都是一个博弈游戏,是一个更大的企业战略层面的博弈的一部分。

Victor Palau 补充道,博弈理论在协作式软件开发中的应用变得越发明显,那种协作是建立在信任的基础之上。他将这种协作与经典的囚犯困境进行比较。囚徒困境解释了为什么即使合作符合两个人的最佳利益,他们也可能不会选择合作。Victor 认为他对于如何成功协作的观点契合了敏捷原则。按照 Victor 的说法,

  • 尽可能频繁地迭代化博弈游戏:确保合作不是基于一锤子买卖。最简单的方法分别是多次交付的综合计划和“大爆炸”的方法【译注:大规模的、从根本上改变的做法】。
  • 提高利益分配:囚徒困境源自于叛变的报酬远远大于合作这个事实。你可以通过提高相互合作的收益,使之对于双方更具有吸引力,来改变这个情景。(例如,当处于“如果没人坦白,那么你们两人都会被释放”这个情景时,困境就不复存在了)

Mike Griffiths提到了博弈理论在 PMO 工作中的应用。Mike 提出,由于项目是一个合作博弈的过程,团队成员需要协作才能成功。PMO 应该在这个团队的博弈过程里面扮演辅助的角色。从这个角度来看,PMO 的职责变得更加清晰、更加有用。Mike 指出,PMO 的职责包括,

  • 监视和控制项目进度——跟踪博弈的进度、我们是否获胜、我们仍有多少时间、博弈的各个参与者是否遇到问题?
  • 制定和实施标准的方法、流程和工具——辅助博弈游戏、建立和维护设施、提供设备。
  • 提升项目个人的技能,包括培训和指导——培训和教导球员,确定未来的领袖。 
  • 多项目管理,包括计划和组合管理、项目之间的协调和资源配置——管理团队、竞争和联盟,以确保一切都保持协调。
  • 战略管理,包括参与战略规划和收益管理——博弈游戏的发展、游戏玩法的新规则、联盟的发展。

Simon Bennett 提到了博弈论在敏捷合同中的应用。Simon 演示了传统的软件开发合同如何不再适合敏捷的项目。Simon 指出虽然合同契约可能产生最佳的结果,但在大部分情况下都会导致最坏的情况,而这正好与囚徒困境一致。

Jurgen Appelo 指出博弈论暗示了永远不存在最优的软件开发方式。按照 Jurgen 的说法,

进化稳定策略(ESS)是一些实践的集合,这些实践使得系统在特定的环境下能够获得成功和生存。ESS 是博弈论中定义的一个概念,但它同样也适用于经济学、生物学、心理学和软件开发。进化稳定策略依赖于它们的环境,以及其他任何处于同一环境下的 ESS。

除了适应性可能是个例外,其他的单一属性没有一个是每一个 ESS 都所必需的。博弈论告诉我们,在特定环境下,不可能存在一个对于所有参与者都是最优的战略

正如各种敏捷专家建议,博弈论与敏捷团队的工作方式有着密切的关联。在软件开发的游戏中取得成功结果的关键,就在于与个人奖励相比,最大化团队的目标。根据 Martin Proulx,

正如敏捷宣言的定义——“客户合作胜过合同谈判”几乎总会比最大化个人奖励产生更佳的结果。不幸的是,我们的非理性(有时是贪婪)天性不容许达到最大化的结果。

查看英文原文Game Theory and Agile Software Development

敏捷最佳实践文化 & 方法