大学4年复盘

2014年9月,我误打误撞来到了北航计算机学院。没想到“侯门一入深如海,从此萧郎是路人“,从一个从没有接触过代码的小鲜肉,成长为未来的工程师。这四年的时光是我技术和三观成长的重要阶段,可以说,大学塑造了之后的我。其中,有值得肯定的部分,也有我现在一心想要摒弃的缺点。

北航的课程以基础扎实著称。计算机科学的基础课程:计算机组成原理、操作系统、编译原理、计算机网络,分别分布大二大三在4个学期,每学期这些基础课都属于重课,需要花费大量的精力。现在看来,重视这些基础课程简直太正确了。我大四参加了多场实习面试和实习,深刻体会到这些基础在面试和工作中的重要程度。只是当时大多数学生的motivation不足,并不能理解学院的良苦用心。我自认为在学院学习成绩名列前茅,奖学金和各种证书也拿了一大把。但对于这些cs基础,并不敢叫嚣自己理解了,更多地是谦虚地告诉自己,很多还需要补习。年轻的时候欠下的帐迟早要还的。这四年来,貌似学了很多,其实学到很少。其实,最好的学习方法是,在学院的课程配合下,主动地进行学习。阅读每个topic的扩展材料,而不是老师把材料的链接放在ppt上,自己连下载都不下载。多多上网搜集信息,泡图书馆。

虽然平时经常和朋友们吐槽课程设置不合理,但我不得不承认,计算机学院的很多本科课程的设置还是极其合理并富有前瞻性的,尤其是结合其他高校的课程设置来看。北航计算机学院全国第三的排名也并非浪得虚名。比如,大一上的大学计算机基础就是教python,更可怕的是,是几乎所有专业的同学都要学,不限于计算机,还有人文、经济、数学、飞行器。后来写的代码多了,才知道掌握python确实是必要的。尤其是15年后,机器学习大火之后。python是机器学习的必备语言。而据我所知,并没有其他高校从14年就将python设置为全校的必修课。
大一的时候,我们要上很多课,其中大多数是数学课,编程课程每学期只有一两节。每门数学课还都是大课重课,需要花费很多的精力。包括 数学分析、高等代数、概率与统计这些基础课程,也有 离散数学、集合论、图论 这些和计算机相关的数学课。当时大家都笑称,“进错了专业,其实是数学系”。之前有过编程经验的同学更是无法理解,因为他们选择计算机专业时就期待着更多实践课程,可以动手写代码。现在看来,对数学课的重视一点也不为过。只是当初too young, too naive,无法理解老师们的良苦用心。真的就像大一时候班主任告诉我们的一样,基础数学课的有用程度是 概率统计 > 线性代数 > 微积分。后来接触机器学习后,才知道数学真TMD重要。年轻的时候总是认为自己很牛逼,知道自己需要什么,不需要什么;认为学院很傻逼,老师很古板。其实呀,真正傻逼的还是自己。

大学期间究竟要不要参加各类比赛呢?我认为完全没必要,除非你对该比赛有强烈的兴趣,或者比赛的经历和奖项可以给你带来足够的收益。
从现在看来,我参加比赛的经历并未获得足够的收益,反而投入了一部分时间和经历。
我大学期间参加过各种各样的比赛,主要集中于学科竞赛和编程比赛。首先是数学建模竞赛,估计是很多大学生都有机会参与的。我曾经和2位同学一起参加了2016年的美赛和国赛。现在看来是一件蛮可笑的事情。我们之前没有任何关于建模的数学基础和写作训练,试图水一个奖项,最后当然竹篮打水一场空。诚然很多同学也是熬夜几天,水了一个二等奖,但这个奖项的收益有多大呢?美赛几乎都是中国人在参加,大家也知道奖项并不能证明你的能力。大一上数学分析的时候,杨小远老师就说,她在数学学院招收研究生的时候,发现很多人都有美赛的奖项,但面试一问就露馅了,数学和建模能力一般。获奖更多的是抱大腿和比赛本身的水分。
所以,我认为,很多时候,奖项只是锦上添花的东西,更重要的是,你在准备比赛和参加比赛的过程中,收获的能力和成长。
我在大二的时候,也参加过大学生数学竞赛(非数学类)。在竞赛的培训期间,因为太难了,很多材料都只做了不到1/3。就是这样,我竟意外地获得了全国三等奖。但实话说,这个奖项对我没多大作用(当然对评奖学金是有用的),而且我在准备竞赛的时候并没有全力以赴,收获到的能力和成长都是有限的。

大学期间,我一直没想明白自己以后要做什么。没有清晰的目标,就没有细致的规划。很多机会其实也就这样错过了,机会总是留给有准备的人的。这样时间不能说是浪费掉了,但却没有被高效利用起来。大一大二大三一直在上课。由于高考的失利阴云一直笼罩在我的心里,我到了大学仍然学习很认真,生怕落后。大三到了决定出路的时候,自己才发现周围少部分同学早早地准备了出国、保研、工作,此时正是丰收前的最后冲刺。而我像大多数人一样,匆匆忙忙地度过了大学的前几年。我由于成绩不错,被老师鼓动保研了。
就像很多游戏里的职业系统一样,玩家达到某一等级后,就可以选择不同的职业,专学该职业的技能,购买该职业的装备。有经验的玩家会早早准备着这一步,可能从0级就决定好之后的职业了。然后向着这个职业修炼,因此技能点和金钱一点也不浪费。而我就像新手玩家一样,早期由于晋升道路很明显和固定,一路打怪升级,由于天赋玩的还不错。但到了选择职业这一步,就蒙蔽了。货比三家,还是选择了人数最多的职业。心想,选的人多自然有其道理。进入职业后,由于前期的专项积累不够,与有经验的玩家有差距甚至是被吊打,也不足为奇了。

大四在外实习了一年,接触了业界的不少前辈。从75后到80后,还有不少90后。通过比较和自己在实验室的生活,我发现自己更适合和喜欢工作。我本身性格内向,对数理也很感兴趣,大学接触编程后,也是兴趣盎然。相比很多同学对编程的不温不火,甚至排斥,我对编程可以算是热爱了。大二折腾了一年,自学了Linux、git、鼓捣个人博客、网站。这些折腾到后来给了我丰厚的回报,尤其是Linux和git 2项,在之后的工作学习中有大量的使用。数学上的优势也让我可以接触到算法岗的工作。但由于没有丝毫准备,当时的我并不能放弃读研,转而工作。因为程序员的短缺,我本科毕业找到一份看上去还不错的工作不难。但并不能找到顶尖的工作。程序员也分很多种,前端、后端,架构、算法。我也不清楚其中的差别,莽莽撞撞地去工作很危险。所以,我就打算继续读研了。趁着读研期间的学生身份,多出去实习几次。一是可以体验不同的工种,找到自己适合的;二是可以锻炼自己的能力,丰富简历内容,为明后年找工作做准备。

以上,就是我大学四年的复盘。主要集中在学习和人生规划方面。因为我认为这些才是大学生需要主要思考的问题。
我的大学生活绝不能算是成功,相反,与身边优秀的人相比,可以算是失败了。所以,这篇文章,更多的是教训、而不是经验。希望自己以后可以引以为戒。

岁月是把杀猪刀

岁月是把杀猪刀,有些人千刀万剐,有些人刀枪不入。

入学军训

毕业前夕