【鱼皮】给学计算机朋友的 10 条血泪建议

大家好,我是程序员鱼皮。最近高考结束了,也有很多同学毕业了,首先祝福这些朋友在人生的新阶段一帆风顺。

刚参加完高考的朋友,面临的最大问题就是选专业,这段时间也有一些家长向我咨询:还能不能选计算机啦?怎么才能学好计算机?

其实很早之前我就做了一个网站 框框大学 ,还被媒体报道过,里面有各专业前辈们的学习建议。

借着这个时间点,我决定写一篇文章,根据我自己以及身边学计算机朋友们的经历和经验,给学计算机的朋友们 10 条 “血泪” 建议,希望能帮助更多想从事这个行业的朋友少走弯路。

对于已经学计算机的朋友,看完文章后可以思考一下:如果再给你一次机会重新学习,有了这些建议,会不会比现在更好?

学计算机的建议

1、慎重选择

相信还是会有很多朋友冲着 “高薪” 的名头选择计算机专业,放到几年前还是合理的,但如今想靠计算机专业轻松拿高薪已经不现实了。

虽然计算机专业并不止于完全饱和,但就业的竞争的确是大大增加,所以千万别幻想学计算机就是月薪过万、年入几十万,要考虑清楚自己是否喜欢计算机、是否适合学习计算机。

如果之前完全没接触过电脑,就不太建议学计算机了,因为大多数学校大一开始就会学习编程语言的,如果你连软件安装都搞不定、打字都打不出来,就已经跟其他同学拉开差距了。

的确勤能补拙,但这是需要一定天赋的,也需要真的热爱。举个真实例子,我大学室友就是很努力的人,但他大学时才接触电脑,打字刚开始都是用单手一个手指一个手指敲的,很多理论知识他能学会,但编程速度就是很慢,学习时的艰辛我看在眼里。

可以提前在网上看一些免费教程自学,如果发现对计算机不感兴趣、或者学习起来很吃力,那么就果断换专业吧。计算机跟数学的关系也是比较大的,逻辑思维能力一般的同学,在学习计算机基础和一些底层原理的时候,会非常痛苦。

2、明确目标和规划

一定要尽早想清楚自己未来要做什么,考研?就业?保研?还是留学?

目标不同,你要付出的行动路径也不同,所以越早明确目标,你走的弯路就越少。

我在网上看到过一些帖子,就像什么考研失败、考公失败、换岗失败之类的,失败的原因有一部分是没有准备到位,在各个选择间徘徊,又怎能到达更远的地方呢?

明确一个目标后,就要根据目标提前做好规划。

比如准备直接就业,那么就要赶紧学好一门编程语言和开发框架,从大一就可以开始加入一些编程相关的社团、学长的开发工作室、老师的实验室等,持续做项目、参加竞赛、准备简历、找实习,给自己增加经验值和履历。有同学说 “后端大三下就要准备实习了”,其实不然,我见过很多学历不高又能进大厂的同学,是从大二暑假就开始找实习了(我自己就是呀)。总之越早学越好,机会是给有准备的人,别等到毕业才意识到时间过得好快。

如果准备考研,从大一大二就可以开始了解了,因为考研每一年都在变化,多了解院校和政策有助于帮你明确目标。考研比较稳妥的话,英语可以提前学起来,但其他的核心学科至少要全力准备一年的时间。

如果打算保研的话,从大一就要开始了解学校的保研政策了,可以多询问学长和辅导员哪些课程好刷绩点、哪些比赛能加分,还要努力修好专业课。尤其是大一,刚开始的绩点如果太差,基本就和保研无缘了。像我大一刚开始的绩点是 3.7,不是很高(满绩点是 5),后来卷了几年、再加上竞赛的加分,才拉到了 4.1 左右,拿到了保研名额。

3、专业和就业的选择

努力很重要,但选择比努力更重要。在专业和方向的选择上,还是要慎重。如果刚开始还不确定自己要进什么样的公司、或者找什么语言和方向的岗位,那么就选计算机科学与技术或者软件工程专业,就业面会更广泛一些,读研也会有优势。

就业需要考虑企业规模、行业、个人兴趣等等。

如果你的目标是公务员、好的央企国企、或者一流大厂,那么最好去读个硕士研究生,当然也不是说不读研就进不了大厂了,只不过机会更少一些。很多的私企小厂,对学历也没有特别严格的要求。

再聊聊行业,大部分学计算机的同学都是去做开发,所以首推以计算机技术为主要驱动力的行业,比如互联网、通信、游戏、软件公司等。还有一些以计算机为主要支撑力的行业,像机器人、新能源汽车、智能制造、物联网等,对于开发岗位也是很友好的。

当然,除了开发之外,计算机专业的同学还有很多可以选择的岗位,像算法科研、技术运营、产品经理、项目管理等等,这些岗位或多或少会和研发同学打交道,有计算机相关的知识背景,求职的成功率会更高一些。

4、自主实践

记住一句话 “只跟着学校学计算机,大概率是找不到工作的”。计算机是一个理论和实践都极为重要的学科,对大多数不搞研究的同学来说,甚至实践比理论更重要。你哪怕不会什么算法,能写出代码也一样可以干活。

所以,自主性很重要。一定要多利用网上的资源自学,而不是每天到点听课就以为能够找到工作了。学校的课反而不是什么都要听,有很多课对你找计算机工作没有任何帮助,比如一些文化素拓、大物实验课之类的。我对这一点的印象太深刻了,我就属于刚开始跟着学校老师的 ppt 学习,后面意识到跟其他学校同学的差距后,疯狂自学,能不听的课绝对不听,专心写我的 Bug。

有同学会好奇了:你这样不会耽误绩点和学分么?

别担心,完全不会!老实说,只要你利用网上的资源自学好,再回过头来听学校的一些专业课,会发现真的很简单。比如我们大三上了一个前端 web 开发课,因为之前我已经写了 2 年的前端,所以这个课从来没听过,结果最后考试的时候,5 分钟左右我就第一个交卷了,98 分。拜托,考试的那些题目跟公司的面试题比起来,连个零头都算不上!

除了自学之外,前面也提到了,要多做项目、参加竞赛、参加一些工作室、还可以参加一些开源项目来实践。像我是大一就加入了学校的网站建设工作室、大二成为负责人,这段经历是我找工作的一个重要加分项,也为我后面带团队做项目、自主创业打下了基础。

5、持续学习

学计算机,千万不要三天打鱼两天晒网,必须每天学、坚持学。

尤其是刚开始学编程语言的时候,大部分同学的学习模式还没转变过来,可能还跟高中似的背书呢,很有可能就是学了忘、忘了学,所以哪怕只间隔一天,你都要花更多的时间把之前学过的内容捡起来。

做项目也是一样,过个一两周自己之前写的代码估计都不记得了,所以最好还是投入连续的实践学习,效率更高。

大家也要珍惜机会,大学是为数不多能让大家专心学习的地方,千万不要摆烂,要让自己每天都有事情做。

唉,实话说我真的很怀念那段时间在教学楼、图书馆、实验室自习的时光,不用处理各种各样的消息、也没有对未来的恐惧。

6、走对圈子跟对人

拒绝无意义的社交,而是要向优秀的人靠齐,抱团取暖。

比如可以向学长请教学习求职经验、找队友一起参加竞赛、找老师争取一些项目资源等等。当然,谈恋爱也很重要,不过不要强求缘分哦,你变得优秀了,自然能吸引到更优秀的伴侣。

我见过很多同学,就是没有走对圈子,被各种负面情绪所影响了。比如整个寝室都打游戏,你也很难抵挡住诱惑,就摆烂了。像我当时的室友经常晚上打游戏、追剧之类的,我为了防止被同化,就在实验室待到 23 点多才回来,也才能有今天的一些收获吧。

现在网上的信息也越来越充斥着焦虑,这种时候更要找到积极向上的同学,跟着他一起学习进步,千万不要自我放弃。必要的时候,千万不要心疼金钱上的投资,自己的时间比什么都宝贵。

7、学好一门技术

注意关键词是 “一门”,没错,不要求多,只要学好一门编程语言和框架,能做出项目就行了。

我见过不少大一的同学什么都学,Python、Java、PHP、前端等等,我自己当时就是这样的,以追求会的编程语言数的多少来衡量水平。现在回过头看还是有点浪费时间了,其实先掌握一门编程语言,积累了足够多的看文档能力、解决 Bug 的经验后,再学其他语言根本就是洒洒水啦~

刚开始学纠结语言很正常,大一的时候多探索也未尝不可;但如果你学了好几年(等到大三甚至大四的时候),还在纠结选择什么语言,那就不太好了。

对于科班的同学,学校刚开始就是教 C 语言和 C++,可以先全力把这门语言学好;如果是自学编程做项目,那么可以选择 Java 或前端;如果是出于兴趣学习编程,想从事产品、算法方向的工作,可以先从 Python 学起,比较简单易上手。

8、别背代码

学编程最忌讳背代码,而是要多写代码去理解。

我在最开始学习 C 语言的时候,也是敲一次忘一次,很痛苦。但我又不想放弃,于是强迫自己去记忆代码,渐渐地把学编程变成了背单词。但花了很多时间,好不容易把单词背下来了,却还是写不出代码,考试连个链表都做不对,这就让我逐渐怀疑自己是否适合学计算机了。。。

后来和前辈们的交流中,我发现记不住代码是很正常的,倒不如说能记住代码的人 “不太正常”(太聪明、记性好)。

我之前专门写过 一篇文章 ,给大家分享 “编程不忘大法”,还整了个思维导图:

但其实说这么多,总结下来就一句话:多敲、多记、多练、多查。

看完跟着敲,关键知识做好笔记,多做项目多练习,不会和忘了的知识就查。就这么简单~

记忆力不是你学不好编程的理由,我说的。

9、重视基础

计算机基础知识有很多,最核心的是三大件:数据结构和算法、操作系统、计算机网络,当然计算机组成原理、密码学、编译原理也算是基础,只不过相对前几个,实际开发应用的机会更少了。

基础知识是区分科班和非科班同学的重要因素。很多同学不注重基础,以为把代码写出来、项目做几个,就稳能找到工作了。几年前可能还行,但现在大多数公司面试都会考察计算机基础,手写个算法题,甚至有些让你手撕红黑树、手撕 B+ 树等等。为什么要考基础?虽然平时开发项目不一定会直接用到,但有了基础后,你写代码遇到问题的概率会降低、出了问题更好排查,而且能想到更多更好的技术实现方案。

注意,有同学觉得工作用不到算法,很可能只是因为你没有学过算法想不到更好的方案罢了。

举个例子,你熟悉操作系统,就知道线程池的核心参数怎么设置能提高并发性能;你熟悉计算机网络,就知道怎么优化请求性能;熟悉算法,就能写出时空间占用更低的程序。

但有一点必须要强调,我发现目前流行一股风气,把计算机基础看得过于重要了。可能一个项目都没有,就天天背操作系统的八股文、刷什么图论之类的算法,这就有点本末倒置了,没有项目连简历关都过不去,背再多题目又有什么用呢。找工作能干活是前提,而基础好是一个加分项。

另外有一点,基础不是靠突击就能巩固好的,如果是科班的同学,建议从大一开始,就通过看一些书籍和视频接触些基础知识。等之后要找实习前几个月,可以开始每日刷算法;距离找工作一两个月左右,可以再重点巩固八股文,而不是背了就忘。

10、软实力的提升

大学就是一个真实社会的缩影,在这里不仅要学会技术,更要学会为人处世之法。

比如沟通交流能力、责任心、表达能力、信息收集能力、问题解决能力、工作拆解能力、复盘总结能力、组织管理能力等等。

我也是在大学期间参加了各种竞赛、作为工作室的负责人、甚至还开过打印店,锻炼了自己的上述能力,也建议朋友们有机会的话,一定要多跟同行交流、多作为负责人带队参加竞赛,大学期间如果能积累到一些人脉和物质资源,必然是极好的,可能会终身受益。

就聊到这里吧,毕竟写了 4000 多字真的很累啊!以上仅个人观点,有帮助的话给鱼皮点个赞吧~

大家还有什么建议么?欢迎评论区留言分享,你的建议和经历也许能帮助到更多人~

#牛客解忧铺#
全部评论
走对圈子跟对人,速速跟麻辣哥站一起😋
13
送花
回复 分享
发布于 06-12 19:51 广东
又一波韭菜来了
9
送花
回复 分享
发布于 06-13 13:04 上海
字节跳动
校招火热招聘中
官网直投
刚上大一的学生真的会看牛客吗?🤔
8
送花
回复 分享
发布于 06-12 19:32 安徽
看完了删了吧,他们不喜欢看
6
送花
回复 分享
发布于 06-12 16:58 江苏
马上就有新鲜的韭菜了
5
送花
回复 分享
发布于 06-13 22:36 北京
鱼皮好久不见呀~
2
送花
回复 分享
发布于 06-12 20:14 黑龙江
支持
1
送花
回复 分享
发布于 06-12 19:11 浙江
适合跨考的提前看下某个专业如何,其实可以再搞个什么导师信息收集防止选到无良导师
1
送花
回复 分享
发布于 06-12 21:06 广东
唉,看到第六条“走对圈子交对人”真是绷不住了。 本科期间舍友没有一个主动学习编程了,后面来了个转专业的目的性很强而且不和我们交流基本,纯和保研+竞赛的组小团体。 现在说这些倒也不是后悔啥的,主要是去年我妹对计算机感兴趣,我让她上西电大类。她整天跳什么韩国舞,大一就处对象,考试自己考的差我跟她说别灰心,下学期好好学,结果这学期又处了一个对象+一堆社团...唉,绷不住+心累。 ***啊
1
送花
回复 分享
发布于 06-30 19:05 山东
太详细了鱼皮
点赞
送花
回复 分享
发布于 06-12 16:37 北京
希望自己以后能和你一样优秀
点赞
送花
回复 分享
发布于 06-12 19:52 福建
🙂
点赞
送花
回复 分享
发布于 06-12 20:30 北京
😋 适合发在知乎上
点赞
送花
回复 分享
发布于 06-12 20:59 北京
太细了鱼皮
点赞
送花
回复 分享
发布于 06-13 00:24 浙江
是的多踩坑,大一ssm报错整的我怀疑人生。幸好熬过了那段时间。感觉就是吃一堑长一智。到后面就很舒服
点赞
送花
回复 分享
发布于 06-13 12:30 四川
鱼皮想问一下你能接受自己公司招聘go转java吗?
点赞
送花
回复 分享
发布于 06-13 16:22 广东
javaguide太泛了,想面试突击的建议不要硬凿Guide费时间,我自己整理到飞书上的面经差不多一两周就能去面了😂需要的d一下就行,不要米
点赞
1
回复 分享
发布于 06-13 22:13 湖南
鱼皮公司开的咋样了?
点赞
送花
回复 分享
发布于 06-17 10:32 湖北
计算机应该比电子信息难度低吧 填志愿中有点纠结 动手能力不是很强也不是数物也不是很厉害 就是计算机分数太高了
点赞
送花
回复 分享
发布于 06-26 17:37 广东
可惜要毕业了才看到😭
点赞
送花
回复 分享
发布于 06-27 22:12 广东

相关推荐

在前端项目中,以下是一些常见的任务分配和进度管理方法和技巧:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=3c850e207f56463599b3017d0d89a8cc💭♾制定项目计划:在项目开始之前,制定一个清晰的项目计划,明确项目的里程碑、目标和任务。确保每个任务都有明确的描述和预期结果,并为它们设置合理的截止日期。💭♾任务分解:将项目任务细分为更小、更可管理的子任务。这样可以更清楚地了解项目的工作范围,并更容易分配给团队成员。💭♾确定优先级:确定任务的优先级可以帮助你更好地安排工作。根据任务的紧急性、重要性和依赖关系,为每个任务设置优先级,并确保团队成员了解他们应该先完成哪些任务。💭♾分配责任:根据团队成员的技能和经验,将任务分配给合适的人员。考虑团队成员的工作负荷和可用资源,避免过度分配或任务之间的失衡。💭♾跟踪进度:使用项目管理工具或任务跟踪系统来记录和跟踪任务的进展。确保团队成员及时更新任务状态,并及时检查任务的完成情况。💭♾沟通和协作:与团队成员进行频繁的沟通和协作,了解他们的进展情况,解决问题,并提供必要的支持和指导。使用团队沟通工具(如Slack、Microsoft Teams等)帮助团队成员进行有效的沟通和协作。💭♾风险管理:识别可能的风险和障碍,制定对策和备用计划。监控项目中的风险并采取适当的措施来解决它们,以确保项目顺利进行。💭♾灵活适应变化:在项目中,可能会出现需求变更或其他不可预见的情况。作为项目经理,要灵活适应变化并合理调整任务分配和进度安排,以确保项目能够按时交付。
点赞 评论 收藏
分享
107 91 评论
分享
牛客网
牛客企业服务