没有任何提醒的情况下注意到了公司个人页面的年限那一栏变成“四年”。对于之前几份工作平均在职一年即跳的我来说,可以称得上里程碑事件。里程碑最大的作用在于反思和总结。于是想记录一些基于个人视角的感受。由于之前工作经历繁杂、样本数有限,且公司规模和文化完全不同,很难把在Google工作的四年与其他经历相比较,反而是疫情把四年时光撕扯成两半,被新环境格式化后的大脑产生了另类的新鲜感,所以感受大多停留在Google本身上。
相关人士
级别越高,合作的人就越多。初级程序员只需在TL的领导下,埋头苦干,快速把想法变成代码。待到资历加深,负责的内容愈来愈多,打交道的人变成了PM,UX,Infra,以及项目所涉及的其他部门的工程师…… 合作的人变多了,输入和输出的信息也成倍增加。如何进行有效的沟通管理,如何当一个好的合作者,都大有难度。
此前我对大厂的偏见是:分工过细,每个人都是螺丝钉,日复一日做着无聊的修修补补,缺乏主观能动性。以在Google工作四年的经验来看,并无这种感觉。智能细分并不等同于受限,而是可以在擅长的领域深耕细作,产生很多更有创造力的想法。跨团队合作提供了互相学习的机会。举例来说,YouTube在电视端首页某细分内容的推荐系统针对用户的不同使用度采取了不同的推荐策略,这一功能则可以通过合作介绍并推广到手机端和网页端的产品中去。这样的细分所带来的增长机会,很难会在相反模式下被注意到。
程序员
工程规模大而杂,每个人都必须是全栈工程师:前端,API,服务端,日志,基础设施,每个人都需涉猎。如此看来,又跟小公司类似了。自主性从来不缺,就怕你不够自主。Google是一个把工程师文化写在基因里的公司,自下而上的变化和创新层出不穷。
以前觉得,程序员的产出就通过完成一个又一个功能而满足自己的成就感,我曾甚至一度把“build features”的字样放在简历中。这几年的工作让我逐渐认识到,这只是一个软件工程师最基本的要求。如何从一个idea的消费者变成一个生产者,如何拨开idea的表皮而提出本质问题,如何提出一个完善的问题解决方案,如何向团队其他人兜售这个方案,如何自我管理并驱动方案落地,每一个都不简单。
目标驱动
至少在我所在的团队,一切以数据为王。一个新功能的发布与否,很大程度取决于最终数据:DAU,WT,YT…… 数据又与团队和公司的目标相关联,与其称之为测试/数据驱动,不如目标驱动更直接。
其实整个产品是一个由人类组成的“机器学习”系统。设定好目标之后,所有的产品功能都要为此服务,增加metrics的功能得以发布,产生副作用或者没有变动metrics的尝试被毙掉,产品在动态中向着一个方向进化。我称之为“程序达尔文主义”。
如此的挑战显而易见,首先是很难有一个在一个长期的语境下能够保持合理的目标。比如一个功能,牺牲掉了用户的满意度,但是带来了用户的巨量增长,该如何平衡二者?任何一个决定都会有短期和长期的影响。好处是,一旦目标确定,中短期内可以很容易见到成果。
职业规划
以前对程序员的职业生涯理解模糊,可能是因为当时的公司规模不大。Google的级别和评判标准相对透明,可以清晰地知道自己的努力方向是什么。Google对它有一个很接地气的称呼:“职级梯子”。这一份文档其实可以算一份很好的想要在大厂终老的程序员职业规划指南。里面事无巨细地列出了某一级别的程序员在几个方向应该达到的标准。
东亚文化强调勤奋,要延长工作时间,要写更多的代码,要开更多的会…… 但在这里,周围好像更希望你变成一个更有影响力的人。