那么多五公里都跑过来了,写个代码能有多难?
这个念头支撑了我整整一年。
我或许算是一个典型的“被现实打败”的人。当初选择学物理是为了圆自己的“天文学家”梦。但是大一的悲惨经历让我明白自己根本就不是搞研究的料,也学不明白物理。于是退伍前我就打定主意:我要赚钱。什么工作工资高?哦,计算机,那我就去学计算机。
那时我想了两条路,一是直接转到计算机学院,二是跨专业读计算机的研究生。但因为我大一成绩实在太差,即使有退役军人的政策加持,也不足以让我拿到学院的转出资格。更何况计算机还是热门转入专业,这让我本不富裕的绩点雪上加霜。所以只能选择后者。
说到读研,对于物理学院来说其实不是非常难的事。一是很多排名靠前的同学都会选择出国,二是基础理科的保研率会相对比较高。所以只要成绩进入学院前30%,基本都会有保研的机会。所以我要做的第一件事,就是把原来惨淡的成绩拉上去。
整个大二上学期,我把所有精力放在卷绩点上。听不懂就看书,看不懂就刷题,实在不行就硬背。幸运的是,这种力大砖飞的方法在不太难的基础课程上还是起到了一些作用。我第二学年的专业成绩,从79.5一下拉到88.8,排名从大一的118直接抬到第9,看到了保研的希望,也顺便过了六级。

那么为了跨保,我要做的第二件事就是自学计算机。于是我对照着学院计算机专业的培养计划,一门一门专业课地跟,从大二上学期结束的那个寒假开始,在B站上起了大学。
那时的我不知疲倦,每天六点起床,十一点睡觉,除了上课、吃饭和睡觉,几乎所有的时间都坐在宿舍,看视频、敲代码。累了就做几个俯卧撑,要不就在床上躺一会(这也是我为什么从来不去图书馆学习,累了没法躺)。当兵教会我的不仅是吃苦,更是知道自己能扛多少。我知道自己的极限在哪,所以敢头也不回地往前冲。
浙大的数据结构课是我遇到的第一道坎。一个双向链表,看到第三遍还是不懂,开始怀疑自己是不是真的不行。但我想,当兵的时候穿防护服也是从最慢开始的,那就再看第四遍。“一杯茶,一包烟,一道链表写一天”毫不夸张,经常一道题琢磨一两天才明白,所以这门课虽然体量不大,我学了将近两个月才完成。
C++、数据结构、Linux……就这样一门一门地推进,一行一行地敲代码。终于,我在大二那个暑假开始前,自学了半年的时间,幸运地拿到了一家芯片公司的实习 offer,我进入技术领域的敲门砖。
大三开学以后,我又看到了另一个好消息:某大厂面向非科班学生创建了一个专项计划。大概内容就是分组做项目,做得好的可以拿到实习 offer。别说是我,就算是很多科班的同学,甚至是研究生,这里也算得上非常理想的去处了。于是我毫不犹豫地报名参加,也顺利通过了海选面试。
项目每组六个人,我是唯一的本科生,其他成员也都来自985,我主动请缨当了组长。内容是做一个基于 LRU 算法的分布式缓存系统。 当时我也不知道啥叫 Redis,啥叫一致性哈希,也没有现在这么方便的 AI 工具可以用,反正不懂的就查,查不明白就线上线下找大佬问。因为不同研究生导师的严格程度不一样,当时的六个人里,有三个人参与度比较低,甚至有的每天讨论一次进度都有困难。我们只能靠着三个人(包括我)推进项目,三个人也都不太会用 git,推的代码还经常相互冲突……
21年12月15号,从下午两点半开始,我们三个人对着同一个 bug 盯了两个小时,谁也没有头绪。那时 GDB 也不太会用,只能在代码里逐行打印行号,在一个不能稳定复现的错误上较劲……那次会开了9个小时,最后问题解决的时候,实在没力气了,电脑都没关就爬上床睡觉了。
就这样,开了无数的会,几个工程项目几乎为零的菜鸟做出了一个可以展示的 demo。最后的结项展示,我们组也幸运地拿到了第一,也拿到了梦寐以求的实习 offer。

哦,那时我还因为大二学习成绩的突出进步,顺便拿到了学院奖学金。也是在那时起,我打定了不再考虑读研的想法。我学计算机本来就是为了找工作,现在工作找到了,我还读个什么劲呢?况且我本来也不是学物理的料,一个靠背书考试的物理系学生,指望我能搞什么研究呢?
大三暑假,我飞到了深圳,入职了心心念念的大厂,但我在那里只停留了一个月……