0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谷歌工程师文化的六个核心原则是什么?

工程师人生 来源:网络整理 作者:工程师吴畏 2018-08-08 09:31 次阅读

每周,一组谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入,并提供一个简单的示例展示如何用不同语言使用它;有时它可能会分享如何安装一个用于测量团队代码库测试覆盖率的软件。“Testing on the Toilet”起初是个奇怪又有趣的方式,来教给工程师在工作中会用到的一些新的东西,这也被突出为Google文化中的核心力量:向工程师组织有效的传播一系列最佳实践。

我大学毕业后便加入Google的搜索质量团队,在2006年中旬到2008年中旬在其工作,在这期间,公司的规模从8000人上涨到20000人。在我的第一个项目,我同两位极具天赋的工程师一起工作,短短六个月,我们原型化、测试并启动了网站的新功能,每天向数百万用户在google.com上展示相关搜索。作为团队的新员工,自始至终最突出的感受是在这样的环境中,公司如何能使像我这样的新工程师快速成长起来。

如果这不是Google工程文化的关键要素,对于我们这样规模的团队在如此短时间内发布新特性是极为困难的。这些要素能够让我迅速地获得Google的代码库、工具和基础设施。它们也是使公司能够达到今天50000雇员规模的原因。

一些前谷歌员工可能抱怨公司变得迟缓和官僚,但是不可否认它已经获得很高的成就和很大的规模,在《财富》评选的100家最适合工作的公司中名列前茅。

这有我从谷歌工程文化中获得的六个核心原则,你可能能够从中获益:

工程资源用于共享工具和抽象概念。在早期谷歌在工具和抽象概念上大力投资,例如Protocol Buffers,MapReduce,BigTable和其他在工程中自始至终都会用到的东西。解决问题好的态度并使得每个人能够接受已经带来巨大的收益。每个团队都花费较少的心理周期选择使用哪个工具,专注于工具的团队能够更关注提升工程生产力,和改善已经使用的工具和服务。每个团队可能使用截然不同的工具链,这也意味着当你学习了基本单元结构后,更容易理解许多项目背后的设计。这个方法的负面影响就是有些时候你可能感觉你的case是被强行塞入一个特别的良好支持的工具,即使它不是最好的。

在新工程师培训中投资可重复使用的训练材料。我在谷歌能够迅速变得如此高产的一个原因是公司在培训材料上面花了大力去投资,其称之为Codelabs,Codelabs包括了公司的核心抽象模型,解释它们为什么被设计出来,突出代码库的相关片段,以及通过实现练习验证理解它们。如果没有它,我将会花更多的时间来学习各种我需要去了解的各种技术,这也意味着我的队员要花费更多的精力向我去解释它们。我在谷歌这样积极的经历,强有力的影响了我在后来的Quora新人培训过程中大力推崇Codelabs使用的决定。

标准化编码约定。每个关于空格、大小写、行长度、是否使用智能指针等约定,可能似乎是不重要的,但是到了谷歌这样的大规模时会带来巨大的影响。我不是第一次承认,当代码校验人员挑刺我的代码令我感到十分不愉快,就因为我没有正确的缩进或在行长度超出了规定的两个字符。但是因为大家都遵循同样的约定,使得浏览代码变得大大容易。当更换团队或在跨部门项目中工作时,这几乎没有额外支出去学习新团队的约定。当团队规模很小时,约定是那种很容易被忽视的东西,但是在代码和团队规模逐渐壮大在这方面越来越做出改变,这样你事实上希望从始至终都是一致。如果可能早期在约定一致性上保持一致,或者使用谷歌开源的风格指南。

通过代码复审(Code Review)提升代码质量。对每次改变进行代码复审减缓了迭代更新的速度,但是提升了代码质量,新工程师收到反馈后,他们需要迅速的采取最佳的实践并专注于公认的代码质量等级。总体的代码质量越高,也就意味着新工程师在模仿周围人员的代码同时,初期就会写出更加简洁的代码。因此,代码复审有助于公司在较大规模上位置较高的软件质量。

用正确数据解决很多问题。谷歌研发主管Peter Norvig经常谈到在解决复杂问题上“不合理的数据有效性”。正确的数据能够帮助你了解用户,划分办公室政治,解决争论,并让你跟上进度。开发日志和数据基础工具,如Sawzall和MapReduce,使谷歌的工程师从大量数据中筛选出来变为可能。

自动化测试来衡量你的代码。谷歌有十分强烈的单元测试文化,“厕所测试”就是一个例子,差不多我每做一次代码的改动都伴随一个单元测试,代码复审员将会严格地检查他们。这让开发变慢,但它也意味着成百上千的工程师可以改变代码库中的同一部分而不会牺牲过多的质量和可靠性。谷歌以同样的方式在共享工具上进行投入,它也会共享测试框架,并通过最好的测试实践让大家写测试变得更容易。

当我后来在Ooyala和Quora帮助他们构建团队和产品时,谷歌的工作强烈地让我思考,在哪些地方什么会形成良好的工程文化。然而,在谷歌这样规模的公司工作好并不一定意味着会在不同机构的不同发展时期的工作同样会好。每个工程决策都包括一系列权衡,但是谷歌工程文化提供了一部分权衡,而你可以从这里开始。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6142

    浏览量

    105115
  • 工程师
    +关注

    关注

    59

    文章

    1566

    浏览量

    68450
收藏 人收藏

    评论

    相关推荐

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    ,共同进步。 欢迎加入FPGA技术微信交流群14群! 交流问题(一) Q:FPGA中的FPGA算法工程师、FPGA逻辑工程师、FPGA原型验证工程师三者有什么区别? A:FPGA 算法工程师
    发表于 09-23 18:26

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    用二创,1:1复刻工程师的职场现状

    工程师
    扬兴科技
    发布于 :2024年07月19日 18:30:07

    PCB设计基本原则总结,工程师必看

    一站式PCBA智造厂家今天为大家讲讲pcb设计安全规则有哪些要求?PCB工艺规范及PCB设计安规原则。在PCB设计中,遵循安规(安全规范)原则是确保电子产品安全性和合规性的关键。接下来为大家介绍一些
    的头像 发表于 07-09 09:46 916次阅读

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师是软件开发领域中的一种专业工程师,他们主要负责设计和开发嵌入式软件,
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    如何搞崩一硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    #人工智能 #FPGA 怎么成为一合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01