经历

入职

  • 淘天在 2025 年 4 月 2 日中午发了意向书,意向书的时效非常紧凑(4 月 5 日及之前需要确认)。当时 4 月 3 日米哈游才进行到 HR 面(面完之后还是非常有把握的),但考虑到:1. 短期实习选游戏公司颇有种把路走死的感觉、2. 听闻米哈游的暑期实习是做一个小项目,感觉提升有限、3. 还是想看看互联网大厂内部情况,于是踩着 DDL 签了淘天的意向书。签完之后还心情很轻松地去混了美团的一面(虽然基本不对口,秒挂);还收获了一封我拒米哈游的邮件。确认 offer 之后,就来到了入职阿里不得不品的起花名时间。在花名页面试了一下午都没找到很中意的名字,最后选了「风谨」这个山寨版风堇。
  • 敲定的正式入职时间是 5 月 12 日,在五一之前爆肝 2 周,把 RustGit 和 MiniJava 解释器两个课程项目肝完了(MiniJava 解释器之后还布置了一个 OJ 和一个报告,不得已只能抽周末时间糊一下,并没有做到满分)。5 月 11 号下午想进园区看看,被保安通知不允许,必须等到入职之后才能进去。入职当天(唯一吃了早饭的一天)到 A5 访客中心九华山庄接受统一培训(其实就是装阿里郎、阿里钉两件套),强调了一下数据安全,带去 A4 信息服务台领完办公电脑之后就各回各家(工位)了。
  • 到工位后跟师兄和老板打了个招呼(此时我才知道老板是一面面试官),下午拉去小隔间对了一下工作内容和沟通频率,至此就算正式入职。

工作

  • 看得出来这里给实习生的任务都是某种意义上的“支线任务”:我是「AI驱动的网络优化」,隔壁卡兹是「QAT硬件压缩优化适配」;另外组的两个分别是:「ACCS for Windows 性能测试」和「XNet 移动端 Benchmark 开发」。这些任务基本源于:1. 老板的奇思妙想、2. 之前有过一些尝试但没有后文的项目、3. 已经明确了大体技术路线的必做任务。简而言之就是:做砸了也不会对组里产生过大影响的活。
  • 第一、二周 landing 期师兄给了一份论文列表,基本都是 AI4CC 近期的热门文章;另外熟悉了一下 XQUIC 的整体架构和 CC 相关部分的设计和实现。由于开发机都是阿里内部的 ALinux,复现论文的时候一直在各种地方和自研发行版互搏:改 kernel 的 Linux Devel Header 要手改;包管理非常混乱,npm 包甚至要从一个看上去是二十年前的 npm 查找网页里下载;机器是部署在云上的 ECS,改 kernel 会面临莫大的困难…… 往好了说是极大增加了对 Linux 的理解和对改 kernel 的经验。
  • 第三、四周是写代码最多的时期,从无到有把整个 XQUIC CCS Framework, CCS Server 和 Qwen Model 搭起来了。每天都能列出一份清晰的 TODO,成就感还是比较强的(果然还是更喜欢做工程相关的工作)
  • 往后就陷入了一种循环的折磨中:收集数据、跑实验、效果不好、分析问题、重来;迭代了四五版最后才在实验环境中有一些起色。最开始看 Antelope 和 Floo,感觉他们的设计过于简陋,并且在一些地方存在冗余。但在亲身跑完之后,我可以肯定他们确实也踩过和我一样的坑,才会做出那些看起来很奇怪的设计,只不过没有在文章中明说。加之我本身对 CC 和 RL 都没有什么经验,这一路确实踩了非常多的坑;不过也算是学到了很多领域内的知识。
  • 师兄是计算所毕业的博士,同期组里还有另一个计算所同组的在读博士的课题与我类似。这两位师兄确实能够在思路设计和实现方案上给到不小的帮助(主要是思路设计),有一些新想法之后先简单论证并尝试后,去和师兄沟通讨论一下可以有效避免自己跑偏。老板在阿里十三年,技术方面确实过硬,但对 CC 的具体细节也不太清楚;主要能够在项目方向和业务层面提供指导,不让项目脱离实际。至于工程能力我还算过关,没在具体实现和架构设计上让师兄、老板操过心。
  • 有关具体工作内容的感想,另开一篇谈谈吧,这篇就不涉及了。

氛围

  • 工作氛围这个事儿不同组之间相去甚远;甚至同一个 BU 下的不同小老板都性格迥异,不能一概而论。淘天作为阿里的核心部门不愁钱,整体氛围比较轻松(没有隔壁钉钉那么卷);作为淘天中台的终端平台更算得上“养生”:早上十点半到岗、午休两小时、晚休一小时,晚上正常九点下班(实习生可以提前一点跑路);实际算下来每天的工作时间在 7 小时左右。几个实习生基本早上 10 点就会到工位,这时候那一片基本只有巴格老师到,其他工位全空着。
  • 大致看了下 Code 平台的仓库提交记录,正职的码量基本在平均每天 400 行左右;也有一些比较多的(办公室敲青轴的时寐)在 600 行上下。而且由于大多数新代码是 IETF 规范和各种论文的“转译”,配合严格的代码规范要求,实际心智负担不算太高。反倒是代码量比较低的人(曉陽、无宸)还需要负责技术研发,心智负担比较重。
  • 另外,阿里的实习生权限按的是真的死:ATA 没权限、文档没权限、公司制度没权限……跟实习生的一切都是白名单管理,查任何文档都要钉文档作者,除此之外所有操作都需要主管批准。

生活

  • 实习生(尤其是我这种不会转正的)生活还是比较悠闲的,每天早上九点半起,晚上最迟九点半回家。除了最开始那个月需要兼顾学校里的课程项目,其余时间都可以自由支配;周末更是可以满杭州跑(不过精力也就只够跑一天,要匀一天出来在家休息)。在此期间暂时学会了自己做点饭,效果还可以。

经验

生活

  • 排计划别排太满,留出一些时间用于临时起意和自我修复。
  • 不打扰人的邻居就是好邻居,不要求他们的作息、生活习惯(垃圾放门口/过道)等等能完美符合;拉一个微信群沟通。

工作

  • 跟一个好的项目,比提升自身水平更重要;跟一个好的老板,比跟一个好的项目更重要。
  • 工作要留痕,即使没有和老板频繁的周会。定期把 TODO 和已做整理成个人报表保存。
  • 不要对互联网的薪资预期过高,年包 50w 已经是比较高的水平了。
  • 不要对同事的水平预期过高,很多人对语言和系统的理解极其浅薄。
  • 不要对老板的能力预期过高,老板有时候也拿不准;在战略上服从老板安排,在战术上不要盲信老板的方案。只要结果好,技术路线不那么重要。

科研

  • 不要用战术上的勤奋,去掩盖战略上的懒惰
  • 在工程层面,向后留好扩展性(考虑地全面一些);在算法层面,向前做好兼容性(只考虑当前需求)。
  • 做好版本管理。当对代码进行修改时,一定要留一个能跑的最小数据集和 Readme 一起塞到 git 里。
  • 一定,一定,一定要先想好故事,想好要解决的问题的具体场景;弄明白场景中你能获得的信息边界,再去设计解决方案。
  • 对于一个系统,先小规模验证,不要求最开始能完善到发 paper;先通过有限的环境证明他能够在我设定的有偏好环境中 work,再尝试推广到所有环境。
  • 对于一个新 idea,大概率别人也想到了;多想想别人为什么没用(解决的并不是主要问题?效果不好?不利于讲故事?)、或者别人怎么绕开了这个问题。
  • 对于一些看上去就很强行的补丁,想想有没有更优雅的方式能实现?能不能抽象成更高层次的方案和已有方案融合?以及,这个补丁和工作的初衷是否违背?
  • 在观摩其他工作时,不要觉得他们的工作非常简单:看似简单的技术路线背后一定是无数个大坑,如果看不出来他们如何优雅地绕开了坑,就不得不自己亲身踩一遍;也不要觉得他们的工作非常完善:一笔带过(篇幅不超过半栏)的设计大概率他们自己也没底,要谨慎对待这种薛定谔的优化点。
  • 在做系统方面的工作时,先对整个系统有一个大致的了解。而后挑选一个具体的指标,彻底搞懂所有与这个指标相关的全链路信息,找准瓶颈在哪里。找对了瓶颈就完成了一半的工作。