2021 年终总结
— Summary — 1 min read
记一下 2021 年的流水账吧。
今年主要就是两个事吧,前半年实习然后顺利转正,拿到 offer;后半年入门了 Rust,尝试用 Rust 写一些和前端相关的东西,尝试接触前端深水区。
年初的时候去字节互娱前端架构工程化团队实习,其实去之前一直不知道团队叫什么,只知道是做前端轮子的,我也因为相比业务对轮子更感兴趣才决定去这里,去了之后看到组织结构才知道这样叫比较合适,不过我回学校之前大团队开始对外做一些技术宣传,现在统称”抖音技术团队”。
去的前几周都在看代码,熟悉工作,做一些很简单的 feature,周围同事都在忙抖音的春节红包活动(就是当时春晚的抖音红包),没时间管我,而我看了一遍代码就很着急的要需求做,现在看来太年轻了,明明是一段很好的摸鱼时间,根本不需要急年前的几天,后面有的是时间写需求。
然后就是过年了,女朋友回家了,我因为疫情没有回去,跟 bks、hzh 留京过年,也一起出来玩了一两天。年后就是断断续续实习回学校,因为报道和考试回了两次学校,之间也做了一些小需求,虽然比较小但是还是有点麻烦的那种,收获比较多的就是 prerender 和 webpack 插件相关的知识,不过自那之后我就再也不想写 webpack 插件了,相比之下 esbuild、rollup 的插件设计和文档真的好太多。后来 mentor 让我开始准备做个大一点的需求,答辩的时候用,当时在修跨端 bundle 的一个 bug,就打算参考 rax-miniapp 的构建配合 esbuild 来重写一下我们的跨端构建模块,以便更合理的解决一些问题,不过还没开始做就因为考试回学校了……
考完试回来之后发现隔壁组为跨端写了个新的编译器,虽然目的是语法方面而不是打包方面,但因为更轻量更合理所以顺带解决了打包的很多问题,同时他们也在开发的初期,于是我的答辩设计也就继续推迟了。这段时间开始跟着做跨端构建的一个管理平台,开始写熟悉的 React,现在回顾起来体验并不好,需求靠口述,前后端仓库分开,同时又用了 TS,经常一个接口写两遍,也没有在 build 的时候开 tsc 的 type check 导致类型混乱 any 乱飞,总之当时明明可以提出来改进的,却一直憋着没说,可能当时也不知道哪里出了问题,该怎么改进吧,希望以后可以勇敢提出问题并解决。
后来新编译器比较稳定了,我们开始做构建方面的支持,mentor 跟其他团队做 esbuild 版的新构建底层,我则是迭代 webpack 版接入新编译器为业务团队提供一个“尝鲜版”,这段时间还是比较轻松的,同时也接了很多 on-call,维护旧版 web 构建工具,可能学最多的就是这些 debug 技巧吧。最后 8 月初转正答辩,也顺利通过了,最后拿到了 offer,后来开奖比预期的低了点但也比较满意了,回顾下来实习期间还是成长很快的。
8 月初也面过了 shopee,听说那里钱多活少比较轻松,就有试试的想法,但最终开奖远低于预期就拒绝了。8 月中旬,回家待了两周,周围朋友都在考研也就没有打扰。然后开始重拾 Rust,到年底终于感觉自己对 Rust 有些开窍了,在家的两周看了 joehoo 的《crust of rust》,用 Rust 实现了《Ray Tracing in One Weekend》,可以说没有 joehoo 我就学不会 Rust,他的新书我也已经入手了准备后面看。
9 月回学校后就继续学 Rust,看了看 Deno 源码也帮忙修了一两个 issue,写了篇文章,也开通了自己的公众号并发布在上面,不过后面觉得 Deno 的路还太远,对我收益并不高,也可能是我不够坚持,就没怎么在看 Deno 了,不过这回看 Deno 了解了些 JS Runtime 相关的东西,我对此兴趣还是很大的,因为很久之前就想做一个自己的跨端轮子,而 JS Runtime 也算其中需要用到的一部分。
后来尝试使用 QuickJS 和 Tokio 写一个 JS Runtime,但逐渐深陷 QuickJS 的 Rust FFI Binding 的大坑中,经常花一两天在修 bug 上面,最后终于耗不住决定停一段时间,在深入了解 JS engine 和 QuickJS 之后再回来填坑。后来开始看 engine262 的源码,尝试用 Rust 抄一个,写完 lexer 大部分功能后开始接触 parser,哈哈,看完《es how to》和 v8 的《Understanding ECMAScript spec》后才知道这又是个大坑,决定直接用 SWC 的 AST,写完解释器后再回来填坑,不过写了一阵又发现解释器也有很多难点,engine262 因为用 JS 实现所以一些困难又不影响理解代码的部分直接调用原生 JS 来实现的,导致 Rust 写很麻烦,总之还是打算停一段时间。回顾这段时间做的就是不断给自己挖坑弃坑,但过程中写的代码学习的资料还是让我收获很多的,我对 Rust 开窍也多亏了这段时间的实践。
年底这几天开始看《crafting interpreters》的字节码部分,使用 Rust 实现,之前很多相关的盲区不懂现在明白了还是很开心的。
去年追了些综艺和动漫之后今年开始看韩剧了,很喜欢悬疑类的韩剧,这一类韩剧拍的真的好看,经常越看越怕但是越想看,今年综艺感觉没什么感兴趣的,动漫也只是追一些续集,美剧感觉越来越剧荒了。
今年除了认识了工作中的同事,也认识了优秀的学弟,技术上很厉害,平时也比较聊得来,年底也成功内推到了我们组实习。
今年国庆放假开通了公众号,准备发一些技术类的文章在上面,顺便能有些名气的积累,以后可以多点选择,但是一直比较懒,只发了一篇文章。去年一共写了 9 篇文章在博客上,可能只是看看一些库的原理所以并不太深入,内容比较好写,今年总是想写一些更加深入的文章,但又眼高手低,一些在挖坑弃坑的路上,也没时间把学到的一些写出来,还是功力不太够吧。希望明年可以别再眼太高,多写几篇文章,有的学习笔记也会整理下发出来。
2021 年还是很满意的。上半年实习期间和女朋友在一起是上大学以来过得最开心的一段时间,每天没有太多的烦恼,有足够的实习工资,有女朋友陪伴,还有生活中的小事,相比之下下半年寝室生活如同坐牢,每天去找女朋友写 Rust 是为数不多的快乐。希望 2022 过完年去实习和毕业工作后生活可以回到那种无忧无虑的开心状态……