Software Engineering at Google
《Software Engineering at Google》(谷歌的软件工程)由 Hyrum Wright, Tom Manshreck, Titus Winters 著,探讨了谷歌在大规模软件开发中总结的文化、流程与工具,强调软件工程与编程的区别在于“时间”(维护生命周期)与“规模”。
核心内容
编程与软件工程的区别
Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)
- 编程是关于产出代码。
- 软件工程将编程延伸到代码在有用生命周期内的长期维护。
团队协作与社交三支柱
Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)
- 软件工程是一项团队努力,单打独斗非常危险。
- 成功的关键在于社交三支柱:humility-respect-trust(谦逊、尊重、信任)。
- 克服“天才神话”,接受失败并保持心理安全。
切斯特顿围栏原则
Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)
- 在修改或移除现有设计/代码之前,必须先理清它存在的原因,遵循 chestertons-fence 原则。
知识共享与规模化
Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)
- 提倡高带宽、低摩擦的沟通,抵制总线因子/被车撞因素(Bus Factor)造成的瓶颈。
- 谷歌通过 g3doc 框架让文档与代码同源,实现知识工程的自增长。
自动化与规范
Source: 2026-06-21-note-Software-Engineering-at-Google--Hyrum-Wright--Tom-Manshreck(来源未公开)
- 使用自动化工具(如 gofmt)来规范代码格式,减少代码审查中不必要的格式争论,让机器编辑的代码与人类代码无异。
- 严格的代码审查机制是知识共享和文化对齐的纽带。