谷歌的软件工程文化:激发创造力、鼓励自主性

谷歌进行了几项研究,以更好地理解经理和文化对团队绩效的影响。2008 年,他们发表了“ 氧气项目
”的相关发现,并于 2018 年发表了一项 后续研究
。在 2008 年发现的 8 个最佳经理人行为中,他们发现了两种新的行为,它们是横跨整个谷歌的协作性和强有力的决策。

在 2019 年, Seth Richtsmeier
分享了一些对谷歌今日的成功产生了帮助的文化实践。这些文化实践包括,公司创造了这样一个环境,它鼓励人们的创造力和自主性,并建议透明性和跨职能协作,以加快信息共享和创新。

谷歌的软件工程师 Fergus Henderson
在 2017 年发表了 一篇文章
,描述了谷歌的软件工程实践,他认为这些实践对公司的成功和软件开发人员对该公司的喜欢程度做出了巨大贡献。Henderson 总结了关键的工程技术和实践,这些技术和实践广泛地在团队间共享,这些团队在谷歌内都经受住了时间的严格考验。
第一个关键实践是使用代码存储库:大多数开发人员的代码都存储在一个统一的源代码库中,所有软件工程师都可以访问这些源代码。写访问权限是受控制的,但是工程师可以访问任何代码并进行修改,只要这些修改可以获得代码所有者的批准就能够提交入库。当涉及到代码所有权时,存储库的每个子树都有一个列出了用户 ID 的文件。每个子树的所有者控制对该子树的写访问权,整个团队都列在所有者的文件中。
该构建基于一个名为 Blaze 的分布式系统,用于编译和链接软件以及运行测试。Blaze 为构建和测试整个代码库的软件提供了标准命令。这些标准实践允许工程师在代码库中快速、安全地构建和测试软件,并允许工程师轻松进行跨项目的更改。每次构建工作都分布在数百甚至数千台机器上,这可以快速构建非常大的程序或并行运行数千个测试。
软件工程师使用内部开发的基于 web 的工具执行代码审查。对主要源代码库的所有更改都需经由至少其他一位工程师进行评审。
软件重写每隔几年就会发生一次,这会消耗大量的资源,但它保证了公司快速适应市场需求和变化的能力。工程师重写代码以减少逐渐积累的遗留性代码和代码复杂性,并允许他们将自己的知识和代码所有权转移给新的团队成员。这些重写确保谷歌的代码基础是使用现代技术和工程实践编写的。
从文化上讲,工程师有权修复任何损坏的代码,不管产品边界如何,他们通过这个方式来确保他们的产品符合公司的最高质量标准。

同样在 2017 年发表的一篇 文章
中,曾于2006 年至2008 年在谷歌工作的 Edmond Lau
证实,谷歌传授着有价值的工程技术,这可以帮助工程师在职业生涯中取得成功,但他指出,大多数工程师都受限于开发和协调大型的、全球性的产品。工程师在迭代、确定优先级、做出产品决策、甚至采取行动或根据结果确定时间优先级方面的灵活性更低。

原文链接:

Google Software Engineering Culture