八月的尾巴和 Cloudflare 实习

2021-08-29

好久没有写博客,这个夏天比想象中更忙, 刚刚翻到年初三月的那个篇,感觉能记录下当时那个状态还挺难得的,便打开了 Notion,在开学前一天,坐在 Carnegie Museum Cafe 开始打字。(Common Place 的拿铁挺不错的)

我比朋友们实习开始的晚两周,所以这个周五才结束。虽说工作这么久,但实话说像这个夏天的实习经历,我是第一次,而实习和全职还是稍微有些许区别。理论上好的实习,公司层面来说,让 intern buy in 他们的文化肯定是目标之一(任何公司或者团队都有自己的文化,要相信自己的主观感受),这可以最大程度争取实习生能 return。全职的话,大家的选择就更加的短平快,双方只能从对方给外界看到的信息,如 public announcements, product, dev blogs 等等去盲人摸象,最好的情况也只能听一听认识的人的二手信息,猎头加工过的三手信息等等。只要双方没有触碰到各自的 red flag,接着 package 就变成了选择中的重中之重了。Big name 和 big package 当然很好,但有时 current optimal 不一定是 long-term optimal。

实习的这三个月里,就是双向选择的过程,犹如三个月的 dating,双方都没有 long-term commitment 的压力,那就可以更加轻松的,置身事外的去评判,想象这段 dating 变成了一段 relationship 之后会怎么样。当然两种方式都各有千秋,但在业界没有那么多靠谱的信息来源时,实习真的是不能再好的机会,去了解未来可能会花你人生中三五年,甚至更长的这位 “partner” 了。这是我本科时期所缺失的,所以现在重新看感觉更加有意义。

而 daily work 方面就非常看组,一个 well-defined 的项目就非常重要了,在项目推进过程中肯定有各种各样的问题,这就是实际能反应出双方是否合拍的过程,公司来看就是你个人的能力,我们角度看就是组里的,跨组的甚至公司层面的 support system。其实这种 support system, mentorship,是不管大小公司,多大的团队都应该我们选择过程中非常重要的一个因素。以前呆过几十人,几百人到一千多人的创业公司,自己也一起做过十人左右的创业,感觉工作最开心,同事最合拍,反馈最正面的时候,还是那个几十人的团队,极大得益于当时的 CTO,那时的同事在各自分散到世界各地之后变成了非常要好的朋友。当然我那段经历是抽彩票般巧合难得的,因为这和 leader 和创始人直接相关,如果核心的人没有这个“特质”,除非花极大力气去培养或者纠正(比如 Uber 换 CEO),不然很多所谓的 support 只是流于表面不走心的。还是类比 relationship,如果对方没有让你感受到 supportive,而是一个只会索取,不会聆听,处处限制的 partner,在感情中你感受到的是 PUA,在工作中就会质疑自己的价值,感受到资本带来的异化。

从这些方面来看,在 Cloudflare 的三个月,真的让人非常舒服。透明是 Cloudflare 文化中非常重要的一点,和展现在公司 Blog 上的一样,从很早之前所有的 incidents 都有详尽的报告,所以才被人戏称 "Cloudflare is a blog company that happens to have CDN, DNS and other services"。基本上所有组的所有项目都在 wiki 能看到,所有 codebase 都能 access 到,onboarding 时一周的 orientation 两位 co-founder 会从产品到客户角度耐心解释 Cloudflare 以前是什么,现在是什么,未来可能是什么,产品逻辑自洽,商业逻辑合理。每每听完都想到两年前的创业,当一个产品连自己都说服不了,做完了才拼命去找 use cases,数落VC和客户,实在是错得离谱。有个小细节十分佩服,内部每周有一个全公司的 casual meeting,有几个 talk 讲一些主要的项目或者技术架构的进展,一般这个会议会邀请一些面试走到最后一轮,或者拿了offer在犹豫的人一起参加,同时向全公司介绍,挺有趣的。

十分幸运,我在组内的 mentor 非常的靠谱,在 onboard 后两三周,我们以几乎每天半小时的频率 sync,从基础网络知识展开到 Cloudflare 的架构,从产品使用到实现细节,虽然我作为一个 Cloudflare 5年的老用户,但其实接触到的东西真的是冰山一角,当牵扯到企业级用户的时候,复杂度完全不是一个量级(同时这个 contract 的价值也相差了几个量级),他非常耐心细致的解释,为什么会有我这个项目,以及它实现时候会带来多少 impact。

就项目本身,实话说难度不大,技术栈也是我之前用得比较顺手的,更多的需要考虑是产品的易用性,和外部 message queue 的沟通以及长期的 maintainability,从 system design 入手我把新 feature 设计的比较复杂,design review 同事们帮我简化了很多。后面的实现按部就班,大概3到4周就完成了。不过在测试的时候才发现,因为 message size 被其他团队的一个服务 block 住了。这时候我刚好在纽约办公室工作,然后纽约的一周变成了整个实习最 stressing 的一周,一直不断的拉着人跨组开会,讨论解决方案,这时候我们组的同事就给了非常大的 support,记忆犹新。最后另一个组表示这个 feature 非常不错但是他们 fully packed,我可以尝试自己开发。因为实在不想把东西做了一半扔别人烂摊子(从前接手过太多烂摊子),然后回到匹兹堡的最后两周我都在给另一个组开发新 feature 来 unblock myself。好在赶在最后一周的周四完成了开发和测试,然后周四晚上写自己的 integration,最后一天完成了 end to end test,有惊无险,基本上完成了整个项目。

我也发现了我在新工作环境下的一些不足,主要在沟通方面。虽然之前在香港的 team 也主要靠英文交流,但感觉在沟通上有非常大的区别,比如在一个 meeting 上什么时候和怎样去 take the lead,如何客观的去解释一个问题而不带太多个人情绪,比如如何比较体面的说出边界,这在后期我跨组沟通和帮别人组去做新功能时给我挺大困扰,好在大家都非常 nice。

其次就是对 appreciation 的表达,就像最后给我办的一个 virtual goodbye lunch,大家聊天吃饭,最后的五分钟大家对我表达很多认可与感谢,我最后一句 Thank you 之后却像茶壶倒饺子一般,讲不出感谢。而这种机会和场合又稍纵即逝,视觉想象一下,金马奖颁奖舞台上给你的聚光灯也就那么两分钟,一句 Thank you 可是太不走心了,而整个组的注意力和聚光灯一样,也只有那么几个场合的几分钟会集中个体身上。同时,这其实和语言障碍没有多大关系,放在中文语境下,我们也习惯性的对感谢之词难以表达,甚至抵触,表达自己和暴露自己情绪是很不自在的。

中文语境下大家对文字表达的依赖程度比言语表达更重,平常的人际关系或者工作环境都可以举出很多例子,大家习惯于书信表达出难以启齿的情感,公司的道歉声明似乎基本上都是书面的,而非所谓大佬们出来对着镜头开新闻发布会。书面文字,似乎能情感表达合理化,或者把一些可能的冲突降级,但少的就是人与人之间的连接和有来有往的交流。

其实真正坐下来,想到这三个月的感激,不胜枚举。Rohin 的 mentorship 是实打实的时间;Tom 作为 Tech Lead 给我的每次 code review 都非常认真,而我的 progress 他都非常热心的去各个 team 宣传;Dimitris 同时管几个 team 还基本上每周一次 1 on 1,虽然每天 schedule 被会议排满,但聊到技术细节又了如指掌同时能提醒要注意的点,后期帮忙在跨组的功能上帮我争取足够的 support;产品经理 Ben 非常专业,虽然项目不大,但在可以有妥协的地方和 must have 的地方划分的非常清楚,同时解释背后的逻辑,没有 back and forth。Team 里有足够但又不过量的压力,同时非常 supportive 和给予足够的 credits,基本达到了我对一个好的组所有想象。

所以,下次再有机会,我肯定会把这些感激表达出去,不是因为功利,而是我真的想当着他们的面,说出这些 appreciation,不能 take them as granted,因为很难得。

好在,如果签证顺利,明年应该可以回去,在伦敦办公室再见。I'll see you on next journey.