首页 › 案例
Spotify · 2016–2021

第十个合并请求

Spotify 招人招得飞快,可按它自己的说法,人越多反而越慢。一个新工程师要过 60 多天,才能让自己的第十段代码被合并进去。命令所有团队用同一套东西行不通,平台团队只好去做一个大家愿意选的东西。

◷ 约 2 分钟

2016 年,Spotify 正在拼命招人,可按公司自己的说法,新来的人反而在拖慢整个公司。它的平台团队专门做其他工程师要用的内部工具,他们盯着一个衡量新人上手的数字:一个新工程师要多少天,才能让自己的第十个合并请求(也就是第十段代码)被合并进去。答案是 60 多天。几年后,在公司的播客上,Spotify 的研发负责人问那年刚加入的工程总监皮娅·尼尔松,当时觉得这个数字还能接受吗。「我在别的公司当了 15 年工程师,」尼尔松说,「那感觉就像被泼了一盆冷水。」

Spotify 向来以小而自主的团队出名,每个团队需要什么就自己做什么。平台团队把公司的开发者当成自己的客户,于是先去问他们:到底是什么在挡路。得到的回答有两个。一是总被打断:「新人只能拍拍别人的肩膀去问,因为几乎从来没有文档。」二是什么都找不到。按公司的说法,同一个服务可能有 15 个版本,各自照顾不同团队略有差别的需要;新团队要用类似的服务,往往干脆再造一个。想知道一样东西怎么用,唯一的办法是去问同事,工程师们给这种做法起了个名字,叫「靠小道消息开发」。

最省事的办法是集中管起来。尼尔松的团队否掉了。「我们基本上知道,没法做一个集中式的方案,」尼尔松说,「那根本行不通,没人会用。」Spotify 的工程副总裁泰森·辛格说得更直白:「我们要是出去叫大家做某件事,他们耸耸肩,照样爱怎么做就怎么做。所以我们真得把东西卖给他们。」

于是团队做了 Backstage:一个地方,谁都能在里面找到每一个服务,看到它归谁管,读到它的文档。各团队继续拥有自己的那部分,接进来就行。Spotify 后来说,公司里有 280 个工程团队用它管理 2000 多个后端服务,80% 的代码贡献来自 Backstage 核心团队以外的工程师。2020 年 3 月,Spotify 发布了它的开源版本。

按 Spotify 的统计,那个上手数字从 60 多天降到了稳定的 20 天。这些数字都出自 Spotify 自己的博客和播客;同样这些年里,新工程师还要做一系列入门教程、参加为期一周的训练营,所以这个下降不能只算在一个工具头上。2021 年,Spotify 说 80% 的内部用户对 Backstage 满意。

这件事里藏着几个道理

四种基本团队类型按 Spotify 的说法,它那些自主的团队不断重复造差不多的服务,新工程师要 60 多天才能合并第十个代码改动。它的平台团队把其他工程师当成客户,做了 Backstage:一个能查到所有服务和负责人的地方。Spotify 说,新人上手时间后来降到了 20 天。

出处

  1. Spotify Engineering, A Product Story: The Lessons of Backstage and Spotify's Autonomous Culture, May 2021
  2. Spotify Engineering, How Backstage Made Our Developers More Effective, and How It Can Help Yours, Too, September 2021
  3. Thoughtworks Technology Podcast, Developer Effectiveness, with Pia Nilsson
  4. Spotify Engineering, How We Use Golden Paths to Solve Fragmentation in Our Software Ecosystem, August 2020