<audio id="audio" title="加餐四 | 聊一聊Google那些让我快速成长的地方" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/a3/56/a3e7cb1cab02710e29d5229bd0816956.mp3"></audio>

我一直强调，在项目中实践、由点及面的学习，是提高技术最有效的途径。但是，好的技术氛围、培养机制，也能打破通过项目单一成长的限制，获得更多项目之外的收获。很多公司，特别是一些大公司，在关注员工工作效率、工作产出的同时，也十分关注员工的个人成长、职场发展。今天，我就和你聊一聊Google有哪些让我快速成长的地方。

## 完善的培训课程

Google内部的课程是非常多的。有些是线下分享，有些是线上录播课程。在内容方面，课程也多种多样，有新技术的DogFood（比如我当年就参加过Go语言的），有入门级的101教程（比如针对后端工程师的前端入门课），还有比较有深度的系列教程（比如AI相关的课程）。所有的课程，只要你感兴趣，都可以自由选择来学习。

而且，最近我还听说，Google有个“G2G”学习计划，全称是Googler to Googler，意思就是Googlers之间互相学习。只要你有值得分享的东西，都可以录制成视频分享给其他同事。同理，你也可以从其他同事那里学习他们分享的技术。

总之，Google内部有大把的优质课程供你学习，这点对于好学的人来说，是非常幸福的一件事情。而且，得益于以结果为导向的企业文化，Google非常鼓励员工自我充电学习，不像有些公司反对员工占用上班时间来学习。

## 公开的文档和代码

除了各种线下和线上的课程之外，Google还有另外一块非常宝贵的学习资料，那就是文档和代码。在Google，除了特别核心的一些代码，比如跟搜索质量相关的代码，几乎所有的文档和代码都是公开的，你可以随意查看某个感兴趣的项目的设计文档和代码，比如Google Adwords的文档和代码等等。

你可能会说，Google就不怕员工泄露代码吗？在这一点上，Google相对是比较信任员工的。毕竟在招聘入口上做了过滤，员工本身的素质都不差，这点我们在下一篇加餐中还会讲到。

我们知道，Google有非常多优秀的开发框架，有些是开源的，有些是还没有公布、只限内部使用的。不管你对哪个开发框架感兴趣，你都可以在公司内部获取到一手的文档资料。通过阅读别人的文档，除了学习这些框架如何使用之外，我们还能学到很多关于设计、架构、解决方案等方面的经验和知识。

实际上，我觉得，代码公开最大好处并非是，你没事的时候就可以阅读别人的代码，毕竟泛泛地去读，效率也不会很高，收获也并不会很大，读完就忘了。相反，我一直强调，带着问题去学习是更有效的一种学习方法。所以，我觉得代码公开最大的好处是，当你想要实现某个功能的时候，或者为实现某个功能绞尽脑汁的时候，你只需要搜索一下代码仓库，就可以找到很多类似的优质代码做参考。对于很多新人或者初级工程师来说，参考别人的设计和实现，这样一方面可以提高开发速度、保证代码质量，另一方面也可以从高手那里学习好的设计思路和实现技巧，提高自己的设计和实现能力。

相反，据我所知，很多公司的代码都是限制访问的，员工只能查看一小部分相关项目的代码，极端情况下，只能阅读自己参与的项目的代码。相对而言，Google就“大方”很多。除了Code Review之外，我觉得，从n多Google高手的代码中学习设计和实现，是提高代码水平的另一个非常重要的渠道，也是让我代码能力成长最快的地方之一。

## 清晰的成长路径

除了有那么多课程、文档、代码来供我们自我学习之外，Google也非常关注员工的个人成长，希望能跟员工共同进步，而不只是将员工当成达成目标的工具。所以，在不同的阶段，公司会帮组员工制定不同的成长计划。

我们知道，像国内的一些大公司，比如BAT，在新员工入职的时候，一般都会有集中几天的入职培训。我当年加入Google的时候并没有这样的培训。我只参加过一次TGIF（Thanks God It’s Friday）上NewGoogler的欢迎仪式。

Google虽然没有集中的培训，但对于新入职的员工，公司会有一个新人的学习计划，主要涉及编码规范、单元测试、Code Review、开发工具、行为准则等方面的内容。我觉得，这一点对新人来说还是挺友好的。新人可以根据指引，一步一步完成学习计划里的内容，不会因为刚入职还未参加项目，而觉得无事可做。除此之外，在新员工入职时，公司还会分配一个同事作为mentor（导师）。任何工作、生活中的问题，你都可以向他请教，帮助你快速地融入公司。

除此之外，在工作中，每隔半年，你的Leader还会跟你一块制定OKR，也就是接下来半年你要做的事情，除了工作内容，这里面还会包含你的个人成长部分，比如你可以学习数据挖掘相关的知识，把这部分内容直接写到OKR中，这部分甚至可以跟你的工作没有任何关系，只是你对自己的自我提升。

不仅如此，你的Leader还会帮你制定升职计划。如果你有意申请下一轮晋升，领导一般会提前跟你一块规划，如何来做才能达成这个目标，比如做什么项目、做哪些有影响力的事情、管理多大的团队等等，也会有意安排一些帮你晋升的事情给你做。

为了不让工程师一直呆在舒适区，Google还非常鼓励内部转岗，希望员工不要一直做一个项目，鼓励员工跳出舒适区，换岗到其他团队，用不熟悉的语言、不熟悉的技术，去做一些不熟悉的项目。虽然我们知道，内部转岗机制也并非Google所特有的，很多公司都有，但是，真的执行得很顺畅的却不多。大部分公司都是跟风喊喊口号，员工真的要转岗的时候，条条关卡、困难重重。

上面的这些机制，貌似也没有什么特别的，很多公司都有。我要特别说的是，在Google，一对一的沟通非常多，特别是跟自己的Leader或者Manager，一般一两周就有一次，聊一聊自己这周的工作、想法、迷惑。这种沟通也能让你把工作、个人成长中的困难、疑问，及时反馈给领导，领导也可以及时地了解你的想法，对你进行指导，这也能避免很多工程师闷头干活，感觉不爽就立刻离职的情况。

## 课堂讨论

在你的职业生涯中，你觉得哪段工作经历对你的个人成长最有帮助？为什么呢？

欢迎留言和我分享你的想法。如果有收获，也欢迎你把这篇文章分享给你的朋友。
