终于,梦想实现了!
本文的作者是我很敬佩的一位好朋友,他 985 硕士毕业,去年秋招也拿到了很多大厂的 offer 。由于对学术研究的向往,他放弃了大厂高薪,选择了某研究所的工作。远离了 996 ,能够有更多时间做自己喜欢的事情。他后续的想法是工作两年之后继续读博,然后,争取能够当一个大学老师。祝好运!很不错的选择!
写在前面
我是 2021 年毕业的研究生。本科是在一所双非大学读的,专业是软件工程,本科时学过一些 Java 开发。因为学历一般,又对科研存在幻想,我选择了考研,拼了老命总算是考上了一所中游 985,去年秋招拿到了很多大厂的 offer 。
本来想写一篇文章给大家分享一下数据结构应该怎么学。但,正当我按步就班的回忆自己本科是怎么学习数据结构的时候,脑海中突然看到了刚上大学的自己。
不过,回想我在刚上本科时,因为高考分数不高只上了一个很一般的学校,也对自己的专业不感兴趣。但庆幸的是,大学四年,我慢慢的对编程产生了兴趣,学会了如何学习并走入了编程的大门。今天我就给大家讲述一下我读本科的经历,也希望给现在同样处境的朋友一点帮助。
迷茫期
2014 年 9 月,我趁着我们省高校软件工程专业大幅扩招,以一个不高的分数上了一个还算凑合的文科型双非院校。
其实,我对编程本身没有一点兴趣,甚至当时家里的电脑我都不怎么动,选择软件工程专业完全是因为那年招的人数多,所以分低。
来了学校以后,身边的同学都不怎么爱学习,基本上就是成天窝在宿舍打游戏。学校的老师也因为我们那年软件工程大幅扩招,学生管不过来,让我们处在一个完全放羊的状态。当时我们都有种共同的感觉:“不想坐在教室上课,但是我们并不知道我们该干什么”。
不过,我还算上进,想着天天在宿舍待着挺无聊的,就报了很多社团,有学生会、广播站、篮球队、田径队等等。整个大一算是很充实,就是大一上学期高数挂了,下学期 C++
挂了(那年我们高数大物基本上挂人能挂一半,不是因为题难,实在是当时的我们太菜了)。
由于大一参加活动认识了好多人,就很凑巧的认识了一位直系的学长,也是这个学长带我走进了编程的大门。这位学长现在在字节,年薪七八十万了,后文称他为字节大哥。
说来也是因为我们是一个文科气息很浓的学校,学院的领导基本都是搞行政出身,所以我们学校很少能见到技术型的活动,院领导倒是对一些足球赛、篮球赛、啦啦操比赛很上心。由于我之前没见过有人编程做出软件,当时在刚认识字节大哥时,看着他做出的软件,我简直惊为天人。当他给我展示他的代码时,我直接化身为程序员鼓励师,吹爆了他的代码。于是字节大哥豪气的一拍大腿把我收为了小弟,要带我学编程。但后续几个月由于忙着参加各种文体活动一直也没联系字节大哥。
对编程产生兴趣
故事从我大一下学期 C++
挂了开始讲起,因为开了学需要补考,我就问当时还不算熟的字节大哥,我应该怎么学 C++
。我现在还记得当时他略带深沉的摸了摸下巴说,我建议你看看 C++ 编程圣经 《C++ Primer》。好吧,我现在还在记仇。当年我意气风发的在淘宝上买了这本书,然后翻了两页就打消了我学习编程的想法。好在补考前拿着课本突击几天,又找老师画了重点后,算是把补考过了。
因为感觉编程真的学不明白,大二上学期其实在编程上也没学什么东西,也就没多联系字节大哥,不过还算努力的我在大二上学期第一次考四级就把四级过了(后续也过了六级,英语学好对程序员的发展是很有帮助的)。
大二那年快放寒假时,我又重新燃起了想学编程的想法,我再一次找到了字节大哥,在他又准备给我推荐 Java
编程圣经 《Thinking in Java》 的时候,我赶忙拦住他,问他有没啥是我很容易学会的?让我先能上手做出一些东西。这次他教了我 HTML
,并且我终于通过他的演示看懂了怎么写 HTML
。趁着寒假,我自学了 HTML
、学了 CSS
、学了 JavaScript
。终于通过自己敲代码,在前端显示出一个自己设计的网页。自从我觉得能通过自己编程能做出一些东西后,我对学习编程的兴趣变得越发强烈了。
初入编程大门
大二下学期开学后,一天中午在食堂门口看到宣传海报,我们学院要举办软件大赛。那一次不知道从哪里来的自信,除了前端三剑客什么也不会的我就游说同学,拉起了一个小分队要参加一个月后的软件大赛。由于同学的基础比我还差,我只能先教会他们用前端三剑客,让他们去做前端页面。然后,我根据字节大哥的建议去自学 PHP(PHP 是世界上最好的语言,不服评论区来辩)、自学数据库。
那一个月对我来说有点煎熬,经常拿着电脑盯着一个 Bug 盯一上午,然后才能把程序的一小部分执行通,改 Bug 的过程十分痛苦,有好几次就想着要放弃,但是想着当初是我拉着几个同学要来参加比赛的,我如果放弃了是真的对不起他们,就咬着牙硬撑下来。也终于在软件大赛开始之前通过努力(我字节大哥也帮我改了几次 Bug)把一个网站做了出来。
靠着一点创意,我们通过了初赛进入了决赛,也最终得到了那次软件大赛的三等奖(进了决赛的就有三等奖)。
虽然这次比赛的含金量没有多大,但是对于我来说却意义重大。通过这次比赛,我学会了如何去学习编程,也建立起对自己的自信,知道自己可以通过编程去解决一些问题。
经过这次比赛以后,我算是打开了编程的大门。我知道了自己该学什么,我也有了我自己学编程的方法,我不在学某某技术时先拿着一本“xxx 圣经”硬啃。在学习一种技术的时候,我都先学会上手,然后再去补充比较复杂的理论,这让我学技术学的很快。慢慢的,大一大二没学好的 C 语言、C++、Java、数据结构、网络都补了起来。
大三,因为学校安排搬宿舍,我正好换到了我们班一个十分爱学习的宿舍,当别的宿舍都在没日没夜的网吧打游戏时,我们宿舍一起跑到了没什么人的图书馆去学习。后来我们这个宿舍也大部分通过考研和保研上了不错的学校。
其实,我最初的想法是要去工作,但是在大三的时候去听了一场中国计算机大会的报告,看着很多高大上的技术,让我对读研产生了幻想。其实还有一个想法就是想弥补下没在好的学校读过书的遗憾。考研就是另一个故事了,感觉是一个比较励志的故事~~好在我在本科的时候学会了怎样学习,编程也有了还不错的基础。
我从大三下学期的 6 月开始准备考研,在经历一段折磨后,终于挤进了复试(实行差额复试,我初试的分数就在差额里面)。也得益于我编程基础还不错,所以在面试过程中对于一些编程基础问题我都答得比较完善,实现了逆袭。在面试完忐忑的离开面试房间时,听到了一位老师和另一位老师说,这个学生还不错。我知道,我上岸了。
后来
后来,上了研以后的故事比较顺利,在一个更高的平台上认识了更多优秀的人。也有很好的博士师兄带着我学习很多知识。虽然研究生的生活也有一些波澜,但总体上比较顺利。经过校招也拿到了很多不错的 offer,有比如像腾讯、美团京东这些互联网大厂,也有一些不错的研究所。回头去看所有走过的路,虽然会有遗憾,但也收获了不少。
建议
下面我想给刚上本科的并且和我有类似经历的朋友一些建议。每个人情况可能有些不同,大家择善而从。
1、多和上进的人在一起。远离一些见到你学习还会挖苦你的人。
大学生活中,其实身边的人对自己影响会很大。我特别感谢我在上大学时身边有几个很有想法,也很上进的人,这几个人对我的影响很大,让我知道了我应该朝什么方向努力。另外和这些比较上进的人一起参加一些比赛,合作一些项目也是对自己很受益的。
2、合理分配学习时间。
感觉一部分同学对大学的努力存在误区,努力不是要两耳不闻窗外事一心只读圣贤书。大家要懂得给自己放假,该去运动就去运动,该和同学出去玩就出去玩。其实玩也是为了更好的去学习,大家需要的是在学习的时候集中注意力高效率的学习。在考研最辛苦的时候,我也一直保持着学习五天,纯玩两天的节奏。
3、学编程的时候大家尽量先上手再去补理论。
比如对于初学编程的朋友。可以先尝试用 HTML 做一个基础网页。学会怎么使用 HTML 以后,再用 CSS 给网页做个样式,然后再用 JavaScript 做一些效果。前端一些最基础的操作学会以后,可以慢慢再学一门后端的语言,给网页开发出后台,然后再给网站连接数据库。最后再学习一些数据结构的知识、软件工程的知识、设计模式的知识等等把自己做的网站做的更好。通过一步步的来,先让自己对编程有个初步的了解,再去深挖。要学会给自己的学习降低难度,上来就抱着《C++ Primer》、《Thinking in Java》就啃,特别容易打击自己学编程的信心(甚至有人直接抱着算法导论啃)。
4、学会利用资源。
因为各种学校的教育资源不同,大家并不能把获得知识的希望全部寄托给大学课堂。一些编程类的书籍和公众号文章,还有一些编程课程(大家可以在 b 站搜)。都能对编程的学习起到一定的疏通作用。我在学编程时一般都是这个节奏,比如要学习 MySQL 数据库,我就先在 b 站上找一些编程课或者在公众号上找一篇不错的文章,然后跟着教程先把环境搭起来,再跟着教程把几个增删改查的基本操作敲一遍看一下效果。然后再去学习一些相对高级的操作,比如排序、group by、表连接之类的。在对 MySQL 基本上手以后,看一些书去了解理论性的知识,对于看书不懂的问题,再去找一些公众号文章或者编程的课程去学习。我感觉这样的学习更适合大部分学生,这样学习效率也会高很多。
5、收集信息很重要。
高中时期,大家都有一个明确的目标,就是高考,高考相关的信息已经被各个学校老师研究的十分透彻,高三学生需要比的就是谁更努力,谁学习更高效。而大学不一样,大学有很多条路,你要做的是选择好自己走的路,并且要多了解一些信息,明白自己的路应该怎么走。比如你要本科毕业去互联网公司就业,你就应该提前了解自己需要具备什么样的能力才能进这些公司就业,提前准备一些相应的项目,提前联系去一些互联网公司实习。如果你想考计算机相关专业的研究生,你就应该去了解哪些学校这方面专业好而且招生人数多,并且去了解考研应该准备哪些东西,然后相应的去参加一些证明自己能力的比赛或者做一些项目。
6、对自己有自信很重要。
大家要一步步的培养起对自己的自信。这种自信不是那种迷之自信~而是要通过一些活动,一些比赛去建立对自己学习能力,对自己的能力的自信。要相信遇到再难的问题,自己也可以把问题一步步拆解开去完成。这对于日后的学习是最重要的。
推荐👍 :1049天,100K!简单复盘!
推荐👍 :年薪 40W Java 开发是什么水平?
推荐👍 :Github掘金计划:Github上的一些优质项目搜罗