两披萨团队
讨论最多的微服务架构之一是亚马逊的架构,它允许每天进行成千上万次部署,且规模巨大。亚马逊使用了两块披萨规则来设定团队结构(Amazon, 2020):
“我们尝试创建的团队规模不超过能够由两块披萨喂饱的人数。”
但究竟多少人能被两块披萨喂饱呢?在我们的用户小组中,我们通常计算一块派可以供三到四个人食用,这意味着一个团队的大小大约是6到8个人。在美国的Giordano’s餐厅,他们使用了3/8规则——你订购的披萨数量应为要喂饱的人数的三倍,除以八:
这意味着每个团队的最大人数为5到6人。所以,所谓的“两块披萨团队”并没有一个非常明确的定义——我认为它和团队成员的饥饿程度无关。这个规则只是意味着团队应该保持小规模。
大团队的问题在于,随着每个团队成员的增加,团队内部的联系数会迅速增长。你可以使用以下公式来计算链接的数量:
这里,n是团队中的人数。这意味着一个6人的团队有15个成员之间的链接,而一个12人的团队已经有66个链接(见图17.2):

当人们在团队中工作时,他们会体验到积极的协同效应。多样性和沟通有助于提高质量以及结果。但是,如果你向团队添加更多成员,沟通开销和决策速度的减慢会导致负面协同效应(见图17.3):

那么,最佳的团队人数是多少呢?
美国海军海豹突击队表示,四人是作战团队的最佳规模(Willink, J. 和 Leif Babin, L., 2017)。他们也依赖于在复杂环境中的高频沟通。但作战团队的技能可能比跨职能开发团队的技能更线性。因此,并没有证据表明这个数字对于开发团队也是最佳的。
在Scrum中,Miller定律指出,7人左右是理想的团队规模(Miller, G.A., 1956)。Miller定律是1956年关于我们短期记忆限制的论文,与沟通能力相关。但Miller定律已被科学反驳,Scrum之所以仍然使用这个数字,是因为在许多情况下,5到9人的团队规模确实是一个比较好的选择,但并没有任何科学依据。也有高效的Scrum团队只有3人,也有14人的团队。
QSM的一项研究分析了491个开发项目。研究得出结论,较小的团队具有更高的生产力、更少的开发工作量和更好的开发进度(QSM, 2011)。1.5到3人、3到5人和5到7人团队的聚类结果相似。超过7人的团队会导致开发工作量急剧增加(见图17.4):

小团队比大团队表现更好的原因有几个(见Cohn M., 2009,第177–180页):
-
社会懒散:社会懒散是一种现象,当人们在一个团队中工作且个人表现无法衡量时,他们往往会减少努力(Karau, S.J., 和 Williams, K.D., 1993)。小团队往往不那么容易受到社会懒散的影响。
-
凝聚力和归属感:小团队有更多建设性的互动,成员之间更容易建立信任、共同的归属感和凝聚力(Robbins S., 2005)。
-
协调工作量:在小团队中,协调所花费的时间更少。一些简单的事情——比如协调会议——在大团队中往往会变得更加复杂。
-
更具回报性:在小团队中,个人贡献更容易被看见。这种情况以及更好的社会凝聚力使得小团队环境更具回报性(Steiner, I.D., 1972)。
当然,小团队也有一些缺点。最大的缺点是失去一个或多个团队成员的风险,这在小团队中更难以弥补。另一个缺点是缺乏某些专业技能。如果你需要在五个领域具备深厚的专业知识,三人团队几乎无法提供这些技能。
从这些数据来看,适合 “两块披萨团队” 的最佳人数大约在3到7人之间——根据你的环境平衡优势与劣势。