我一直强调,在项目中实践、由点及面的学习,是提高技术最有效的途径。但是,好的技术氛围、培养机制,也能打破通过项目单一成长的限制,获得更多项目之外的收获。很多公司,特别是一些大公司,在关注员工工作效率、工作产出的同时,也十分关注员工的个人成长、职场发展。今天,我就和你聊一聊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,一般一两周就有一次,聊一聊自己这周的工作、想法、迷惑。这种沟通也能让你把工作、个人成长中的困难、疑问,及时反馈给领导,领导也可以及时地了解你的想法,对你进行指导,这也能避免很多工程师闷头干活,感觉不爽就立刻离职的情况。
在你的职业生涯中,你觉得哪段工作经历对你的个人成长最有帮助?为什么呢?
欢迎留言和我分享你的想法。如果有收获,也欢迎你把这篇文章分享给你的朋友。