我的本科前两年总结|人生是森林,而非轨道
期末后即将大三,谨以此文纪念我的本科前半生。
我的本科,像一片广袤的森林,足以把大学四年过成研究生三年。有学业导师和优秀的前辈给我指引,有属于自己的学习位置,学校图书馆也提供了很丰富的计算机经典书籍,每周开例会给老师汇报项目进展,还有阿里的Mentor带我入手项目,研究ETH(有欧陆第一名校之称)两位教授的Paper,让我对数据库测试这个领域有了更深层次的接触。
在这个熙熙攘攘的时代,大家都忙着活成标准的样子:什么时候要取得什么样的成就、拿到大厂Offer、高学历、比别人强。但是我的人生并非轨道,不一定非得循规蹈矩,什么时候必须成功,一切都沿着前人的脚步。也很难完全成为旷野,因为现实总会束缚我们的想法和脚步。我的人生更像是森林,有很多阻碍,也有很多资源,有前人走好的路,也可以自己走出一条属于自己的路。
大一上 申请转专业
因为自从录取结果出来之后,我就知道,我的学历是个劣势(河南某二本)。大一就开始思考未来发展方向了,
我原本的专业是电子工程系的自动化专业,对这个专业一知半解,只是觉得很酷开学才后知后觉,这个专业涉及非常多物理、电路的知识,而我这方面的基础可以说是负值(高中对物理就毫无兴趣)。我不知道自己喜欢什么,只知道自己一直立志“科技报国”,想进入芯片行业出一份力,既然硬件不感兴趣,反正本专业未来的课自己也毫无兴趣,那就转软件吧。
大数据属于计算机专业,我知道课很多很多,半路转专业,学习中也可能会遇到很多困难。但我不愿意就这么凑合、浑浑噩噩过完大学四年,我愿意为了我心中那个纯真的梦想,去付出时间和精力,多少都无所谓。
于是,在调研专业前景、课程安排、师资力量和就业前景后,选择了大数据专业。
期末成绩出来后,转专业成功的那个寒假我也没闲着,因为我已经落后了半年的课程,在询问后,自己自学了一个寒假的C语言。
我没有觉得一个人刚开始学C语言很枯燥,只觉得“好有趣”。
大一下 忙碌但坚定
大一下,对于大多数学生来说是第二学期,但是对于我来说是第一学期。
即使欠了很多课需要补上来(现在还没补完但也快了),即使自己得一边上C语言课(有时候还和原有的课程冲突了)一边上数据结构,即使数据结构听不懂,即使期末周害怕挂科,我都足够坚定自己一定能渡过难关的。
因为在转专业前,自己就已经能猜到会有多忙碌,但是我坚定选择了计算机,坚定选择了用专业能力弥补学历的劣势,坚定选择了努力。大不了把手机扔一边,从早到晚一直学呗。
抓住交流的机会
在跟班补修C语言的时候,我认识了一位同样因为转专业需要补修的学长,我感觉到他很优秀,专业能力很强,就加了下微信探讨专业方向,这是一个很小的举动,但是通过与优秀学长的交流,为我大二前就明确专业方向和学习路径有了很大帮助。
他也用他身边的人和自身的经历告诉我:你二本,大厂依旧给你机会。
大数据和人工智能竞赛
暑假,我报名了一个大数据竞赛和人工智能竞赛,算是专业方向的积极尝试。因为我在学习编程初期,亲身接触的竞赛足够多,尝试的方向和了解调研足够多,后期才会坚定的选择Java后端方向,而不会因为别人的三言两语而左右摇摆。
这个暑假我巩固了原有的C语言(加起来学了3遍)和数据结构(学了2遍)学习,为了大数据竞赛提前学了计算机基础MySQL和Linux,看+跟着敲 尚硅谷的MySQL和Linux 课程。
因为自己大一基础的原因,这个竞赛并没有一个好结果,但我因此超前学了对未来发展很有用的MySQL。
我这样的基础,暑假还搞了人工智能竞赛。年轻人,不就是不知道天高地厚,不断尝试嘛
虽然我从来没接触过Python和项目开发工具,更别说机器学习了。但是我敢于挑战每一个自己想尝试的东西,0基础没关系,我可以现学,就这样配环境,配不好我就从头开始,搭建神经网络,搭建不好我就再看着文档从一行重新开始,代码(小demo)全是红红的报错,那我就一个个Google、查博客解决。就这样,一个环境能摸索一下午,代码能摸索一天,但是还是完美解决了所有的问题。
专业老师讲的卷积神经网络没听懂,损失函数,ResNet模型一头雾水,不懂就弄懂就得了,查博客、看书(学校图书馆资源特别丰富)、看视频。
因为我们的选题是计算机视觉方向,我就抱着一本相关的CV书啃。
最后跟着老师混了个决赛TOP5。虽然我从大二开始,就一直走后端学习方向,大数据和AI方面的尝试看起来没用,好像自己的编码水平也没有特别大的提高,但是至少让我后来知道了自己适合走哪一条路,这些方向的难度如何,锻炼了自己的搜索信息能力,最重要的是,没有人解决不了的Bug,计算机里面没有任何的黑魔法,只是现在自己弄不懂而已,总有一天自己会全部搞明白,发现就那么一回事儿(当然,学无止境)。
靠近热爱 写简历
因为我知道自己学历不占优势,所以大一就思考自己未来的路和学习方向,不断和优秀的学长交流,也在和学业导师的交流中,明白了自己的热爱,自己的专业是可以靠近自己的热爱的并且解决社会痛点问题(也许我是个平凡人,但我也未必不能成为一束光),芯片行业,也需要软件开发和测试开发,我走Java方向完全可以,和学校后期实训项目安排也不冲突。
悄咪咪说一句,我的学业导师是全世界最好的学业导师!!!非常幸运,能够和学业导师成为好朋友。学业导师是我在学校最爱最爱的人(希望马老师本人看到了别说我油腻)。
从高二至今,自己一直都在守护并靠近自己的热爱,梦想,是一件多么难得、多么珍贵的东西哇。
在交流中,自己大一就有了实习和秋招的概念,自己在大一升大二的假期,也一直在牛客网关注着求职动态。原来,校招是这样的。甚至自己开始写简历,投简历,因为大一,水平太菜,自然没人理,但是至少知道了求职大概时间点、流程、简历大概框架是什么。对我后期的学习规划有了很大的帮助。
大二上 后端学习路线
算法上,按照代码随想录的题单和题解开始刷题。
这学期也开设了操作系统,自己课下也看了B站上哈工大李治军老师的《操作系统》还有王道的《操作系统》,还有书籍《操作系统导论》。
因为学长曾经给我指引,可以搞一搞开源项目。自己平时也喜欢在一些开源技术社区逛逛,比如掘金,在上面也发现了很多开源活动和讲座。最后选择了腾讯的开源活动。
与其说自己在开源项目中编码能力提高了多少,不如说开源带给我的更多是眼界,“哇,原来编程能做出这么厉害的产品,创造这么大的价值”。编程刚开始可能很难,做项目实现自己想法很难,但是一路坚持下来,发现计算机是个大世界,往前去探索,能够发现很多很多有趣的东西。
自己也开始学习Java开发框架,用SpringBoot做了个还算有深度和亮点的项目,每做一部分功能,就开始思考在简历上怎么写。每迭代一两份简历,就开始思考自己的简历如何更有竞争力(为我这学期拿到谷歌的面试机会打下了基础)。
自己一边学习一边写简历一边关注就业,大概是期末考试前吧,看到了谷歌的招聘信息,就只是很习惯性的尝试、去投简历,即使那是我第一次写英文简历。
谷歌面试
就在我操作系统考试的前一天,收到了谷歌的面试邀请。这是不但是我收到谷歌的英文邮件,也是我收到的第一个正式的面试邀请,更是我第一次收到大厂的面试邀请。
可能,有运气的成分在。但是,筛简历卡不卡学历是人家的事儿,投不投是自己的事儿。不自己迈出第一步,不去尝试“不可能”,就真的完全不可能了。
二面挂 但是也值得
期末结束后,自己自然也开始准备面试,主要是简历上的东西,重点是算法题。
我给自己制定的学习计划很全面,即使期间阳了,也在尽量抽出时间写算法题,对着屏幕练习讲算法题。
简单来说,就是在第一次面试的焦虑中(甚至不知道是否是英文面试),习惯性的努力,刷算法题,脱离编译器的环境在文档上写代码,画图讲题,分析时空复杂度,再准备一下简历上的项目和技术栈。
一面二面的面试官都很友好,感觉更像是一场交流,聊项目,交流中没有很紧张,但是写算法题的时候没有发挥好,遇到自己没有接触过的题目,心脏怦怦跳,最后面试结束复盘发现题目并不难。
二面结束一周后,HR同步邮件说没有通过(其实在面试中,自己也知道在算法方面的表现并不好,磕磕绊绊)。会感到遗憾,错失了去谷歌实习的机会;会自卑,觉得自己算法能力好差劲,不是hard题,但是没做好;会难受焦虑,质疑自己的专业水平能力。
但是更会反思自己的不足,面试会录音,思考自己面试说过的每一句话,自己在面试时的解法的Bug在哪里,什么是最优的解法,自己当时为什么会磕磕绊绊,自己哪些细节没注意,写出有Bug的代码,自己缺少哪一部分的训练,我下一步应该如何去做,如果再来一次面试,自己会如何表现。并且自己现在每学一段时间,都会回过头再思考,再反思。
大二下 焦虑质疑痛苦
在此之前
在此之前,自己也做了一些其他尝试,比如参加GSoC,阿里的大佬是我的Mentor,了解项目的论文背景,本地跑项目,尝试解决一些问题,思考项目是否有一些不完善的地方。也参加过很多讲座、会议,听腾讯的大佬讲操作系统项目,第四范式的研发者讲自己的数据库产品,字节跳动的老师讲实际生产中的后端技术,自己也会向大佬提出一些“很可笑”的问题,被怼后自己关于“提问的智慧”这方面也有了感触,从开源小小白变成了开源小白(自己还有很长的路要走,我还年轻,编程的世界学无止境)。跟着学校老师做一些实际的项目,参加一些比赛。
如果你觉得,从大一下转专业到现在,我的本科生涯就像开挂一样,有人指引、有清晰的学习路线、接触到了很多我这个学校层次接触不到的大佬和项目、眼界、大厂面试机会......
这些都是自己首先要做到优秀,做一个值得交往的人,才会遇见真心想帮助自己的人。对于我而言,不过是在学院工作室从早坐到晚,对着电脑敲代码,直到快晚上10点寝室要关门了。
而且我这个学期,经历了很多很多失败痛苦。
学习进度
算法上,代码随想录题单刷完,剑指offer即将刷完,刷了200多道算法(离我的目标至少还有一半距离)。
计算机网络,看了《图解HTTP》和《图解TCP》、B站湖科大的计网,小林coding的总结。
Redis看了大名鼎鼎的《Redis设计与实现》。
MySQL,看了2遍的《MySQL是怎样运行的》,看了腾讯云大佬丁奇老师的《实战45讲》。
操作系统另外看了《操作系统实战》,还找了上学期老师梳理上学期学习的知识点,老师花了一个小时的时间给我把整本书串了一下。只要是真心想学习,老师还是很愿意额外花时间给学生讲课的,还很高兴的请我吃了顿饭。
做了三个项目,一个是老师的项目,另外两个是自己的项目。技术栈涉及Kafka、RocketMQ、FastDFS、ES、Redis高级数据结构,并且做了一些优化和改进,比如二级缓存架构设计、缓存一致性、避免Big-Key问题等。足够写在简历上。
六次竞赛、一次六级
对于毫无基础和背景的转专业学生来说,从大一下到现在,自己付出的努力和收获已经还算可以了,但是自己总要走出学校,认识到,“哦,出了学校和别人一比,我啥也不是”。
我在校参加了六次学科竞赛,包括算法编程类、项目类、大数据类,全部失败了。我的六级,也差了1分,没过。并且我是准备大二就找实习的,因为学校的课程安排,暑期也要上课,计算机科班平时的课也太多太杂,尤其是我这个大数据专业,但是我已经不打算走大数据方向了,我的方向是Java,太多课程和我的方向没有关系。应付学校的课程,很疲惫。
“天将降大任于斯人也,必先苦其心志”,这句话安慰别人可以。但是,六次竞赛+六级差了一分的失利,加上谷歌面试的失败,加上难免和优秀的人的比较,这些焦虑、质疑、痛苦不是一句话就能安慰的,我没有家庭背景,我只是出生在一个小县城,家庭的责任也需要我来承担。
也许我不能忘记这些连续失败带来的痛苦,就像高中经历的事一样,我现在还记得。我从大一就开始为就业做打算,是因为我的好强,觉得自己本不弱,更是因为,我没有资本,我能上大学,不担心自己在学校的经济,爸爸已经很努力了,但是我却担心他们过的好不好,我需要承担家庭的责任。
但是这些东西可以让我变成更坚强的人,因为,纵使有这么多连续的失利,我依然记住我的坚持了4年的梦想——科技报国,纵使我不懂硬件,但是依然有软件开发和测试开发的岗位和我的方向是对口的,从高二到现在,一直没有忘。梦想是一件多么珍贵,多么值得守护的东西。我还能摸到我的脉搏在跳动,这就是生命的流淌,我选择了我热爱的,那就生生不息。
人生是森林
我这学期总是焦虑,我怕输,我怕付出了时间没有效果,我怕失去我的应届生身份后,自己没有做到自己想做的事。
但是我现在想通了,我们的人生不是轨道,不是一定要过和世俗一样循规蹈矩的生活,不是“这个时间段一定要达到什么成就,你做不到XX就完了”,又很少有人的人生是旷野,实际生活没有这么理想,总会有一些家庭情况、学校情况、课程安排等限制我们的脚步。我们的人生更像是森林,有阻碍、也有资源,有一些前人走出的小路,可以沿着前人的路线走,但更要问问自己的内心,我的热爱是什么,我想做什么,自己另外走出一条小路,也未尝不可。
我选择了身边没有人走,但是可以通往我热爱的那条路。计算机,不止互联网行业可以创造价值,人生,也没有标准答案,给自己多一些选择和耐心。
不管是选择互联网大厂的高薪,还是芯片行业带给自己的成就感,或是中小厂带给自己足够多的自由发展副业等等。我们更应该想清楚自己为什么要出发,选择哪一条路更好,自己更喜欢什么方向,更能带给自己成就感,而不是只看着别人走哪一条路,自己跟着走,仿佛每天都在观望别人的生活,而忘记在自己的生活里微笑。当自己因为生活或者学业的负担而坚持不下去的时候,热爱或者喜欢或者成就感能够支撑自己继续前进。
纵有疾风起,人生不言弃
也许某些话觉得有些鸡汤,有些年轻。但是,走好自己的路就好了。
我们已经在路上了。
PS:期末周了,祝大家都能期末不挂
#我的失利项目复盘##学历对求职的影响##我的实习求职记录##互联网没坑了,还能去哪里?#