# Year of 2023

又到了一年的年终，相比于去年以及前年一成不变的上班，当助教，上论坛鉴证的循环而言，今年做的改变明显多了不少。也选择了自己以后生活的城市，第一家正式工作的公司，以及后续的工作方向。可能今年的故事比较值得记录一下。

### 春天：从飞书到阿里云

从研究生开学的第一周，我就二进宫飞书开始实习了。

在大三的暑期，我就去过飞书的 iOS 部门做研发，用 Swift + UIKit 这一套技术栈去写飞书的界面。当时正好赶上飞书整个部门做什么品质优化项目，所以我实习的主要内容就是处理 UI 上的布局问题。具体来说，每天的工作就是对着一堆测试报上来的错误报告，在 iOS 模拟器上调出来对应的界面，之后打开 XCode 做调试，看这里这么写可以规避掉这个布局问题。在修改掉布局问题后，把代码丢到 Gerrit 上，把链接丢给当时的 mentor，等着他 review 通过。期间也做过一些简单的需求，其中印象最深刻，深刻到直到今天还是忘不了的就是我当时接到的第一个需求。当时给提需求的应该也是一个新人，她给提的第一个需求是，“把加群选择好友时展示已选择好友头像列表的那个栏的高度改成和微信的一致”。当时被拉到群里，听说这个需求后，有种面对王司徒的诸葛亮的感觉，就差没说「我原以为你身为汉朝老臣，来到阵前，面对两军将士。必有高论，没想到竟说出如此...」。总之就有点幻灭，大伙互相抄都这么明目张胆的吗？不过后来文档什么的翻多了，也就习惯了，大伙都是来打工的，高兴就好。总之在那个暑假，我就天天写这些没营养的东西，最后一段时间就每天解决一个布局问题，下午三点多就下班开摆。如此撑到了当年的七月下旬，当时的 mentor 通知可以转正了，但是我觉得这地方干起来多少有点没意思，就放弃了转正名额，回学校考研去了。

本科毕业后，研究生开学前，我觉得既然我的导师是那种给学生足够自由度的类型，我就应该早点去找个厂打工去。当时和一些同学说了这个想法，就有人给我推荐了他当时实习的飞书 Rust SDK 部门。我寻思着写 Rust 可太炫酷了，就走了内推，过了两周就面试通过入职了。在飞书这一年半，我做的工作内容还是挺丰富的。从维护 SDK 的打点逻辑，到写一些现在已经「不能说」的协议，再到数据库层的重构和优化，期间还参与解决了一堆 Crash 问题。说实话，直到我年后第一天回到线下上班，拿到去年的 Spot Bonus 奖杯时，我预期的都是考虑暑期后拿一个转正，在这边继续干下去，因为我能感觉到这边的大多数同事对于我的工作能力还是比较认可的，我也开始逐渐负责一些代码模块的 Review 工作了。

但是问题就出现在这个「大多数」，实际上我是能够感觉到有人对我是不认可的。比如说在那个「不能说」的项目收尾，Lark iOS 的 leader 在对上汇报的总结与复盘文档中，**直接把我列成了项目后续的风险之一**。我记得文档里写了两点，说我作为一介实习生，其一水平可能不足以维护这块的逻辑，其一流动性可能太强，随时都有可能离职。再之后，这个协议果然出问题了，把某位大佬的消息给弄丢了几条。虽然最后定位代码，明确地给出了问题的根因是隔壁部门做全局的改动时没有做任何知会，把我们负责注册密钥的 Future 给直接干掉了，导致出了问题。但是 Lark iOS（哦现在似乎是 Lark Mobile 了）那位 leader 依然认为这个问题责任在我。还在饭点无视非工作时间，没有任何是否空闲的询问的情况下，直接拉会，拉会上来就很暴怒地喷我的水平。最后要求我一个写 Rust 的，任何对于那个「不能说」功能 SDK 层的改动，「那怕是一行代码」，都需要他一个 Lark iOS 的 leader 来 Review。直到现在，我依然认为这一行为是基于我实习生的身份，**对我个人技术能力的歧视**。我在最后的复盘文档里也总结了归因，但是没人给一个结论，也就没什么好说的了。如前面所说，实习生打工嘛，图一个高兴就好。但是现在这个情况能够明显看出来说，有人不想我高兴，且在可预期的未来这人都能够随时随便找点理由让我不够高兴。我对于在飞书的工作，最喜欢的也就是那段时间工作上的自由性，在处理完手头上的需求后可以上任何自己想上的优化，但是现在这点自由度也开始有人试图限制。我开始觉得在这地方工作，可能没有之前表现的那样有意思。

俗话说得好啊，「良禽择木而栖」，虽不敢自比良禽，但是我过的不舒服时也知道要找找能让自己过得舒服的地方。被喷第二天我就借着搞毕设，打算离职跑路了。不过当时被劝了下来，改为请了两周的长假。这大约是我二进宫飞书以来，最长久的悠闲时间，虽说也时不时有人找我事。当时白天就躺在宿舍，躺够了起床研究研究毕设的框架，还去了趟沙河给导师的服务器加了 8T 的硬盘，当天黄沙漫天，是我记忆中的沙邮。在宿舍躺到假期的倒数第二天，我有了个念头，打算去搞系统虚拟化，当天晚上看了下手上存的相关综述，越看越觉得这东西挺有意思。第二天起床就在论坛里找了在阿里云神龙虚拟化团队工作的学长发的内推帖，投了简历。投简历后大约两周内，走完了所有的面试流程，每一轮问的基本上都是简历上的内容以及与 OS 相关的基础问题。再等到 4 月底，发了正式的实习 Offer。收到 Offer 后的第二天我请了一天的假，去了天津的海边，在海边走了一下午，纠结一下午，最后得出了结论。第二天上班后，和 leader 提了离职，并在劳动节前三天交还了工牌，走出了学清工区。巧的是 3 年前我也是在这天入职 Lark iOS 的，当时的 leader 就是喷我那个 leader。

说实话，我认为我曾经在的部门，乃至于整个上级部门 Lark Infra 都是非常不错的部门。无论是技术能力还是工作内容，甚至于氛围和作息时间在整个字节都应该算是名列前茅的。我也很感谢飞书，在这里我学到了很多工作相关但是与技术无关的经验。但最后还是决定跑了，大约可能是更看重自己内心感受一点。当然如果作为正式工的话这点小事根本不至于跑路的，正式工拿的那么多工资里面多少有一部分是作为精神损失费，或者说「窝囊费」的。现在想来，最后悔的还是当时对这件事反馈的还不够激烈，否则也不至于现在写起来这点事时多少还是有点生气。

### 夏天：从零开始的虚拟化工程师

虽说春天说自己想搞虚拟化研发，而且靠着还没忘掉的操作系统+处理器组成原理功底，把自己送进了阿里云。但是我实际上是没有任何相关开发经验的，只读了本 _Hardware and Software Support for Virtualization_ 就去杭州上马开干了，多少是有点迷茫的。

入职阿里云后的工作氛围什么的其实和字节差不多，就是阿里云的内部效率工具相比于字节看起来提升空间还是比较大的，没有字节那种基于飞书的协作体验，文档的权限管控也相对严格很多。进去第一周的工作就是看文档，看内部课程，大概了解整套软硬件架构，顺便解决一两个小问题。我在飞书干的最多的就是在一大堆屎山中快速排查 BUG 的活计，所以多少算是得心应手。第二周开始，花了大概两周时间解决了一个热插拔上的疑难问题，为了定位这问题我从 Guest Kernel 一路查到 QEMU 再追查到 KVM 内部，最终得出结论是我们模拟的设备出了点小问题，同时 UEFI 固件自身的逻辑又帮我们掩盖了这个问题，修复起来倒是简单，定位起来是真的难。通过对这个问题的定位和修复，我基本上了解了神龙这套东西的交互逻辑以及 Linux 内核的 Trace 方案，顺便学了一点 PCIe 热插拔的流程以及相关硬件规范。再之后就是做了一点不算小的 feature，搞了一些黑魔法来实现对边 x86 那边的高可用方案，修一些从 Guest 跨到 QEMU 的奇妙 BUG。在做 feature 的时候，发现社区的 perf 在 ARM 上的实现有一点小问题，于是提了人生中第一个对内核的 [PATCH](https://lkml.kernel.org/stable/20230809103643.673268041@linuxfoundation.org/)，也算是完成了一个心愿。走之前最后的工作是对于 ARM 虚拟化性能损耗的评估，拿裸金属机器和虚拟机跑了快两周也没看到太多明显的性能问题，甚至有些情况下虚拟机的性能甚至是好过物理机的。唯一一个可以解释的性能损耗还是虚拟化实现的硬件导致的，完全没有优化空间。这个问题最后也就作罢了。之后就是答辩，答辩完离职回学校，在走前的周末还去法喜寺买了几盒月饼送人。

我觉得在阿里云做的工作其实和在飞书做的客户端工作差不多，无非是一个跑在用户的机器上，一个跑在我们自己的机器上。需要考虑的都是性能，代码可读性，业务逻辑可观测性这些东西。不过作为内核态的软件，挂掉了其实也挺难去观测，只有一个 dmesg 能够看看，在某些极端的情况下甚至日志都没有，分析全靠猜。或许后面应该想一想有什么方案，能够优化一下这个问题。

### 秋天：又双叒叕是史上最难就业季？

似乎从我上知乎的 2013 年起，每年秋招就都有新闻说今年是史上最难就业季了。但是从我回学校参加秋招动员会导员列出来的近几年数据来看，去年开始互联网就业突然就非常不行了，去年总体上能看主要还是因为有国企撑着。今年国企肯定不会像去年一样大扩招，所以今年大概是真的史上最难就业季。当然随着经济形势一年年烂下去，这个史上最难就业季也会一年年刷新下去。

今年秋招，根据我飞书文档上的记载，我投递了 50 次简历，最后收获了 4 个 Offer。其余的要么是我在约面试时主动拒掉了，要么是简历都不给我回复的。其中最气人的是字节，我面了两次都是到三面结束后卡一个月，最后告诉我排序挂了，就这样子年底还有脸打电话问我要不要接着面其他部门，面你🐎。还有一些公司在秋招时直接把我简历挂掉，年底开始发邮件告诉我被捞起来了。这种应该是在秋招开始时过于高估自己公司的水平，导致最后被人大规模放鸽子的。前倨而后恭，思之令人发笑。

总而言之，最后拿到了 4 个 Offer，分别是：

| 公司 | 方向 | 城市 |
| --- | --- | --- |
| 阿里云 | 虚拟化 | 杭州 |
| 猿辅导 | 客户端 | 北京 |
| 腾讯云 | 数据库 | 成都 |
| 腾讯云 | 虚拟化 | 深圳 |

最终我选择了阿里云的岗位，主要是出于以下几点考虑：

- 城市上，虽然我对于城市选择上没有太多的偏好，但是我希望选择一个生活成本相对低一些的城市，这样可以相对活的更加舒适一些。相比于北京和深圳而言，杭州的生活成本要低很多，我也很喜欢暑期实习时没事就去西湖边上转转的感觉。北京的话我之前花了好几千租了个被拆成 8 套的群租房，住的很不舒服，而且北京房价高到天上去，留下来对于普通人来说已经几近于不可能。深圳的话我在拿到深圳 Offer 的当天去了两天，感觉深圳的生活成本和北京差不多，但是深圳的房价更高，而且深圳的气候我不太喜欢，过于潮湿，南山区的道路看起来也破烂如四线城市，也就放弃了深圳的 Offer。

- 方向上，我更想去做虚拟化。客户端虽然是我干了两年半的老本行，但是我觉得客户端的工作内容其实比较单一，且上限有限 —— 从前端不断蚕食客户端的份额就能看出来这工作有多不讨好。数据库的话，我只能是会做，但不是很想去做。我更想去做一些贴近硬件的工作。

- 公司业务上，我觉得阿里云的业务更有挑战性一些。猿辅导的话，教培作为一个已经被 A4 二向箔打击过的行业，发展空间很明显的有限，激进点来说的话，未来难保不会再来一张 A4 纸，直接把整个教培行业扫进垃圾堆，到时候我就只能喝西北风当明光村遛鸟人去喽。腾讯云的话，与阿里相比，腾讯云更多的像是服务于自身内部业务的定位。腾讯的话看起来有不少收入来自于游戏业务，而游戏和教培一样，也被监管部门视为不务正业 —— 果然前两天版署一发癫市值一下午就没了 1/5。腾讯云作为成本部门说不定来年还要接着裁。阿里云虽说曾经因为马云的一些言论被连带整过，对国企政府的业务也没有华为云做的那么漂亮，甚至裁员裁到出大事故，但我觉得一份文件搞死这么大一个公有云还挺难的。就算退一万步阿里云连带着国内所有的云业务哪天真被一拳砸死了，相信靠着做内核和虚拟化的一些技术经验，大不了想办法找个海外的工作，也不至于没饭吃。

总之，我认为阿里云目前来看是我手上最佳的选择，所以我就选择了阿里云。在签完三方后，我就收拾回家，开始享受人生中最后一个寒假。

### 冬天：糊弄毕设，回家过年

到现在为止，研究生生涯里面剩下的应该只有答辩准备毕业了。论文也写了一大半，回家后也没有什么事可做。打算最近报一个班去考考驾照，毕竟如果不在北京工作之后，买车不再是一件遥不可及的事情。我其实很中意特斯拉那一款 Cybertruck，很有未来感，但是不确定这车国内是否会按照 MPV 来引进，要是按照皮卡来引进就没得买了，这个买不到到时候有钱了就看看 Model Y，也挺好。

还有就是考虑下明年春天要不要去阿里云提前实习，赚点零花钱毕业出去旅游时用。不过现在手上的差不多也够就是了。

### 2024 年

终于是要毕业，开始独自讨生活了，希望生活能够善待我。

本来离职飞书时说要去一趟日本来着，结果时间什么的没有对齐，一直也没去上，明年一定要在毕业前去一趟，为此可能得学点日语了。总不能去了日本还搁那和人说英文吧。

还有就是单了这么久，偶尔其实也会希望有个人陪，不过我这过于内向的性格估计难了，或许应该改变一点。

最后就是体重应该研究研究了，这东西降下来说不定也还能额外多活几年。我甚至已经没法想象小学低年级还很瘦时是怎么到处翻墙爬树的了 :(。

最后分享最近比较喜欢的一首歌，伍佰《美丽新世界》。希望大家都能在各自选择的路上越走越远，越来越好。

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=157118&auto=1&height=66"></iframe>


<p align="right">—— 2023 年平安夜于吉林</p>
