你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

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

2019 年 10 月 11 日

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

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


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


谷歌的软件工程师 Fergus Henderson 在 2017 年发表了一篇文章,描述了谷歌的软件工程实践,他认为这些实践对公司的成功和软件开发人员对该公司的喜欢程度做出了巨大贡献。Henderson 总结了关键的工程技术和实践,这些技术和实践广泛地在团队间共享,这些团队在谷歌内都经受住了时间的严格考验。


第一个关键实践是使用代码存储库:大多数开发人员的代码都存储在一个统一的源代码库中,所有软件工程师都可以访问这些源代码。写访问权限是受控制的,但是工程师可以访问任何代码并进行修改,只要这些修改可以获得代码所有者的批准就能够提交入库。当涉及到代码所有权时,存储库的每个子树都有一个列出了用户 ID 的文件。每个子树的所有者控制对该子树的写访问权,整个团队都列在所有者的文件中。


该构建基于一个名为 Blaze 的分布式系统,用于编译和链接软件以及运行测试。Blaze 为构建和测试整个代码库的软件提供了标准命令。这些标准实践允许工程师在代码库中快速、安全地构建和测试软件,并允许工程师轻松进行跨项目的更改。每次构建工作都分布在数百甚至数千台机器上,这可以快速构建非常大的程序或并行运行数千个测试。


软件工程师使用内部开发的基于 web 的工具执行代码审查。对主要源代码库的所有更改都需经由至少其他一位工程师进行评审。


软件重写每隔几年就会发生一次,这会消耗大量的资源,但它保证了公司快速适应市场需求和变化的能力。工程师重写代码以减少逐渐积累的遗留性代码和代码复杂性,并允许他们将自己的知识和代码所有权转移给新的团队成员。这些重写确保谷歌的代码基础是使用现代技术和工程实践编写的。


从文化上讲,工程师有权修复任何损坏的代码,不管产品边界如何,他们通过这个方式来确保他们的产品符合公司的最高质量标准。


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


原文链接:


Google Software Engineering Culture


2019 年 10 月 11 日 08:001287
用户头像

发布了 61 篇内容, 共 19.0 次阅读, 收获喜欢 128 次。

关注

评论

发布
暂无评论
发现更多内容

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

【JS必知必会】高阶函数详解与实战

koala

JavaScript 前端 前端面试

2021最新分享字节四面成功拿Offer!

比伯

Java 编程 架构 面试 计算机

《经济学人》2021年3月27日刊精彩文章导读及资源免费下载

wbliu85

实例讲解如何制作Python模式程序

华为云开发者社区

Python 编程语言 星型程序 Programs 模式程序

Google Material Design 元件库

zhuchuanming

元件库

Ai特征选择,一篇就够了

泳鱼

Python 人工智能 机器学习 深度学习 AI

简单数据结构总结

我是程序员小贱

3月日更

由浅入深了解Nirvana NAC公链的两面性NA公链

区块链第一资讯

区块链 公链 挖矿

HUBDEX交易所系统开发源码案例

系统开发咨询1357O98O718

4大华为云“安全镖局”秘密法宝揭秘

华为云开发者社区

态势感知 华为云 企业主机安全 数据安全中心 Web应用防火墙

Apache Ranger安全认证配置

大数据技术指南

大数据 3月日更

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

3.1 Go语言从入门到精通:包

xcbeyond

go语言 Golag Go语言从入门到精通 3月日更

ARTS-Week-1

绝影

ARTS 打卡计划 ARTS活动

一束光的旅程

白洞计划

Ai调参炼丹,一篇就够了

泳鱼

Python 机器学习 深度学习 AI

Android开发必须要会!2021大厂Android面试经验,全网疯传

欢喜学安卓

android 程序员 面试 移动开发

马特系统开发流程丨马特量化机器人系统开发案例

系统开发咨询1357O98O718

领域驱动设计101 - 绑定模型与实现

luojiahu

领域驱动设计 DDD

深入理解 JavaScript, 从作用域与作用域链开始

koala

JavaScript 前端

经常被面试官问道的JavaScript数据类型知识你真的懂吗?

koala

JavaScript 前端 前端面试

Spark性能调优-Shuffle调优及故障排除篇

五分钟学大数据

spark Spark调优 3月日更

Java面试必问:一位清华大牛用一个坦克大战讲明白了23种设计模式(视频+源码笔记)

Java架构追梦

Java 架构 面试 设计模式 坦克大战

阿里P7大牛手把手教你!美团Android开发工程师岗位职能要求,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

Photoshop CC 2019 の 安装

空城机

PhotoShop ps p图 adobe

Golang :后端开发中的万能药吗?

华为云开发者社区

golang 后端 开发 分布式系统 Go 语言

EGG NETWORK永动金融EFTalk火爆来袭

币圈那点事

一文归纳Python特征生成方法(全)

泳鱼

Python 机器学习 深度学习

玩转4P理论,户外广告联动营销渠道布局

󠀛Ferry

七日更 3月日更

火币矿池pro系统开发介绍案例丨火币矿池pro源码功能

系统开发咨询1357O98O718

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

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