什么是软件开发中的“两份比萨队”? - martinfowler


双披萨团队是为特定业务能力提供全面软件支持的小型团队。这个词因用来描述亚马逊如何组织其软件员工而流行起来。

这个名称暗示了此类团队最明显的特点,即团队的规模。这个名字来源于这样一个原则,即团队的规模不应超过两份披萨的饭量(不过我们这里说的是美国披萨,我第一次在这里见到它们时,它们似乎大得惊人)。保持小规模团队可以保持团队的凝聚力,形成紧密的工作关系。一般来说,我听说这样的团队大约有 5-8 人,不过根据我的经验,上限大约是 15 人。

虽然名称只关注规模,但同样重要的是团队的重点。一个 "两份比萨饼 "团队应具备向用户交付有价值软件所需的所有能力,并尽量减少与其他团队的交接和依赖。他们能弄清客户的需求,并迅速将其转化为可运行的软件,还能根据客户需求的变化进行实验和改进。

Two-pizza 团队以结果为导向,而不是以活动为导向。他们不按技能(数据库、测试、运营)来组织,而是承担起支持客户所需的所有责任。这就最大限度地减少了在向客户提供功能过程中团队间的交接,从而缩短了周期时间(将一个功能构想转化为代码在生产中运行所需的时间)。这种结果导向还意味着他们将代码部署到生产中并监控其使用情况,对任何生产中断负责(通常意味着他们要承担非工作时间的支持)--这就是所谓的 "你构建,你运行 "原则。

像这样专注于客户需求,意味着团队是长寿的、以业务能力为中心的团队,只要业务能力处于激活状态,团队就会为其业务能力提供支持。与以项目为导向的团队(软件 "完成 "后即解散)不同,他们认为自己是在支持和增强长效产品。因此,他们通常被称为产品团队。

两份比萨饼团队支持其产品所需的技能和职责范围很广,这意味着尽管这种团队可以成为团队组织的主要方法,但它们需要一个结构良好的软件平台的支持。对于小型组织而言,这可以是一个商业平台,如现代云产品。规模较大的组织则会创建自己的内部平台,使其 "两份披萨 "团队能够更轻松地开展协作,而不会出现难以交接的情况。团队拓扑结构提供了一个很好的方法来思考支持两份披萨团队所需的不同类型的团队和互动(团队拓扑结构称其为流对齐团队)。

以业务能力为中心的团队要想取得成效,就需要利用彼此的能力。因此,团队需要向同行提供自己的能力,通常是通过精心设计的应用程序接口。这类团队向同行提供服务的责任常常被忽视,如果不这样做,就会导致信息孤岛的形成。

由于康威定律的影响,围绕业务能力组织人员会与组织软件的结构方式产生深远影响。由 "两份比萨饼 "团队构建的软件组件需要很好地控制与同级组件的交互,并在它们之间建立清晰的应用程序接口。这种想法导致了微服务的发展,但这并不是唯一的方法--在单体运行时间内结构良好的组件往往是更好的途径。