MoreRSS

site iconGround Oddity修改

致力于分享编程、旅行和生活等方面的思考。Google员工。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Ground Oddity的 RSS 预览

二十岁不再来

2025-12-20 00:00:00

二十岁不再来

Dec 20, 2025

Reward function of life

两个月前过完了三十岁生日,算是正式告别了二十几岁的自己。生日那天好像没做什么特别的事,那天早上去上海大使馆签证了,满脑子只想着生日能否给签证带来好运,以及如果签证官发现了今天是我生日,怎么跟ta谈笑风生一下。回想二十岁的生日,感觉同样的模糊,只是更加久远,根本想不起来自己做了什么事。
但是内心还是会觉得有所差别,好像二十岁的时候一点也不觉得二十岁是个大事(也许当时觉得十八岁才是?),但是三十岁的时候就不免开始感叹时光易逝。

十年前是2015,我大二,当时应该正好从一个叫电子信息工程的专业转到软件工程。当时转专业的理由非常遥远 – 虽然这理由呼应了此时此刻的我 – 我觉得我以后想创业,但是玩了几下单片机之后觉得太贵了,贫穷如我如果要创业岂不是得从别人那里拿好多钱,我不喜欢从别人那拿钱的感觉。思考了一下感觉软件的分发基本没啥门槛,一台笔记本写写代码足够了,这就给我构建了一个足够自由,足够有想象空间的未来。当时有个老师对我特别好(就称她为M吧),她不想我转专业,理由就是她觉得原来专业的生源比较好,我没有听进去。等到我毕业的时候,她说,“你转专业真是转对了” :)

翻看2015年的邮件,虽然当年也不全是用gmail,但是里面的邮件已经足够有年代感了

  • 看到了朋友邀请我去知乎答题(虽然我一次也没去,邮件里的邀请链接都挂了)
  • 看到Amazon.com和Amazon.cn轮番给我发邮件,我买了kindle,又买了好多书,最后看完有印象的好像只有王小波,余华,三体以及毛姆
  • 看到一堆充值邮件,都是因为自己在玩炉石
  • 去了一趟成都,第一次住Airbnb
  • 看到自己在时光网上(Mtime)买电影票,还看到有个趣玩网,当时很喜欢去上面买礼物,刚打开看了却发现上面只买一款萝卜干
  • 尝试去做了一次英语家教,发现自己毫不擅长,于是那也就是最后一次
  • 看到自己转专业之后的迷茫,懵懵懂懂之间开始看安全相关的东西,反汇编和逆向之类的
  • 在某个网站开始写blog,我还记得有一篇是关于django的,记得是因为那好像是第一次得到了现实中的正反馈
  • 跨年去了南京,和小季一起看了李志,那时候觉得李志是最能与我心中的撕裂产生共鸣的

这十年里最大的感触还是学会了打破心中的枷锁。再往前十年,10-19岁之间,我学到最重要的东西就是“不做自己不喜欢的事,不勉强与不喜欢的人说话”,比如不喜欢的老师的课就不听,不想理会的人就不理,可是我不知道如何“找到自己想做的事”以及“找到方法去做自己想做的事”。因为自己想做的事总没有那么简单,于是当年的自己的第一反应总是退缩

  • 比如觉得高中上课的老师很垃圾,但是觉得好像只有我会对此表现出非常不满,所以我觉得根据学生的意见换掉一个老师根本是天方夜谭。后来去了北京上学,才知道这不是我的呓语,M就对我说她和其他家长联合起来帮自己的女儿换了老师
  • 比如其实很想出国去上本科,但是却又退却,因为总觉得需要的钱太多。后来才知道,出去其实有很多更经济的办法,可惜当年的自己并没有去了解过

至于为什么退缩,那又要再往前追溯十年,甚至追溯到父母的经历。可是我不想讨论这些,因为那时的自己太小,无法改变任何事情,况且我也接受那一切,接受人生的开局 :)

打破心中的枷锁,才能进而打破头顶的天花板,拥抱世界的无限可能。比如你可以直接给Jeff Dean,Geoffrey Hinton发邮件,没有人会阻止你 ;)
人们喜欢把世界分层一层一层,阶级/等级/平台,种种种种,其实很对,人们总是活在一个同温层里。每个人都被父母放在不同的同温层里,看起来有高有低,但其实只要在了,活在同温层里是最简单不过的事,少数的是往上或是往下走的人。我因为自己的迷茫和随性,往上往下两件事都干过,往上是因为不喜欢身边的人,觉得很无趣,聊不到一起去;往下是不知道自己该做什么,把寻找痛苦当作快乐,后来二十多岁才看到王小波,才发现痛苦不必是自己的痛苦,认识有趣的人也不必拥抱他们的全部。

在层级之间穿梭之后,回望来时路,我感到恰到好处的疲惫,我对自己做过的所有决定总体感到满意,我也依然被前方的未知所吸引。二十岁不再来,第一个我能真正做点什么的十年已经离开了,我感到自己好像孤身一人站在萧瑟的秋风里,但是闭上眼我又为这十年感到庆幸,也迫不及待想要开启下一个十年。

信仰之跃

2025-10-18 00:00:00

信仰之跃

Oct 18, 2025

Stan in South Park, 5 years old

献身

上一篇文章中,我提到过自己在23年为什么可以放弃眼前升职的胡萝卜而转组,我真的就是被ChatGPT的能力震惊了,我觉得围绕着这样一个全能的模型可做的事情太多了。众所周知,搞科研里最高级的就是挖坑的人,其次是填坑的人,再次是排列组合100种相关工具,然后论证这些工具组合能不能把坑填上的人,工业界只能说是再再次了,low low hanging fruit,比排列组合还low。

ChatGPT这种模型的诞生,绝对是挖出了一个大坑。我的科研属于很烂的那种,但是我立马就能感受到了这新模型带来的冲击,新的范式肯定要来临。拿这新东西在程序分析这个领域怼着旧问题就能发100篇paper,何况这模型又是个全能选手,那不得在各个领域都翻江倒海。如果科研能搞出一堆排列组合来,那工业界绝对能创造出指数级的活来 – 不管这活是真的还是假的,有意义还是无意义的。

线性思维与路径依赖

转组两年,升了两级,看似很快,再回头看只觉得自己是中等情况。随便列几个潜在的更好的选择吧:

  1. 预判了大模型的前景,却无法预判它的前景能持续多久 – 如果早知道会持续这么好几年,就应该早点多放精力把自己多向ML倾斜。偶像Greg的雄文 How I became a machine learning practitioner 我可是读了好几遍,除了佩服还是佩服。我打开过deep learning教程,也打开过Andrej Karpathy的古早教程,最终都是开了个头就放弃了。
  2. 预判大模型前景用的是boolean(好/不好),而不是float(0-1) – 傻傻地只知道这东西好像好,但是不知道到底有多好,就好像隐隐约约看到地上有个坑,却看不清这坑有多大有多深。如果早知道这坑这么大,就应该跑步前进。
  3. 过度迷恋大公司的ladder,而ladder是个线性的东西 –当时觉得人就应该线性地成长,从3到4到5到6,正如他们规划好的一样。第一次升6失败的时候,伤心了几个晚上,其中一个晚上我投了Anthropic和OpenAI。过了一段时间之后,我都拿到了面试,但是我又没心情去准备,因为在忙着做升6的项目(我是发自内心地喜欢那个项目),然后不出意外地都挂了。其实OpenAI还挺想要我的,连续给了我不同位置的两次电面,可惜当时我的眼里只有升职。

写到这里我突然发现其实我也是陷入了路径依赖,说起来是特别感谢前辈能来美国留学,趟出这么一条安全的留美道路,如果不是可以借鉴前人,我根本就没可能来。这条道路走得人越来越多,也越来越清晰,美国留学,读CS,刷刷题,进大厂,爬梯子,过有wlb的生活。前面几点带给我的大概只有好处,但是我注定无法走完这条路,因为最后两点使我无法忍受。
爬梯子是一种线性的确定性的东西,是一眼就能望到头的生活;而wlb则是一眼就能望到头的生活的小小调剂。仔细一想,这不就是公务员生活的美国版么?当然在美国不需要维护复杂的人际关系,可以过更简单的生活,所以美国大厂生活 -> 公务员生活(纯净版)。

这种线性思维会在看到空降的高等级年轻同事之后坍塌,当然也有人会选择无视,你永远可以(应该)无视outlier,除非你想当那个outlier。

恐高症

工作的第一年我就开始炒股,然后立马就亏了一辆车,这辆车的钱在后来的五年里也没有赚回来。其实不是没有赚回来的机会,机会出现了很多次,但是每次都在股票涨到一半的时候卖了,俗称卖飞了。这么多次卖飞的经验终于使我意识到,我有恐高症。
股市里的恐高症其实特别容易理解,因为我就是股市白痴,没有金融知识。股票涨的时候不知道为什么涨,跌的时候也不知道为什么跌,更别说去预测股票什么时候涨停了。对我来说炒股可能就是图个乐子,卖飞了也都会原谅自己。

但是我发现我的恐高症不止于股市。

首先,我真的好像有恐高症,如果我在高楼上往下望,我会不自觉地手心出汗,然后很想要移动,往前往后都好,只要移动就行,虽然大部分时间更想往前移动。

其次,美股还是比较反映现实的,对美股恐高,就是某种程度上的对现实恐高。我在24年年初搞出的那个agent,在24年Google I/O 发布了,之后便是一大段跌宕起伏的心路历程:

  1. 刚发布的时候,毫无波澜,根本没用户,当时特别沮丧,显得所有的一切都是我们的一场巨大的自high。现在回头看,当时一是不知道marketing的威力有多大(我们根本就没用),二是这个世界真没准备好。
  2. 24年下半年,agent的声音多了起来,但是我一看,全都是我们之前试过又丢弃的想法。当时觉得有点兴奋想创业,但是很犹豫,一方面是自己不会没经验,一方面是虽然agent好像比之前火了,但是还是不能确定它的价值(或者说自己不懂怎么衡量它的价值)。
  3. 25年上半年,agent成了最火的词之一,可是我看来看去,却发现大部分都还是在做我们丢弃了的想法,少部分厉害的复刻了我们的想法,更少地实现了一些我们之前提出的猜想。我突然觉得整个业界好像都在重复我们做的东西,但是我们好像没有拿到太多名声,感觉有点悲伤与后悔。但是那时候的想法还是谦虚的,就觉得业界在重复我们一年多前提出的想法了,也说明业界跟上了,那业界聪明人这么多,新的范式应该也不远了吧。与此同时,我实在想不出来下一个新东西是什么,那如果我现在出去兜售我的旧想法,虽然还是最先进的,但是大概分分钟就会被新的想法给干翻了吧。再加上那时候升职了,感觉可以休息会儿,创业的心又收了回去。

25年下半年,也就是现在,agent依旧很火,但是火得大家有点疲惫了,因为没有什么新的突破。为什么呢?因为业界依然在重复那些旧idea,真的难以置信。此时的我,第一反应就是AI的泡沫要破了,这种没有突破的东西居然能喊这么久,那更不应该出去创业了,感觉应该在大公司好好待着。可是又总觉得有什么不对劲。
是恐高导致失去的机会,是拿到机会了没有all in失去的那部分,是成长过程中培养起来的对风险的厌恶。我大部分时候就是这种人,美股,尤其是AI股,涨起来了就觉得AI泡沫要破灭,美国要重蹈2000年互联网泡沫的覆辙。可是事实呢,我不知道以后,但是我确实是被美股/AI股一次又一次地打脸,很多时候我在想,这种恐高症到底影响我生活的多少方面?
我觉得我高估了经济的脆弱性,低估了AI的潜力,高估了业界的水平,低谷了自己的能力。我不知道怎么修复这件事,就只好祭出我从yinwang那里学到的最简单粗暴的方法:

在一而再再而三的上当受骗之后,我终于把所有的权威们从我的脑子里轰了下去。也许有时候轰得太猛烈了一些,但总的说来是有好处的。

其实就是“求其上者得其中”的另一面,不用盯着那个完美的平衡,甚至可以把矫枉过正当作目标,最后也许会落在最接近中点的地方。我曾经实践过这个方法了,完全同意yinwang说的,“总的来说是有好处的”。现在我想要再实践一次,我依然恐高,但是我想试试在高处活着,而不是因为恐高就活在了低处。况且,如果不在高处,怎么纵身一跃呢,小跳罢了 :)

困境

聊过很多公司,一个也没去,整体趋势就是公司越聊越小。比如最早考虑同等级大公司,然后变成独角兽,再变成A/B轮左右的,最后只想找五人以下的小作坊,跟founder聊聊天就能进的那种。人多的公司(包括OpenAI,Anthropic)其实面试也流程化了,聊着总是兴奋不起来,而且我也实在没心情准备面试这种傻叉东西,实在是浪费时间。

其实也聊过几个小作坊,包括一个同事的朋友的公司,非常早期,刚融完seed,说是那一届YC最强,两个founder也是都创业且成功退出过。因为是同事的朋友,所以聊起来进展特别快,当时我甚至在阿拉斯加旅游,但是忍不住继续聊,可是聊了一通之后最后还是没去。我给的理由就是钱太少了,但是其实有更深层的原因。

我想了三个挑选早期startup的原则,按优先级分:

  1. 人。你是否对公司里的其他人有信心,你是否享受跟他们一起工作?早期startup抛弃现有的产品迅速转向属于是家常便饭,如果公司转到了一个你不喜欢的方向,你是否还对公司有信心,是否还会享受在公司继续工作?最佳情况就是找到一帮人,大家一起无论做什么都是开心的,充满希望的。可是这本身就是一个悖论,如果你不加入公司和他们工作过,那又怎么知道会不会享受和他们工作呢 – 除非你们早就认识且在一起工作过。这也是我拒绝那家startup的原因之一,我其实和公司里所有的人都聊了一轮,包括两个VC。我发现那几个员工都是两个founder的朋友,他们都与founder在一起工作过,他们之间的信任是另一个层级的。如果我加入了,我会成为那个公司的第一个“局外人”,这感觉就像别人一群互为朋友的陌生人在开party的时候邀请了我,这种局我是没什么兴趣的。
  2. 产品。你是否坚信这个产品的前景?你是否对这个产品有自己的见解?你是否能对这个产品带来特殊的或者巨大的贡献?如果公司明天决定转向,你是否会失去热情,进而离开公司?
  3. 共同成长。这里主要说的其实是钱,founder吸引员工的时候往往会说公司有多少多少潜力,五倍十倍二十倍地吹。但是其实这就是一个反问的好时候,如果公司涨了十倍,但是你却没有拿到你心中的数字,那岂不是就像个陪跑的人?所以公司占股必须够多,饼必须够大,否则根本没必要加入。

简单来说,那个startup也许是有前景的,连续创业的founder加上不赖的赛道,但是基本与我没什么关系,我去的话只能拿三分之一的工资外加有限的股份,没什么意思。

退后

大厂的金手铐是真实的,我属于想得比较开的了,不在乎什么大厂的名声(待了五年也够了),其他小恩小惠的福利对我来说也像是鸡肋,从来也懒得薅,但是钱却是真实的。在我拒绝那个startup之后不久,就得到了来自公司的正反馈,VP神神秘秘地给我拉了一个15分钟的会。我当时就想,这到底是要把我开了还是要给我额外发钱,因为一月刚给我发过一笔,当时也是拉了这样一个会,如果再来一笔那是不是too good to be true了,感觉还是要把我开了的概率更大。

结果还真是发钱。可是跟一月份发钱的开心不同,当时我工作得很开心,额外的钱就像在精美的蛋糕上又插了一块写着表扬的话的巧克力,收到钱之后我很感激,也表示会继续留下来。但是事过境迁,半年下来可以发生的事真是太多了,我没有从前开心了,而且也聊了好几个公司了。于是我就经历了可能是我人生中最漫长的15分钟:

VP:给你钱,这次这笔不像上次那样需要等两个月,这个月底就能发到你手上
我:谢谢老板。可是...
VP:可是什么?
我:可是我已经有offer了,而且我也在认真考虑
VP:是公司外面的offer吗?
我:公司内公司外的我都有,我主要是觉得组里好像有趣的工作就做完了,我不太知道接下来该做什么
VP:我不同意,我觉得还是有很多有趣的工作可以做的(外加一通举例他手下别的组的项目)...如果我手下有别的你感兴趣的组,你也可以过去
我:好,我会好好考虑的,多谢

走出办公室的那一瞬间,其实还挺轻松的,因为这几个月确实做得不是很开心,感觉公司里的政治不可避免得影响到了我。但是其实自己的行为很傻叉,因为我根本没有offer,没有内部的offer(我以为我即将会有),也没有外部的offer(甚至都没开始面,只是朋友想叫我去),我就是觉得我不想待了,我无法给出虚假的承诺。我知道我想走,虽然不知道什么时候,也许下个月,也许再过半年,也许再过一年,总之我做不到先答应下来。

但是没过多久,等我冷静下来之后,我就开始担心,他会不会撤回这笔钱。虽然我觉得我做了对的事情,但是代价好像有点大,我回去打开电脑一看,好家伙,原来每个月有这么多钱,每个月发的比我所有还在拿的股票加起来还多,于是突然开始有点后悔自己怎么就说了实话。
接下来几天更狗血的事情发生了,过了两天,那笔钱从系统里神秘地消失了,我觉得那笔钱肯定被VP撤回去了。我束手无策,我又不能回去找VP说,“我现在决定留下来了,麻烦你把钱还给我吧”,因为我还是想走,我没法现在特意走回去找他撒一个谎,或者就此放弃离开公司的想法。与此同时,公司股票开始暴涨,那笔钱直接涨了四分之一,我直接陷入了深深的emo。
在那个场合下那么诚实,其实就一个好处,我自己心里能好受点,将来跑路的时候也好受点,其他的全是坏处。而且仔细想想,VP一月刚给我发过钱,那笔钱分两年拿完,当时我可是答应得好好的说会留下来,但是八个月之后,我还不是又开始计划着要走了。所以当时在办公室里说自己会留下来好像才是最优解,可是我就是喜欢直来直去地说。

我努力尝试处理这种沮丧的情绪,于是我找了一个我很信任的同事,我说我好像做了一件很傻的事。我把事情一五一十地告诉他,说着说着突然就哭了,因为我工作了五年攒的钱和这笔两年发完的钱差不多多,觉得好伤心。这是我第一次因为工作上的事情哭了,好像也是记忆里第一次因为钱哭了,我想更深层的原因是,我觉得我被撕裂了,被“做我觉得对的事情”和“赚更多钱”这两件事撕裂了,我当时无比地倾向于后者但是却又讨厌那样的自己。同事说,“你要想清楚,如果你真的要留下来,我可以去找VP说,但是你要想好,就只有这一次”,我说,“没事,不用了,我只是想找个人说说话”。我只是想找个人诉说那种被撕裂的痛苦。

接下来的几天,我更努力地处理这种情绪。
一方面是钱,我开始思考,我是否真的马上需要这笔钱。我找了很多现在不需要这笔钱的理由(借口),我就觉得其实我每年发的工资好像也用不完,多拿点钱好像也就是存着,有点复利;另一方面来说,就算是钱一分不花,全存下来,这种线性增长好像也没什么可令人兴奋的。所以想到某天有个VC对我说的,除非你在大厂每年赚2m以上,不然你出去创业的期望都是正的。我从来没算过她这句话对不对,但是用在这个场景下反正是令我心安了一些。
一方面是人,我觉得这次回绝,我都不知道该怎么再在组里待下去。每多待一天好像都是亏的,因为我本可以拿着更多的钱待着,而且我每天都会想到我们VP说不定已经当我走了,难受。但是好像还是VP先打破了沉寂,他发邮件给几个人说过两周有个summit,要我们过去搞一些poster展示一下以前做的东西,我也就回了个好的,好像什么都没有发生过。他真的是个很好的人,可以理解容忍我的“不尊重”。但是换个角度,我会想到乔布斯说过的话

在我的生涯里,我发现最好的人才是真正理解产品内涵的人,他们非常非常难以管理,但是你要忍受这些,因为他们是如此理解产品的内涵。这就是做成伟大产品的关键,不是管理过程,而是产品的内涵

我既然自我感觉良好地觉得自己还不错,那肯定也不是最好管理的那一种。

几天过去之后,那笔钱突然又出现在了系统里,像一个玩笑。不过经过那几天的思维实验,我好像全都放下了,我心安理得地接受各种结果,这笔钱在与不在,好像与我并没有什么关系。但是我还是开心的,开心的是我可以拿到激励我的钱,尽管我不会待太久;开心的是我向VP的坦诚好像并没有错,我可以心安理得地拿钱,然后随时走人。

吸饱的海绵

在写这篇文章的某一天,我在看离职手续都有什么,突然看到自己在公司已经差不多2000天了,五年半还要多,就想到了自己在这篇文章里写到的“没人值得你学习四/五/六年”。这五年半里,我在第一个组待了三年,其中包括第一次进入工业界的迷茫,第一次加入公司的兴奋;第二个组待了两年半,感觉自己从半成熟期直接蜕变了,接触了很多新鲜的想法,接触了很多产品,接触了很多比我年纪小的人。

我想也是时候到此为止了,我还是同样的观点,没有人值得我学习四/五/六年,谷歌作为一个公司,我已经在其中待得太久,如果不此时离开,我也许就要被他捕获了。

从另一方面来说,我也已经看到了很多谷歌的问题。就像上文提到的心路历程一样,我觉得那个VP很好,早期招募了很多很好的人,也可以容忍奇奇怪怪的人存在,整个队伍的气氛也很好。这里我又要引用一下乔布斯说过的话

当你费尽心思找到了足够多的人才(A player)时,你会发现他们真的能够很好的互相合作,因为他们之前从来没有得到过这样的机会(与这么多优秀的人一起共事)。他们也不会想要和水平不够的人共事(B and C player),于是就会形成一种自我监督,他们只会招募更多的人才。招募一些好的人才,然后这种情况就会在公司中传播,最后公司里就会充满了好的人才,这就是Mac团队的样子。

我不知道乔布斯招错过多少人,又因为招错而开掉过多少人,我觉得肯定不会少。谷歌的问题在于你没法在招募上犯错,特别是等级比较高的人,因为谷歌冗长的流程,你不得不依赖他们来帮助你招人。在一个需要迅速扩张队伍里,比如AI时代的队伍,招进一个B/C player就是毁灭性打击,因为他们会迅速地找到更多的B/C player。也许是因为能力不足导致的心虚,这种B/C player往往也喜欢招更多的人,干什么事都带着一帮人吵吵闹闹的。根源还是谷歌没办法开人,招进来就是招进来了,开个人可能要半年一年,说实话,这么多时间,LLM都能迭代好几轮了。此时唯一的缓解办法就是要更多的招人名额,然后期望能招到对的人,可是招人名额也不是这么容易拿到的,于是人可能就被淹没在茫茫多的流程里 – 这里我甚至一句都没提到关于开发产品的流程之繁琐。

我因为在队伍里的声望以及上面的信任,还是可以在队伍扩张中做一只独狼,做自己的事。可是当自己看到队伍里自己认识的人越来越少时,我觉得没有必要再待下去了。

烧掉标签

好吧我承认这一段也许只是我想表达我的疾世愤俗。

很多人都喜欢用各种标签来打扮自己,什么学校,什么公司,什么会议,什么名人,各种各种,这些标签使我上当受骗了好多次。第一次是我的高中,第二次是我的graduate school,第三次大概就是谷歌了。不能说这些地方一无是处,但是庸人们聚集起来使用这些标签,就彷佛是一种大型壮胆活动,过度美化这些标签,生怕别人知道了其实里面经常也是一滩烂泥。

我好像总是这样,看到一个标签,想要,得到了之后却发现其中问题重重,于是又想要撕掉。我知道世界并不完美,可是我还在找寻能让我满意的地方。

在当下这个时间点,我只觉得谷歌的标签很蠢,蠢的程度随工龄的增加而飞速增长。

再一次献身

xxxx

钱,想明白了吗?500k是一次很好的思想实验

看着业界重复着我做的东西,我感到非常遗憾,遗憾自己没有变成一个领头人

我无法回到过去,我手上也没有当时那样的牌了,可是我是否就应该就此沉睡?我能相信的只有我自己,和当时的那个团队,我相信自己可以再次做出领先于世界的东西,而这一次,我不想要再失手了。

可以看出,我好像已经不在最优势的那个位置了,甚至可以说是一无所有了

信仰之跃

写了这么多,其实觉得自己quit是很难合理化的。放弃了明年的百万年薪,想到自己在25年对小季说了很多很多次,“好想一年赚一百万啊”,但是近在咫尺的时候又放弃了,好像我看到系统里显示明年即将拿到这么多钱,跟真的拿到那笔钱,是差不多满足的,又或者,放弃这笔钱让我觉得更满足;绿卡还有半年排到了,换公司多出一堆麻烦事,也不知道能不能在排期到的时候及时拿到绿卡;现在自己也并不掌握什么核心技术 – 业界基本都在同一起跑线了,感觉只剩自信了呀。
上个月回国找了好几个人聊,我说自己很享受对这种(即将或已经)拿到的东西说不要就不要的感觉,我觉得很爽。聊之前我真心地因为大多数人都会认同说这很爽,但是大家好像都觉得我太作了。我现在觉得大家都是被生活鞭打过了,变成了王小波笔下被锤了的牛,而我他妈只想永远生猛下去。

最近一年多听了很多Leo王,他唱“希望自己死时自己手里握的不是老二是麦克风”,他唱“死前一秒我还在巡演的路上”,我想我们是一样的人。

Google 五年

2025-05-10 00:00:00

Google 五年

May 10, 2025

Stan in South Park, 5 years old

前情提要

有必要吗?好像是有的,因为上一篇文章写在2022年,而且它是一篇不知所云凑字数的傻叉文章,上一篇正经文章其实是在2020年,一转眼就是五年。

简而言之,五年半前我愤怒地,意料之外情理之中地,决定不跟学校的导师继续做研究了,然后转到了学校的master项目开始找工作。当时找得比较困难,因为决定做得很突然,刷题不熟,校招也关了,后来还遇到由于新冠导致的各种停止招聘。但是经过一番折腾之后,还是拿到了Google的offer并且决定去了。

不知不觉下个月就是我来Google五年整了,在此期间我升了三次职,从L3升到L6,说实话是超出了自己的期待的,因为当时毕业了憋着一口气也就是觉得要在本该PhD毕业的那一年走到更高的一级(L5),结果一不小心升多了(笑),再想到自己当年的导师还没拿到tenure,不禁又偷笑一下。

但也就只是笑了一下而已,笑完之后就又陷入迷茫与虚无了,和以前并没有很大区别。

比学校好一百倍的“延伸”

回忆了一下自己从3升到4的过程,想了想跟自己刚进Google三个月时写的描述没啥区别。总结一下就是,节奏很慢,没啥期待,是个疗伤的好地方,如果觉得自己能力够了想早点升职就得不停地去催manager。

What if

当然今天回想起来还是会有一下遐想,比如说,当时因为COVID我一直在东海岸远程工作,天天睡到11点醒来在床上开会(听会),一两年内几乎只跟两三个人说话 - 如果当时我一入职就去湾区了会怎么样呢,我是否会每天八九点就到办公室,然后找几个人扯淡呢?

再回想自己在graduate school的时光,一大败笔就是由于太忙,几乎不跟人说话,然后自己又不懂,以至于花了很久才意识到自己导师是个PUA大师,早该远离的。想不到工作之后又(被迫?)犯了一样的错误,一方面是COVID被迫远程工作,一方面也是自己内向的属性,不愿意迈出舒适区。其实当年如果能和更多的人多聊聊,也许我就能早点弄明白下面要写到的“升职困境”了。

暴论一条

暴论:招人只招本科生,如果招不到的话,高中生也可以。

加入第一个组的时候很开心,因为80%的同事都是PhD,我觉得自己半路出家也能来这个组,很赚。现在回想起来就是俗人行为,太拿title当回事。当年在学校的时候就觉得身边读PhD的大部分都傻了吧唧的,凭什么觉得来了Google这里的人就会不一样呢?首先,这些人没那么强;其次,在Google,99%的工作不需要你的PhD学位。

当年我进组之前还问过一个已经走了的实习生,问他组里怎么样,他说人还行,就是年纪都比较大,聊不到一起去,有点无聊。前两年我一直远程工作还没觉得,直到我搬去了湾区,去那个办公室上班上了半年之后我就转组了,实在是难受。一方面那个楼很烂,没有阳光,且食堂可以竞争全Google最差食堂;另一方面办公室总是死气沉沉的,充满了一种说不上来的沉默。

后来我得出了一个残酷的结论,这里的工作用不到你的PhD知识,不管你是真强还是假强,我不在意,Google也不在意,因为你大概率是能把工作做完的。可是你读PhD时留下的trauma,却让我很在意,这个学位磨平了你的棱角,消磨了你对生活的热情,而它们对我来说很重要。我是如此介意以至于每次我经过那个办公楼时都觉得上面有乌云笼罩,一朵朵都是Sys PhD经历过的trauma(大部分Sys PhD怎么熬出头的应该不用我多写)。

后来去了新组,好多本科生,聪明又明亮,每天都带给我很多笑容。作为一个经历过短暂trauma的人,我很羡慕他们,跟他们工作的每一天都像是一场治愈。我片面地觉得,快乐教育是真好 :)

升职困境与ChatGPT

去Google工作了几个月我就感觉凭自己的实力,一口气升到5绝对不成问题吧,可惜并没有,然后我也搞不清为啥,摸不着头脑。后来片面地总结了一下,这组里大部分进来都是4,然后普遍要花三年才能升到5,好像是个传统?当然后来我知道这是一种资源与政治的综合原因。可是我不愿意等三年,我对排队升职这种事一点兴趣也没有。可是我当时已经在这个组当4当了一年半了,实在是一个尴尬的时间,好像再努力一把或者再多给一点耐心,也没什么大不了的。

当时我正在做的一个项目是基于语义的code diff,这件事不能说难,大方向上都已经有较好的理论支持,具体效果我来实现的话应该也差不到哪里去。但是有一个问题,就算算法分析出了两个文件是相似的,渲染的结果却非常难读,因为算法为了对抗代码混淆,一般是忽略变量名这种细节的,而渲染的结果是基于某种text diff算法的,所以渲染的结果里只会有大片大片的不同。当时对自己这方面的工作不是很满意,也经常在想怎么样自动化重命名反编译出来的变量名才算是合理的。

就在这个时候,ChatGPT横空出世,我们大组举办了一场hackathon,我的项目很简单,就是把混淆的代码丢进去,让模型根据上下文重命名变量,后续也很简单,我直接转组了。GPT3.5这种逆天的能力,是传统程序分析里从来没见过的,也许之前有过特制的模型可以较好地重命名变量,但是从来没有过一个模型可以整这么多花活,上能写诗,下能分析恶意软件。与此同时拥有这种逆天能力的门槛低得令人发指 - 只要给OpenAI交钱就行。 不得不说,quit这种事就是一回生二回熟,有了之前quit PhD的经验,那是quit起来已经得心应手了 - 在Google,转组就等于重置升职进度,但是我想,不就是一些沉没成本吗,无所谓。我当时的manager极力挽留,甚至承诺我当时那个季度就去升职,但是我的心已经飞向了LLM,不会回头了。

意外之喜

我离开那个组之后,接替我的人发现我做的有个项目很给力,于是他提出要帮我写一个proposal去评奖。于是我就把各种文档以及数据丢给他让他写,不得不说他写得挺好的,最后我们有了一个双赢的结局 - 这个项目拿到了Google的一个金奖而他的名字也在上面。 拿到这个奖之后,我突然膨胀了,问我的新manager我能不能这个季度就去尝试升职。尽管我们才认识两个月,他居然说,可以试试。我花了些心思写好了升职的文档,然后居然就过了,我五月份来到这个新组,八月份就得知了升职的消息。最讽刺的是,那个拿奖的项目,是我升职的重点,而它是我刚升到4的时候做的,从设计到实现,一共只花了一个半季度。

一种幻觉

转组之前的几个月正值Google史上第一次大裁员,我当时的想法就是失望,我觉得Google不应该裁员,太他妈丢人了。转去的新组是正在负责Google I/O上的某个LLM相关的项目,我当时就想,啊,就让我来搞这些最新的东西,提振股价,消除未来的裁员吧! 站在2025年的当下,我发现我在这两件事上都错得离谱。首先Google并非不应该裁员,而是应该更小心有策略地裁员,大公司病是真实存在的,它折磨着许多人的每一天;其次我的工作跟股价也没什么关系,也许它们曾在某个时间点上align了,可是correlation does not imply causation。当然这些都是后话了。

加速加速加速

加入新组的时候正好是23年Google I/O的前两周,我观摩了大家怎么准备I/O,然后感受到了前所未有的激情与混乱,当时就觉得太好了,搞事的机会来了。

当时做AI Coding就是三件套,code chat, code generation, and code completion。当时组里有自己的模型,大家也努力贡献自己的idea去train模型,我想要贡献一些程序分析的知识,但是却发觉low-hanging fruits是如此之多,纯ML人其实并没有看到跨学科的力量,或者说看到了但是刷low-hanging fruits在当时就是ROI更高的方案。 我进组的时候这三件套都有人做了,所以我onboard之后有人问我,要不要做agent,我说好啊,那时候还是2023年的7月,然后我一直做到了今天。

中间发生了很多事,随便写几个留念一下吧:

  1. 2024年3月,我写出了当时最新颖(AFAIK)的agent,它是真的work的,大家看到了之后也非常支持,想要在24年的Google I/O launch。其实I/O上宣布的很多东西都是teaser,给大家看个demo,就算结束了。但是我们当时非常ambitious地想要立刻让用户就能用上,特别是我,我想要给全世界看。于是我在I/O前的那两个月提交了350多个CL,其实一般工程师一年也就提交100多个CL,但是那时的我已经陷入疯狂,我非要把我写出来的东西productionize不可。组里的PM/TPM/Legal也是,一路披荆斩棘打通大公司里的各种流程。真的是我最爱的项目,所有人都只有这一个目标,land the cool thing。
  2. 我面对了很多不曾想过的问题,很多痛苦。比如当你搞出了一个产品,它是如此先进以至于这个世界根本就跟不上,大家不知道怎么用,看不到潜在的价值,站在大公司里,看到DAU/WAU/MAU 这些东西,我不禁会问自己我们到底在追求什么,从拓宽技术的边界到让用户真正喜欢且用上,到底是多么长得恐怖的一条路,也许只有乔布斯懂。站在2025的年末,一切显得更加讽刺,业界不停地吹agent,催生了无数startup,但是这一切其实都在I/O 2024之前实现了大半了。
  3. 如果说普通人无法理解,没有准备好迎接新的技术与产品,我觉得没关系,可是在公司内,说起来都是挺不错的工程师,也拒绝理解。拒绝理解的原因有很多,但是最让我难受的还是大家只愿意专注于自己的一亩三分地,不愿意理解新东西,不愿意站出来破局。其实直到今天我也不知道如何处理大公司里的这种情况,我不会push project forward,说起来我根本不是个合格的典型L6,我不懂八面玲珑也不懂如何利用公司里的level来敲打合适的人。当我不知道如何是好的时候,只有真诚是我的武器,我真诚地表达为什么这个产品这么重要,我真诚地表达请省下所有的bullshit,只要你们onboard,我会把技术上的一切都摆平。

金手铐

其实升职升快了很容易错失其他机会,或是更难改变自己,因为很容易overfit了。我明白人生不能什么都体验,但是还是经常会想没有走过的路。

比如说

  • 有好多个startup来找我做founding engineer,其中一个其实已经聊到比较深了,差点要去了,但是在钱的方面算起来就是70%以上的pay cut,就算乐观地估计公司的未来,比如调高公司估值10x的概率,收入的期望也就是差不多和现在持平。这样一来,我真的要离开公司就总是犹犹豫豫的,因为收入的锐减上难以接受,有时候也不免在想自己是否会错过下一个Google。不过话说回来,肉身总是只能加入一个startup的,收入给了自己额外的考量也并非全是坏事。比如说那个我差点脑子一热就要去的公司,拒绝后的一周我的情绪是fomo,两周后的情绪是烦心,但是两个月之后我却觉得当时做了对的选择,耐心等待时机比冲动加入更好(应该吧?)
  • 另一个是关于等级,等级高了转组就麻烦,因为没有那么多坑。Google内部很多组想要招个L6经常都指望你去当manager管人或者去搞定一些政治斗争,而我只想安安静静当个engineer。有时候跟朋友聊,其实觉得AI Infra真的还是挺有意思的,我比较想要研究inference optimization,但是组就很难找。如前所说,大部分组不指望你攻克技术难题而只指望你输出管理或者斗争,没有多少组会招一个L6然后指望你成长起来独当一面。但是少不代表没有,就比如说DeepMind里现在塞了五六千个人,大部分组就符合我前面的描述,但是还是有一些组里面很多人都在搞些务实的东西,就算他们的等级是L6/7/8/…。

未来之迷思

这篇文章从五月拖到了十月,其实就是这里一直落不下笔写,那么就暂时算了吧,我会新写一篇的 :)

新的旅程…?

2022-02-27 00:00:00

新的旅程…?

Feb 27, 2022

Stan

Prove

21年10月的某一天,看起来应该很美好,因为那天是我的生日,而且那一天,我升职了,不过我好像并没有很开心,反而在这之后觉得很迷茫。11月的时候,想写点什么,但是看看网站上的文章,啊,已经一年没有写东西了,于是一种“很久没写了所以应该憋出一篇又长又好的文章才可以”的傻叉感觉占据了我。

其实当时想了很久应该写什么,想记录下自己停滞的心情,却进展很缓慢。某一天在明尼苏达的大雪里,我很开心地终于想到了这篇文章应该叫什么,我要叫它,”新的旅程“,一点也不fancy,却实实在在的是我的渴望。那天回家之后,我写下了下面的话:

好像呆在“我想要证明自己”这个状态里已经很久很久了,小时候不切实际地想要证明自己是世界的中心,天天看着历史书觉得自己以后会和他们一样;长大了点又想证明自己是个天才,不喜欢听课,每次都想要在考试的时候看到题目然后从零开始想,觉得那样才算是厉害;再之后不起眼的光环也褪去了,去了个无法忍受的学校,变成了只想证明自己跌倒后也可以再爬起来;然后机缘巧合开始读PhD,再次点燃了想证明自己不是一般人的热情;却又quit去了工业界,想要证明自己可以在工业界做更喜欢的东西,实现更大的抱负;最后终于觉得去他妈的证明个鸡巴,我不想要再证明什么了,却又觉得失去了动力,于是今天就坐在图书馆的凳子上发呆,想起四年前的自己,坐在瑞典某个图书馆里,对生活以及未来都充满了热情。前段时间突然想到自己在某篇文章里写到过的,拿到KTH的录取之后,一段开心的时光。我跑到已经不打算去的KTH去玩,一时兴起去学校旁听一门课,满怀期待地去问教授我能不能旁听,教授说可以,但是我也要做好回答问题的准备,因为他喜欢问问题,也不会因为我是来旁听的就不问我问题。我很开心他让我旁听,整节课都非常认真,也很好地回答了问题。

我不知道是从什么时候开始改变的,是我来美国之后吗?还是我开始读那个让我后悔又不后悔的PhD开始?

写完以后,我又陷入了停滞。再过了一段时间就是年末了,我想,就让我出去旅游一趟然后忘掉这一切,直接前进吧,希望回来就能踏上我所期待的,新的旅程。

回来之后的一小段时间里,我真的很努力地去相信我已经踏上了新的旅程,也似乎的确感受到了新的,活跃的气息,只是没有持续很久。很快我又开始觉得,我的生活是奄奄一息的,我是奄奄一息的。我挣扎着想要起来,我对自己的现状所感到愤怒,我向四面八方胡乱地出拳,却都好像打在了棉花上,最后用尽力气还是躺在原地。

Purpose

我觉得我失去了目标,刚毕业的时候我想,我要在三年内在Google升到L5,因为如果我不quit,也许再过三年我就会毕业了,而PhD毕业加入Google的话就是L4。如今我选择了另一条路,那我一定要在这条路上走得更远,我想要在本该毕业的那一年升到L5。现在再想到这个想法,我只觉得年轻人真好骗,这么离谱又情绪化的原因就能让我努力工作,努力朝着这个方向而奋斗。如今的我,就像上面的草稿中所说的,早就对证明自己这件事失去了兴趣,这也让我变得非常难搞。我试过了所有我知道的办法,我给我自己随便列了一些目标,又让我自己去跟成功的同龄人比较,但是每一次都像我在上面说的那样,像打在棉花上,用尽力气却没法移动分毫。此时脑袋里响起的是Agent Smith说的话:

Without purpose, we would not exist. It is purpose that created us. Purpose that connects us. Purpose that pulls us. That guides us. That drives us. It is purpose that defines us. Purpose that binds us…

Purpose,我失去了我的那一份Purpose,我应该像黑客帝国里那些失去了Purpose的程序一样,被送到源代码去删除。又或者我应该脑后插管,进到Matrix里,管他什么自由意志,只要给我一个Purpose就好,我想为了某些东西而活着。这种迷茫再衍生下去,就开始会觉得,国内那种什么年龄就干什么年龄的事也挺好的,环环相扣…想到这里,我知道我不应该再继续这样下去了,我真的需要一个,新的旅程。

Pain

我从小就相信痛苦才是创造的源泉,痛苦才是最能带来活着的感觉的东西,所以小时候总是想方设法地自己制造一些痛苦来尽量“有病呻吟”。直到后来上了大学,望向四周,所见之处皆是唾手可得的痛苦,却又在那时看了王小波1,才知道痛苦不必是自己的,悲惨的也不必是自己,原来观察他人的痛苦也能成为创作源泉(虽然今日细想之后觉得王小波当时也不过是在有目的地说给他的侄子听罢了,毕竟好的生活,永远不等于没有痛苦)。

我最近的痛苦就是我没有痛苦,在Google工作的每一天对我来说都过于轻松且无忧无虑,而且每天在家里工作,找不到出门的借口,默默地离人群越来越远,最后连他人的痛苦也观察不到了。当然我可以远远地看着一些新闻,却开始觉得自己越来越冷漠,越看越不再关心,越不关心越讨厌自己。

长大26岁

确实没有想到我的26岁只能被这么几个P开头的单词所主导,但是我又能想得到什么呢?仔细想来,我从来没有思考过毕业后的自己该是什么样的,更不必说以后的30岁及更远的未来。我自己也觉得奇怪,好像自己从来没想到过自己能活到这么大一样。现在开始努力思考,却也还是怎么也想不出来未来要干嘛,只觉得成年人的世界可真他妈的无聊。

一直很喜欢迷茫时期的人写的歌,也一直把他们当作养分。比如喜欢花儿青春的迷茫,李志愤怒的迷茫,热狗玩世不恭的迷茫,最近最喜欢的Leo王搞怪的迷茫。不过某天突然发现自己欣赏的人跟自己的年纪越来越近了,Leo王只比自己大一点,将来的某一天,自己就会需要从比自己小的人身上汲取力量了。这其实挺让人难过的,从之前仰望着羡慕着比自己大的人经历过的迷茫,也想要快点长大,希望有一天自己也能够那样抱怨迷茫。可是转眼间我已经快要开始欣赏比自己小的人所产生的迷茫,我不禁想问自己,我为自己的迷茫留下了什么证据?好像什么也没有,而我却已经开始进入表达欲没有那么旺盛的年纪了。

新的旅程

焦虑和迷茫就是间歇性的,距离我写完上面的文字又过了一个月,我感觉好些了。我不知道我的改善是否归功于这两件事,不过我在这段时间里确实做了这两件特别的事。

第一件事是我开始调酒了,之前只是随便喝喝,现在买了一套调酒装备,经常看各种bartender的调酒视频。下面这一杯叫做White Russia,我也不知道我为什么放了这一杯上来,想到最近的战争,禁不住有点政治性抑郁了。我经常每天醒来就开始刷新闻,刷完又是带着沉重的心情起床,这个世界会变得更好的证据也太难找了。

White russia cocktail

第二件事是我终于和小季一起领养了我们的第一只猫,名字叫ginkgo,ginkgo是我们来美国的第一个家的对面的中餐馆的名字,老板人很好,东西也很好吃,只是在我们离开夏村之后,老板也决定离开了,于是我们就少了一个回去的理由。Ginkgo是一只勇敢的小猫,带他回家的路上他一点也不焦虑,到家几个小时之后就想要把整个家都看个遍,我很喜欢他的勇敢。

Ginkgo the cat

希望大家都能好好生活 :)


  1. 我怎样做青年人的思想工作——王小波↩︎

用Sous vide做羊排

2020-11-27 00:00:00

用Sous vide做羊排

Nov 27, 2020

Lamb in plate

疫情受困在家的半年多里,做了很多菜,其中这个羊排使我不得不记录一下。我做菜一般都是看完很多个教程之后凭感觉做的,做完经常自己也忘了怎么做的了,所以此教程并不能保证100%重现照片里的样子,估计样子能重现90%,味道能重现95%以上。

准备

做这道烤羊排需要如下器材:

  1. Sous vide
    • Sous vide也叫low temperature long time cooking,基本用法就是给一箱水加热到恒温,然后把食物放到真空袋里,再连袋子一起放到水箱里。这个解决的主要问题就是煎牛排之类的食物时的火候问题,煎牛排的外表皮需要大火,但是大火的问题就是往往外面要糊了,牛排的内部还太生。
  2. 抽真空机(Vacuum Sealer)以及真空袋
  3. 铸铁锅
  4. 烤箱

以及如下调料:

  1. 盐,最好是粗盐,我用的是犹太盐(kosher salt)
  2. 百里香(Thyme),干的或者新鲜的都可以,推荐用新鲜的
  3. 牛油果油,原因是其smoke point较高
  4. 黄油,我用的是unsalted的
  5. Optional:黑胡椒,孜然(不推荐孜然粉以及任何过于细的粉状物)等等都可以加

羊排就是Costco买的羊排,推荐买肥一点的,表面脂肪覆盖得比较均匀的。

过程

  1. 把羊排从包装袋里拿出来,稍微用厨房纸擦一下血水,放在案板上
  2. 撒盐(以及其他调料),多撒点没事。我一般会撒挺多的,直到案板上都有挺多盐的,然后拿羊排当刷子把案板上的盐刷干净,注意羊排的各个角落都要刷到,不均匀没事,羊肉各个部位的粘性本来也不一样
  3. 把羊排放进真空袋里,同时塞进黄油块,新鲜百里香(如果是干的百里香就在上一步中跟盐一起加入)等,然后把真空袋抽真空。黄油不用怕多,其实最后大部分都不会吃进去的。

Lamb in bag

  1. 准备好一箱水,用Sous vide加热到130华氏度(54摄氏度)左右,把羊排放进去水浴3小时左右。加热的具体时间其实很灵活,general rule是,放的越久,食物就越tender,但是越不juicy,所以加热2小时到4小时甚至5小时都没事。我试过放一晚上(12小时左右)的牛排,吃起来就感觉里面没什么汁水,然后肉质过于软烂了,比较适合老年人吃 :)

Lamb in box

  1. 从水箱中拿出真空袋,剪开,放在案板上,用厨房纸轻轻擦干表面的水分。
  2. 烤箱预热到400-420华氏度左右
  3. 倒入油,加热铸铁锅,我会一直加热到锅内的油冒烟(可以提前把烟雾警报器拆了或者盖上保鲜膜),然后下羊排煎,各个面都要煎到,煎到颜色满意,一般就几分钟的事,很快

Lamb in cast iron pan

  1. 把铸铁锅直接放到烤箱里,烤5分钟,然后拿出来给羊排翻面,再烤5分钟,然后就可以拿出来吃了。烤的时候你会一直听到烤箱里的油噼里啪啦的声音,非常诱人 :)

结果

下图就是我最满意的烤羊排了,可以看到内部有非常多的汁水,吃起来非常的嫩,铸铁锅的高温也让外部的脂肪焦得正好,有种烤羊肉串的焦香。

当然我还用类似方法做过很多别的东西,比如牛排,鸡翅,土豆泥之类的。

最后再夸一下Sous vide,真的很方便,在这里推荐一个workflow:早上起来腌一下肉,抽真空,丢到水箱里,估计十分钟解决。到了午饭时间,从水箱里取出来,拆出来放铸铁锅里煎一下,依然是十分钟解决,非常方便。如果把腌肉,抽真空这个活动放到前一天的晚上,那就更方便了,早上起床只要把肉放进去加热就行了。

搭配Sous vide买的抽真空机也很有用,平时还可以用来真空存储食物,减少食物腐败。

Anyway,这一套东西应该是我近几年买的最有用的东西之一,能够精确地控制温度,让quality control变得更容易,还可以带来一种自己可以更好地控制自己的生活的美好错觉 :)

Reference

我在Google的前三个月

2020-09-06 00:00:00

我在Google的前三个月

Sep 06, 2020

Noogler hat

距离上一篇文章已经过去半年了,这么久没有写东西,主要是因为上一篇文章消耗了我太多的精力与感情,主要是感觉没什么时间,倒不是说在Google很忙碌,更多的是之前在学校的时候属于自己的时间太少了,所以在毕业之后的这几个月里,我基本都在做一些之前没时间做的事,包括但不限于陪女朋友睡觉发呆做饭玩游戏等等等等。当然还有给自己两年前在瑞典交换时遇到的教授写信,很惭愧,来美国之后的两年里都没有联系过他。其实经常想到他,可是总是很忙碌,也觉得自己没有做成什么事,没什么值得骄傲的东西可以分享给他。他的回信来得很快,我觉得很开心,因为他说他也过得很好。只不过鉴于目前全球疫情的关系,我们一致认为下次我去欧洲或者他来美国的时候,至少也是2021年年底了。

IT Crowd里面有一集,Jen不在办公室,然后Roy和Moss在办公室疯玩,把他们平时想玩却不敢玩的东西全都玩了一遍。都玩完之后,他们就开始觉得无聊,又开始打电话给Jen,问她什么时候回来。我现在的状态就有点像Roy和Moss疯玩结束之后的状态,有点不知道该做什么,这周五一直到下周一都放假,四天的假期,没有什么期待,也没有什么动力工作。突然想到自己还可以写点东西回顾一下这几个月,那么就稍微写点吧。

起始

我在今年六月初加入Google,主要是做一些程序分析的工作,简单来说就是通过分析程序的行为来识别Android平台上的各种恶意软件,然后及时下架这些恶意软件,从而保护用户的设备安全。程序分析算是一个很有用也很热门的研究主题,不过本科生阶段很少会接触这个,主要还是在研究生阶段提到的比较多,所以从事相关工作的人普遍跟学术界有千丝万缕的联系。我们组接近十个人,我应该是其中唯一一个没有拿到PhD学位的人,平时来的实习生也是各个大学里的博士生。所以我来到这个组,觉得自己很幸运,因为比起做业务的组,这里更像是一个做研究的组,基本可以看作是学校的延伸*。不同之处在于这里的资源很丰富,同事们也都很nice,不存在我在学校里遇到的那种push的环境,而且做得也是真正好的产品,不会像学术界一样,大部分时候是为了展示idea而草草做了一个勉强能用or几乎不能用的prototype。

刚进来的时候就是像发现新大陆一样的开心,Google的内网里有太多可看的东西,自制的toolchain,各种奇奇怪怪的badge,还有很nerd的游戏,经常看着看着就一天过去了。我觉得很有趣的一点是,Google内部几乎都是用自己开发的软件,俗称dogfood,然后Google的所有代码都放在同一个仓库里,对所有全职的软件工程师都是可见的,所以当发现某个软件出现了问题,或者文档写得不清楚学不会怎么用的时候,常常可以通过直接查看源代码的方式来解决问题。Google的代码都经过严格的code review,大部分代码读起来也比较轻松,所以有问题,往往自己看会儿代码就解决了。

*: 微软的CTO Kevin Scott也有差不多的观点,他在我们学校某个教授手下读了五年之后直接去了Google,并且没回来参加dissertation,也就是说,他没拿到PhD学位。在一个采访中,记者问他为什么这么做,他说他那时候其实都已经写好相当一部分dissertation了,虽然他不再那么热衷于拿到这个学位了,但是他还是想完成这个PhD。转折就在他去当时的Google工作了一会儿,他发现在Google工作太有趣了,而且那时候Google有很多project要做,他就在那里一边骗自己说自己会完成这个PhD的,一边又继续在Google工作。搞笑的是,在那时候居然有很多个像他一样的只差dissertation就能拿到PhD学位的人放弃了学位。那么,Google为什么能让他安心呆着呢?Kevin说是“You know, the funny thing about Google in the early 2000s, the first time that I was there was very academic in nature. So it was an easy transition to make from grad school to Google. You know, the environment was sort of engineered to be very, you know, familiar in that way.” 接近20年过去了,我认为我在我们组看到的Google,就跟Kevin描述的没什么两样。↩︎

Code Review

说到code review,可以从我的第一个项目开始。我的第一个项目是改内部的程序分析框架,基本上就是给它加一些功能,专业点说就是让call graph更完整的同时,保留灵活性。由于我之前比较熟悉LLVM,内部的框架又设计得很清晰,所以我上手也很快,加了点新pass,改了点现有的pass,问题就解决了。这段时间里code review带给我的印象还是挺深的,在这之前我一直都觉得写代码是一件很私人的事,如果你让我自己在家闷头写代码,然后自己改改,改到满意了再发布出去,我觉得OK;但是如果让我每新写一点代码就要给别人看,这就让当时的我感到有点羞耻,特别是我才刚来不熟悉,很容易写出很傻的代码。我的前几次code review还是比较漫长的,被几个reviewer来回要求改了好几次。不过话说回来,正因为刚来不熟悉,所以code review对我的帮助是极大的,比如reviewer会告诉我这里某个容器已经在某个文件里定义过了,可以直接引用;又或者告诉我这里的代码应该保持跟某个地方的代码保持一致,等等。这样一来二去的,我不得不去读很多相关的代码,这个过程无疑让我更快且有针对性地熟悉了整个code base。在Google大家搞code review是很认真的,基本上除了正确性之外,大家还会提出比如性能,可读性方面的意见,以及新特性的应用,毕竟在Google的各位大多是紧跟技术潮流的 :)

说完了被人review,也可以说一下review别人的经历。前面说到我是组里唯一一个没有拿到PhD学位的人,再加上我又是新来的,那么很明显可以知道我在组里的等级是最低的。等级最低是否就说明没有代码可以review了呢?并不是。我的第二个项目就是和组里一个L5合作的,我的等级是L3,我基本是负责给他的项目加些代码。在我们合作之后,他每次提交代码也是主动发给我review的,我也每次都认真地看他提交的代码,这样一来其实也可以帮助我更快地熟悉他的项目。

在Google,大家还是会努力营造一个平等的氛围的。我一般懒得去看别人的等级,因为看了也没什么帮助,最多满足一下自己的好奇心,大家平等交流就好。再说了,我认为等级代表的,更多的是此人对公司所作出的贡献,而非此人的水平,所以在这里建议大家,不要迷信等级,相信自己。

个人成长

既然说到了我的第二个项目,我就可以再扯点个人成长的东西。详细点说,我的第二个项目是我的manager带着我,跟另一个组交涉,改进我们组的一个产品,而这个产品是由我们组的一个L5负责的。其实我觉得我的manager完全可以让那个L5直接去跟另一个组交涉,因为那个产品的代码全是他写的,他再熟悉不过了,交流起来很方便。等他们都设计完了,然后直接告诉我该干嘛干嘛,让我去写代码就行了。不过我的manager并没有这么做,事实上,这个项目的design doc基本全是我写的,跟另一个组的交涉也基本是manager带着我参加的。所以我基本就是负责搞清楚我们这边的产品的所有细节,然后跟对方讨论设计细节。这对我这个新来的来说不算容易,但是我很开心能够参与设计,这让我觉得我是这个团队的一部分。

不过话说回来,对于我这种自视甚高的人来说,这种难度的project肯定是让我感到很难受的。事实上,有很多次我的内心状态都跟Anakin是一样的:

you-underestimate-my-power

我认为我的能力完全qualify下一个等级,但是在Google快速升级并不是没有那么容易的事。想要升职,最好的办法当然是做一个有impact的项目,这个大家都知道,但是如果没有呢?就像现在刚进来的我一样。我的思路基本就是多要跟组里的人交流,问问有没有什么可以帮忙的,比如我就跟我自己的mentor要了好几个bug/feature request(我上面提到的“第一个项目”其实不算是我真正的第一个项目,只是我向mentor要来的feature request而已,但是因为比较复杂,所以我在这里把他算作我的第一个项目)。

但这很明显只是临时策略,让我来说明一下。升职是需要写一个report的,report是要给管升职的人看的,但是这些人并不知道我平时到底在干嘛,所以我就需要在短短一个report里向他们说明我是能胜任下一个等级工作的人。在我看来,说明的最好方式就是在report里讲故事。这个故事要从我为什么要做这个项目讲起,然后说我为了实现这个项目做了哪些事,在做这些事的过程中我遇到了哪些困难,我是如何解决的,最后这个项目结果如何,有什么影响力,给大家带来了哪些好处。这样一来,管升职的人就能清晰且快速地了解我的工作。回到临时策略的问题,如果我只是长期帮人修bug,实现feature,那我就会面临一个严重的问题,我没法讲故事了。因为我的工作散落四方,我很可能无法将他们串成几个流畅的故事,这样一来别人很难了解我的工作,也就很难量化我的工作数量与质量,很难判断我值不值得升职。乱七八糟的bug修得越多,就越难串成故事,意味着边际效应也就越明显。就算我可以把他们串成一个故事,那这个故事会有说服力吗?我的manager告诉我说,写升职report要从三个方面来写:leadership,impact,以及difficulty,让我们来仔细看看。首先帮别人的项目修bug,我没有leadership,最多是被leadership,不行;剩下的impact和difficulty其实是一回事,我在改的是别人的项目,别人会把有impact或者difficult的部分交给我吗?probably not。

这个临时策略我打算就用在刚进公司的第一阶段,这个阶段也被很多人叫做build trust的阶段,很容易理解,一般来说进组之前,大家谁也不认识我,没人会去看简历上写了什么,大家只想知道这个人来了能不能做出贡献。在这个阶段,多帮人修bug还是很有用的。一方面可以熟悉组里的project,熟悉组里的同事;一方面可以切实的帮助组里,显得很有存在感,具体可以选择领一个相对重要但是是因为组里的人没时间做才搁置的bug。这样几个月下来,大家也就可以对我做出信任or不信任的选择。在这段时间里,我需要思考我自己到底想要做什么样的项目。在这之后,就差不多是时候去主动争取属于我自己的项目了,这时候manager也会比较放心地把一个独立的项目交给我。有了属于自己的项目之后…我还没想好怎么办。

我认为在公司里,能够明确地知道自己想要什么,想好要怎么做,并为此付出适当的努力是很有必要的。付出太少是对人类社会规则的背叛,付出太多则是对无产阶级的背叛 :)

节奏

进Google之前就听说Google内部的节奏很慢,像养老一样,很多人就是rest and vest。进来之后我亲身感受了一下,感觉慢确实是挺慢的,特别是当下这个时间点,大家都是wfh,所以更感觉到慢了。但是慢背后的原因也还算是可以理解的,一方面就是Google本身提倡work-life balance,经常给大家放假,或者搞no meeting week之类的;另一方面就是,为了维护现有复杂系统的质量,很多的讨论确实就是必要的,赶进度只会让系统的质量越来越低,背上越来越多的tech debt。再说了,这些开会讨论的结果都是有记录的,整合之后会写到design doc里。我最近在写的一个design doc,manager对我的期待就是,把具体要改的代码链接都标到文档上去,我找代码的时候,都是精确到具体哪一行的,所以写的过程中,我基本对要改哪些代码也已经心里有数了。写完design doc之后,剩下写代码的过程确实以体力劳动为主。

其实Google的慢,也可以从Google内部系统的体量去解释。当一个系统到了Google这个体量之后,其复杂度是惊人的,平时看起来简单的改动,在这个系统下都显得不那么简单,因为要考虑的东西太多了。这样一个高质量复杂系统的建立与维护,离不开工程师们的悉心呵护。在现实世界里,这是很难得的,因为人总是倾向于把自己的利益放在第一位的,很多人只想快速地把东西搞出来,赚到钱与名声,以后的问题以后再说,大不了跳槽走人。事实上,Google里也有不少人抱怨的,抱怨为什么节奏这么慢,抱怨为什么公司赚钱的业务这么少,抱怨为什么股票涨不上去,但是幸运的是,至少在我眼里,Google还是在以一个比较一致的姿态在往前进的。有天赋的工程师有很多很多,Google也只是招了一小部分进来,但是为什么只有一个Google,我想这也算是一个原因吧。


总的来说,我很喜欢Google,也很喜欢我自己的组,还挺期待等到疫情得到控制的那天,去到办公室写会儿代码,再跟从来没有在线下见到过的同事们吃个饭,聊聊天,然后在硅谷呆一段时间。

(The End)