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



(PHOTO CREDIT: PAUL KELLER

我大学毕业后便加入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帮助他们构建团队和产品时,谷歌的工作强烈地让我思考,在哪些地方什么会形成良好的工程文化。然而,在谷歌这样规模的公司工作好并不一定意味着会在不同机构的不同发展时期的工作同样会好。每个工程决策都包括一系列权衡,但是谷歌工程文化提供了一部分权衡,而你可以从这里开始。
  • 大小: 49.8 KB
来自: 伯乐在线
4
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 从谷歌工程师文化中学到的6个核心原则!

    每周,谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入,...这有从谷歌工程文化中获得的六个核心原则,你可能能够从中获益。 把工程资源用于共享工具和抽象概念。 在早期谷歌在

  • 谷歌工程师文化中学到的 6 个核心原则

    这有我从谷歌工程文化中获得的六个核心原则,你可能能够从中获益: 把工程资源用于共享工具和抽象概念。在早期谷歌在工具和抽象概念上大力投资,例如Protocol Buffers,MapReduce,BigTable和其他在工程中...

  • 如何成为一名Google工程师

    [译] Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试 原文地址:Google Interview University 原文作者:John Washam 译文出自:掘金翻译...这是我为了从 web 开发者(自学、非计算

  • qcon_从QCon伦敦2010中学到的重点知识和教训

    从最初的教程到最后的会议,人们在他们的博客中讨论了QCon的许多方面。 您还可以在Flickr上看到众多与会者拍摄的QCon照片。 这次QCon是InfoQ的第九届会议,也是伦敦的第四届年会。 该活动是与在丹麦举办JAOO会议...

  • qcon_从QCon伦敦2011中学到的主要知识点和教训

    Preserving Software Architecture in its Implementation by Eoin Woods 从几个月到几分钟-丹·诺斯(Dan North)的赌注 将“重新”放入建筑中,作者:Kevlin Henney 软件质量–当您看到它时便知道它,作者ErikDö...

  • ONES 冯斌:从工程师到CTO,与不确定性和信息不完备为伴|ONES Talk

    数字化转型趋势下,企业的软件研发管理需求增加,开发者群体将贡献越来越大的价值。ONES 作为国内研发管理领域的领跑者,始终...本期《从零道一》我们与 ONES CTO 冯斌进行连线,聊了聊技术创业者的故事,共同探讨一...

  • 百度没有文化(转载)

     欢迎关注“创事记”的微信订阅号:... 百度没有文化  百度在转型移动过程中落伍,是创始人问题,公司问题,还是时代问题?公司兴衰的关键点到底是什么?  百度曾是中国互联网市值NO.1的公司,那些曾铸...

  • 技术不是全部,Google 内部培养创新文化的 5 点思考

    导读:所有组织都面临着自然和人为条件交融带来的空前变化和挑战。它们驱使人们重新思考所使用的工具、技术以及发展和创新所需要的条件。在本文中,Google 副总裁兼首席互联网传播官 Vint...

  • 吴军:顶级工程师能让中国走向浪潮之巅

    盖茨说,我希望电脑能够深入到千家万户,他有这种欲望,而且能用工程的方式来解决这个问题。 其次,从社会环境角度上说, 工程师这个群体需要 得到社会的尊重 ,特别是他们的劳动成果需要得到认可,比如 对知识产权...

  • Producter:让产品从0到1

    本书从产品的设计、产品的实现、产品的迭代、产品的营销、产品的进阶等几个角度,全面讲解了产品设计的基本原则、设计的重要性、设计的感觉、实用的设计工具、简单的 iOS 开发、产品营销理念和文案基础、动画效果的...

  • 阿里P8工程师强烈推荐,60本工程师必备读本

    本书写作前期充分分析了华为400个问题、防火墙网上案例,所以内容能直接命中用户实际场景,命中技术难点和常见问题,在理论结合实战方面做得非常到位。 3.以防火墙网上实际需求为导向,采用发现问题——解决问题——...

  • 产品经理进修第二天 从想法到开发

    一个产品存在的意义就是,能够帮助用户解决一个之前无法解决的问题, 或者提供一个比之前的解决方法要强 10、100 倍的解决方案。所以如果这个产品无法解决用户需求, 那么这个产品根本没有存在的意义, 这也就是为...

  • 爆裂:未来社会的 9 大生存原则

    内容介绍 今天的世界比我们历史上的任何其他时候都更加复杂和充满不确定性。现代社会目前使用的工具...复杂性和不确定性碰撞时,将释放出一种爆炸性极强的力量,冲击和改变社会的各个方面,从商业到文化,从公共领...

  • 深度|全面了解一下这个世界上最奇葩的公司:Google!

    来源:轮回的刻度2015年8月11日,Google公司架构调整的资讯与分析刷遍了朋友圈。这些数不胜数的文章,几乎都是这样这样一种基调:Google好像做了一件很重大的事情...

  • 入Ali的过去一年,谈谈我对code-review的理解

    codereview(CR)一直以来在软件行业被视为提升代码质量的一种有效的方式,也被视为一种工程师文化的代表。关于什么是CR,在goole出具体的定义如下: 代码评审是指在软件开发过程中,对源代码的系统性。通常的...

  • 关于AI,你最该了解但从没想过的四个问题

    ...人工智能在当今社会被讨论的如此火热,但是仔细一想,你可能甚至并不知道它的基本运行逻辑。...但是当你更擅长比赛之后,你会开始意识到“糟糕,我错过了一个提升,五分钟内我要完了”,...

  • 从I到R:人工智能语言简史

    整理 | apddd出品 | AI科技大本营(ID:rgznai100)语言的界限就是我与世界的界限。——维特根斯坦编程语言之所以能持续吸引新用户,大多并非源于语言自身特...

  • 管理沟通 移情原则_解决技术上的移情差距

    管理沟通 移情原则by Arathi Mani 通过Arathi Mani I sat in a wind tunnel for the first time while attending a summer camp as a middle schooler. Twelve-year-old me thought it was the coolest thing ever,...

  • 数学建模拟合与插值.ppt

    数学建模拟合与插值.ppt

Global site tag (gtag.js) - Google Analytics