刚毕业那年,我就有幸加入了谷歌搜索质量团队,在 2006年 中到 2008年 中的两年光景里,我学习到了很多日后终身受用的知识与理念;而谷歌也在这其间,公司人数规模从 8000 人跃升至 2 万人。现在搜索的时候,是不是会看到近似查询结果的提示?这个正是我加入公司后跟着两个天才工程师一起做的第一个项目。经过近半年,循着原型->测试->发布的轨迹,发展成为现在每天服务着上百万用户的小助手,还得感恩谷歌那博格族人般同化人的功力与艺术。只要一投入其怀抱,良好的工作氛围与优秀的团队文化,都立马能让吾等 (Noogler 谷歌专利,意即:new+googler 新谷歌人) 情不自禁地去学习去探索 Noogler,每天就像打了鸡血似的想马上为团队建功立业,奉献一切。
如果不是几个起关键作用的团队文化核心要素,或许当初要在强度高时间紧的背景下完成新项目上线,无疑难如蜀道。借助这些关键要素,我能马上享用谷歌代码库、工具库、以及基础架构等优质资源,以极其迅速的速度结束 Noogler 之旅。尽管有部分前雇员对近来公司发展放缓以及官僚主义泛滥嗤之以鼻,但不可否认的是,每年前 100 最佳雇主评选名单中,你总能在第一梯队中看到它挺拔的身姿。
接下来,我将这些核心要素总结为以下六点,希望能对你有所启发:
一、共享优质资源
在团队中使用内部工具或推行方法论,在谷歌可谓历史悠久。例如:Protocol Buffers,MapReduce,BigTable 等。对能保持对问题一追到底,对提出被大众认可解决方案的人才,其奖励机制更是相当慷慨大方;如前 3年 仅仅对安全研究人员颁发的奖金就高达 200 万美元。因而对于能脱颖而出被推荐使用的工具,往往很快就如雨后春笋在工程师的机器上繁衍生息;同时,专注创造能提升效率效益工具的团队也能不断收获满足感与成就感,从而形成良性循环,让所有成员拧成一股绳。即使面对完全陌生的工具库时,由于师出同门一脉相承,其学习周期是充满欢声笑语的。
二、完备的培训资源
重点推介的当属 Codelabs (代码实验室)。里面有条理清晰讲解透彻的核心抽象理论说明文档,有丰富的注重理论实践相结合的说明实例。没有这一切,不论对于 Noogler 还是老员工,要完成新人培训是事倍功半且痛苦的。
三、标准化的代码风格
可能对于高级程序员来说,诸如代码缩进、代码注释、变量对象命名等是小事一桩,但当公司规模达到一定级别时,这一切就从鸿毛变成泰山了。特别是对于做代码复审的同事来说,如果上万个代码风格就是上万个哈姆雷特,那真的是哈姆雷特了。所以,尽早建立标准化代码风格的规章制度,不论站在员工还是公司角度来说,对自身长远发展都是大有裨益的。
四、伟大的代码复审员
尽管代码复审员的存在,会让人有时候准备完工轻松一下时,有被倒下一瓢泼大冷水的感觉,甚至会拖长项目进度,但是这个职位的存在是至关重要的。清晰易读代码形成的速度,与复审员唇枪舌剑的次数成正比。严师出高徒,每个从谷歌走出的人都会感激和怀念当初对自己从来没有好脸色的复审员的。
五、包罗万有的知识库
言犹在耳的是搜索事业部总监 Norving 常挂在嘴边的一句话:“只要能解决问题,我管它是黑猫还是白猫。” 借助强大的 Sawzall 和 MapReduce 等数据集群架构,建立和发展巨大的知识库,合适的解决方案可谓取之不尽,用之不完。
六、自律的单元测试
在谷歌,进行单元测试是要事更是默契,例如开头的洗手间故事以及复审员神一般的存在。牺牲的可能是项目进度,换来的是成千上万代码修改的庖丁解牛。由此延伸到共享工具设计、测试框架建立等方面,都是向着团队最佳实践的方向行进的。
写在最后
离开谷歌后,辗转到了了几不同的企业,在谷歌学习到的一切一直伴随着我自信前行。尽管存在文化差异,但是孕育于一个优秀集体的公司文化,经过一番雕琢权衡后,或许虽不是你的那杯茶,但却会是你的良师益友。