反向 Conway 操作
现在我们已经知道了团队的最佳规模,我们可以进行一种叫做逆康威操控(Inverse Conway Maneuver)的操作(Forsgren N., Humble, J., 和 Kim, G., 2018,第102页)。如果你将组织结构进化为自治的两块披萨团队,系统架构将会进化成一个更加松耦合的架构。
但这不仅仅是团队规模的问题!如果你根据功能创建团队,最终会导致层次化或多层架构。如果你将前端开发人员和数据库专家分到同一个团队,架构会在这些沟通点上解耦(见图17.5):

为了实现一个可部署和可测试的架构,赋能团队,你必须创建负责业务成果的跨职能团队。这将导致你所期望的架构,帮助你快速推进(见图17.6):

有四种团队拓扑结构对系统架构产生积极影响,从而改善软件交付性能(Skelton M., 和 Pais M., 2019):
-
价值流对齐的团队:这是最重要的团队拓扑结构——跨职能团队,能够在不依赖其他团队的情况下为客户交付显著的价值。这些团队需要具备所有交付价值所需的技能——例如,UX、QA、DBA 和运营技能。
-
平台团队:构建平台的团队,能够通过简化软件交付过程和减少复杂性,帮助价值流对齐的团队交付价值。
-
启用团队:帮助其他团队接手责任的团队,通常是在入职、过渡或培训阶段。
-
子系统团队:这种类型的团队应该仅在绝对必要时创建!如果某个子系统过于复杂,无法由价值流对齐的团队或平台团队处理,那么最好由一个功能性团队来处理该子系统。
重要的是,每个团队都有明确的责任,并且可以在不依赖其他团队完成某些任务的情况下交付价值。
但是,为了达到对性能的预期效果,你必须限制团队之间的互动模式为以下三种之一:
-
协作:两个或多个团队在一定时间内密切合作,共同分担责任。
-
自服务:一个团队将其价值作为服务提供给另一个团队,责任清晰划分,且服务可以尽可能地简便和自动化地被消费。
-
促进:一个团队在一定时间内帮助另一个团队,帮助他们学习新知识或培养新习惯。
建立有效的团队拓扑结构,确保良好的沟通和互动定义,对于系统架构的影响是巨大的,同时也能显著提高工程的执行效率。