Wink Pings

Search退回季度发布后,Google发现测试才是速度功能

Google Search 在2007年被迫从月度发布退回季度,随后强制每个变更带测试。Titus Winters 在访谈里谈 250M 行 C++ 重构、readability 评审和过时的 CS 课程;AI 写代码变便宜后,测试反而更值钱。

2007年,Google Search 没法按月发布了。最好的情况是季度更新。原因不体面:几乎每个改动都会碰到 Search 的代码,连 Gmail 的改动也算。发布节奏被回归拖住。Google 的动作是组织级强制:每个变更都要带测试。后来 Search 回到更高发布频率。这个顺序值得记住,测试先变成通行证,速度才回来。

访谈里 Titus Winters 讲的几件事都指向同一套工程账本。他是 Google 前工程师,《Software Engineering at Google》的共同编辑之一。Gergely Orosz 问他 Google 在 AI 之前怎么重构 250M 行 C++ 代码,Search 为什么会被回归拖到不能常规发布,以及 CS 课程为什么该重做。原始访谈在这里。

250M 行 C++ 在 pre-AI 时代重构,听起来像编译器项目。有网友在回复里说,大重构主要是穿着编译器外衣的人的问题。另一个网友补,规模到那一步是工具和信任问题。没有自动重写和人们相信的测试,每个跨切面改动都会卡在评审里,发布节奏为此付账。还有网友提到 Rosie 把改动拆成成千上万个小变更,每个 owner 负责一块。这个细节比“重构”两个字有用。

Readability 项目是另一层。Google 改代码要两个签字。文件或项目 owner,懂域知识。readability reviewer,语言认证专家。Google 第一位工程师 Craig Silverstein 带每个新工程师走完第一次变更。Java 团队把它变成导师制,轮转分配有经验的评审。后来所有语言形成正式 readability 项目。Titus 离开 Google 前,10000+ 工程师同时在 readability 里。这可能是科技行业最大的工程课堂。它解决的问题很土:让评审不靠运气。

AI 时代的讨论更直接。有网友说,Google 2007 年的修复适合 coding agents:没有测试不合并,测试要在旧代码上失败,在新代码上通过。写代码变便宜后,测试是变更里告诉你它是否工作的部分。另一个网友提醒,让一个 agent 同时写新代码和测试,会得到一个同意每个 bug 的测试套件。这个担心不花哨,但致命。

CS 课程部分,Titus 是 2023 年 ACM/IEEE/AAAI CS 课程指南 steering committee 里唯一在职工程师。他认为课程过时,从 2000 年左右以来没有实质改变。测试和验证对新加入者很重要,却不在课程里。他的预测是,如果不改,CS 入学人数可能下降,专注实践开发技能的软件工程项目会吸引学生。有网友说这门课该从“接手去年的学生项目,加一个功能还不能弄坏”开始。这个作业比很多算法课更接近工作。

250M 行 C++ 重构的难点不在写代码,在让几千人相信变更没把 Search 弄坏。AI 把写代码变便宜,这部分没有变便宜。Titus 参与的书在 Abseil 上可以免费读。

发布时间: 2026-10-30 15:42