保持干净
Google崇尚“有序混乱”的概念,这种思想扩展到我们的工作场所,由此造成的情形说好听点儿是“凌乱”,说难听点儿就是“猪窝”。
衣帽间里有淋浴和桑拿设施。一进来,房间里就充斥着各种气味,脏兮兮的运动衫、磨损的护膝、沾着泥土的冰球和没了头的冰球杆、防滑层黏合剂、除臭剂分配器、扯碎的内衣以及难闻的须后水都混合起来。Google后来在衣帽间里提供了毛巾,还安装了瑞典生产的低耗能洗衣机,不过洗衣机要一个星期才会完成一个循环 它采用一套成熟的机制,会在即将洗完的时候发出通知,洗衣机不洗运动袜和发霉的毛巾。你可以想象一个兄弟会的怪人跑到保险公司里要求享受棚户区居民的权利时的场景。
只有工程部门还在一丝不苟地保持卫生。不是说他们的空间真正干净 他们在生活中显然都是野生动物 而是说他们工作原理上的干净。
在诸如源头控制和编译器警告等方面,乌尔斯坚持采用了他在工业安装方案中学来的最佳做法。
乌尔斯对我说:“我们必须保证在编译器发出警告的情况下,它会立即停止工作,这样你就无法坐视不理。”他将最重要的元素定型到一个风格指南中,并授权给克雷格·西尔弗斯坦贯彻执行。
克雷格告诉过我说:“我不想要什么风格指南,但是乌尔斯对此坚定不移。”
最主要的问题是使用哪种编程语言。克雷格想使用C语言,而乌尔斯更倾向于C++。最后采用了乌尔斯的选择,不过乌尔斯同意Google编码器将不使用“C++中不好的部分”。
我曾经问过克雷格:“C++中不好的部分是指什么?”
克雷格板着脸说:“大部分。”
克雷格认为Google需要一种凝聚力,以此避免多余的努力和无谓的争论,从而维护标准,抓住重点并在回顾总结时提供反馈。他把形成那种凝聚力作为奋斗目标,他想要成为“无所不知的人”。
克雷格回忆时说道:“当我们有大约100人的时候,我还得到处走动,去跟每个人谈话。我会说, 你的工作还好吗?需要什么帮助吗? 一些人对此很反感, 这个家伙总是打扰我。他想干吗? 乌尔斯不得不把我拉到一边让我不要再问。”克雷格意识到,“他们并不需要受到那么多关注。大家彼此相隔不远,他们知道该和谁说话,大家的沟通交流十分通畅。”
更重要的事情就是编码了。无论什么时候,只要有人检查代码库变化 无论变化多么小 克雷格都会开始浏览每个自动警报,寻找潜在问题。但是一个单独的校对程序跟不上设计的产出增长。因此,乌尔斯创立了一个正式的代码检查程序。
克雷格对我说:“你要去找一个好的工程实践作为文化运营的试金石,而对于我们来说,这个试金石就是代码检验。”要开启一个代码检验进程,编码器会向在线设计文件发送一个指针。任何人都可以对此进行评论,但是正式审核员必须要对审核结果签字确认。
由此带来的好处显而易见。工程师罗恩·多林告诉我说:“在一开始发现问题比后来发现要省心一百倍。”
随着Google的成长,并不是所有人都认同他们的代码需要证明或者他们有责任检查其他人的工作。克雷格回忆时说:“我们添加了一个程序,可以阻止没经过检验就提交的代码,不过要是你撒谎的话,这个程序也没办法。”
为了应付这个程序,大家会对代码进行粗略的检验。克雷格告诉我说:“我发出了庞大的代码,他们又发了回来并说 看起来不错 。我觉着他们不应该这么简单地评价我发出的代码。”