搜狐首页 科技 欢乐颂2

手机搜狐

SOHU.COM

【转载】Google的软件工程概述

本文为【精益领导力】原创首发。本次为【Qunar技术沙龙】取得授权后转载。

1.介绍

Google已经是一个非常成功的公司。正如在搜索和竞价广告方面的成功一样,Google也提供了许多其他突出产品,包括Google地图,Google新闻,Google翻译,Google语音识别,Chrome和Android。Google还通过购买小公司大大增强和扩展了许多产品,例如YouTube,并对多种多样的开源项目做出了重大贡献。Google也展示了一些尚未投入市场的惊人产品,如自动驾驶汽车。

Google的成功有很多原因,包括开明的领导力,技术牛人,高标准招聘,以及成功带来的经济实力,可以在非常迅速增长的市场早期进行介入。但其中一个原因是谷歌开发出的优秀软件工程实践,这帮助谷歌走向成功。这些实践基于全球最有才华的软件工程师的大量积累和提取的智慧,随着时间的推移而不断演化。我们想跟全球各地的人们分享我们的知识与实践以及我们从中学到的一些教训。

本文的目的是记载并简要介绍Google的关键软件工程实践。其他组织和个人可以进行比较和对比,并考虑是否应用一些做法。

许多作者(例如[9],[10],[11])都有书籍或文章来分析Google的成功历史。但大多数主要涉及商业,管理和文化;只有一小部分(例如[1,2,3,4,5,6,7,13,14,16,21])谈到了软件工程方面的内容,大多数只探讨一个方面;并且没有从整体上提供一个简短的、书面的关于谷歌软件工程实践的概述,本文目的正在于此。

2. 软件开发

2.1 源码存储库

大多数Google代码存储在一个统一的源代码存储库中,Google的所有软件工程师都可以访问。有一些值得注意的例外,特别是两个大型开源项目Chrome和Android,分别使用了独立的开源代码存储库,以及一些高价值或关键的安全代码有更严格的访问限制。但大多数Google项目共享相同的存储库。自2015年1月起,这个86 TB的存储库包含了10亿个文件,包括超过900万个源代码文件,20亿行源代码,具有3500万个版本修改的历史记录和每工作日提交的4万个版本修改的变更率[18]。存储库的写访问是受控的:只有存储库的每个子分支列出的所有者才可以批准修改该分支。但一般来说任何工程师都可以访问任一代码段,可以签出并构建,可以进行本地修改,可以测试它们,并可以发送变更以供代码所有者审核,如果所有者同意,可以签入(提交)这些变更。在文化上,鼓励工程师修复他们看到的任何有问题的知道如何修复的软件,无论项目边界如何。这鼓励了工程师并带来了更高质量的基础设施,更好地满足了使用它的人的需求。

精选