打破信息差,一条学校不教的计算机学习之路
# 打破信息差,一条学校不教的计算机学习之路
- 我们应该如何度过大学四年
- 作为计算机的学生,我们应该如何度过大学四年
开头先讲一个暴论
国内绝大部分大学的本科教学,不是濒临崩溃,而是早已崩溃 --- 《上海交通大学生存手册》
在当今流水线式的教育体制下,我们就像廉价的零件一样被生产出来。因为数量巨大,没人会对每一个人的教学质量负责
试想一下,每个学院每个系有成百上千的学生,每人有着不同的思想、不同的目标、不同的知识背景、不同的接受力,我们怎么可能去指望一个统一的“教学培养计划”强制应用在每个人头上的时候,能够产生效果?好比说食堂师傅炒一大锅菜给上千人吃,我敢说我分到的那盘,不是炒糊就肯定得夹生
大家需要走出学校,学校只是一个平台,你需要利用好学校的资源,然后卡好学校的bug来达到自己的一个最优解
# 错误的心态
线性的高考思维
高中容易把分数作为唯一的评价手段来评价一个人,而我们就是这场博弈的“失败者”
来到大学的第一步就是跳出这种思维,分数不是评价一个人的唯一手段
在我眼里,专业前几的我称之为“大佬”,竞赛拿奖拿到手软的人我也称之为“大佬”,能独立开发项目的我称之为“大佬”,计算机专业但是熟读文史哲经济哲学等其他学科的我也称为“大佬”,大学创业能赚到自己的第一桶金的我也称之为“大佬”,评价一个人的厉害与否是多元化的,自己可能在应试考试方向不如别人,但是可以在其他方向发光异彩
如果一个人把政策评分作为自己的至高追求,那么他就是这个政策的牺牲品。--- 《上海交通大学生存手册》
大学四年留给你的是你的人生,在你毕业之时,那一串苍白的分数其实就已经作废了--- 《上海交通大学生存手册》
悲壮的学习方式
大家还记得自己高三是怎么过来的嘛
挖空心思研究解题技巧的学生们,与同样挖空心思研究出题技巧的老师们,构成了一个完美的圆环。在二者日复一日的机械劳动中,我只看到纸张、电力以及粮食不断被浪费,却看不到中华之崛起
我愿称之为悲壮的学习
大学的学习需要跳出这样的学习方式,来得到自己的有效的学习方法
学习最需要的,不是悲壮的毅力,而是对无限未知的渴求,并产生自己的输出
我们学英语,不是说背了多少英语单词,做了多少英语阅读,而是能使用英语写文章,能和外国人流畅交流
我们学习编程,不是说看了多少网课,写了多少行代码,而是能自己独立写一个博客网站,能和朋友交流想法,然后把自己的 idea 写成一个软件,投入应用
# 你需要做什么
你想要过怎么样的大学生活
竞赛?考证?英语?实习?项目?绩点?兼职?
网上的推荐贴很多,也给大家造成了很多很多的焦虑
我给自己的大学主旋律被总结成一句话
少点功利性,多点求知欲 向内修心,向外拓展世界
相信看到这篇文章的人肯定是有着上进心的各位大学新生,有着自己的目标:要考研上985,进大厂年薪百万,科研推动人类进步,其实与其在与宏大目标斗争,不如享受学习计算机的一个过程,计算机是一个有魔力的学科
向内修心
这个方向非常宏大,除了专业能力之外,更多的软实力也不容忽视
自己的时间管理体系:正确安排好自己的时间,安排好上课、自主学习、健身、恋爱之间的关注
独到的学习方法:思考怎么用最少的时间有效学习一个知识并能快速应用,革新
正确拓展技能树:思考自己要学什么,然后通过上述方法来学习
形成自己的总结复盘体系:目标 -> 规划 -> 执行 -> 记录 -> 总结 -> 修改规划 如此循环
大家可以给自己先给自己写几个问题,现在可能想不清楚,等到大一或者大二结束了再来回答
- 我以后要从事计算机相关的工作吗?
- 我以后适合一线城市的生活吗?
- 我希望得到一个高薪/轻松的工作?
向外拓展世界
学会正确与人交流的方式
培养一些输出型爱好:乐器,自媒体,摄影等等
多出去走走,走遍祖国大好河山
# 关于毕业的一些去路
就业
算法岗(AI)
开发岗
- 互联网大厂,中小厂,国企,体制内(银行,公安),制造业
当老师
- 教培 / 进学校
考研(学术)
出国留学(学术)(水硕)
创业
参军
# 计算机有哪些方向
快速了解自己的专业
有一个视频非常好,用了20余节课来介绍计算机从门电路到最新的科技前沿
【计算机科学速成课】[40集全/精校] - Crash Course Computer Science (opens new window)
软件开发
游戏
人工智能
硬件开发
云计算,大数据
软件测试、运维
区块链
交叉其他专业
...
# 寻找自己的方向,而不是随大流
大一很容易陷入一种“群体性迷茫”,看到别人报社团、参加竞赛,就觉得自己也应该一样。我当初就报了几个自己既不擅长也不感兴趣的技术部门,最后都因为没有时间和热情而不了了之。
这是巨大的时间浪费。
如果重来一次,我会首先冷静地分析,自己对什么真正感兴趣,是前端、后端、算法,还是数据分析?我会花一两个月的时间,通过网络课程、入门书籍,快速了解每个方向是做什么的,而不是盲目地在社团活动中消耗自己。方向错了,越努力越尴尬。
# 学会收集有意义的信息
确定了大致方向(比如前端)之后,最大的挑战就是“如何系统地学习”。一个人埋头苦干,很容易走偏,或者效率低下。
所谓“打破信息差”,就是去主动链接那些已经走在你前面的人。我会通过各种渠道——技术社区、学长学姐、企业导师——去了解:
- 这个领域的学习路径(Roadmap)是什么?
- 哪些技术是企业真正需要的?
- 有哪些高质量的书籍、课程或开源项目值得投入时间?
找到一张准确的“地图”,比立刻出发更重要。 这能帮你节省至少一年自我摸索的时间。
# 切实可行计算机的几大学习路线
# CS公开课
这是最扎实,最费时的路线
如果你现在比较迷茫,还没想好做什么,但是能确保以后做计算机相关的事情,强推这条路
真正的好大学,没有围墙
一个能打开计算机新世界的网站 csdiy.wiki (opens new window)
一个强推这条路的博主:降星驰 (opens new window)
一个相对正确的学习路线
大一:
计算机基础课:
- 《MIT-Missing-Semester》
- 通识课 《CS50x》
- 至少学会一门编程语言,推荐 C++ 《CS106L》Python 《CS61A》
- 数据结构 很多的算法书,CS61B,力扣上面刷算法题
- Linux 基础操作
数学课:
- 高等数学《普林斯顿微积分读本》
- 线性代数 《MIT18.06: Linear Algebra》
- 概率论
可以先了解一些自己感兴趣的方向,写一些小东西:
- Web 开发
- Python 爬虫
- Java + springboot
- ...
大二:
计算机四大课:
- 计算机组成原理/体系结构 《CSAPP》《CS61C》,一生一芯
- 操作系统 《MIT 6.S081》,南京大学jyy老师
- 计算机网络《自顶向下的计算机网络》《CS144》
- 数据库
- 数据结构
大三:
学习自己的方向,做项目/备战考研/搞科研
我们在选择一些UCB的课程的时候发现被 lock 了,所以要么寻找人脉去找一个 UCB 账号,要么看之前的网页快照 web.archive.org (opens new window)
# B站大学
最速成的做法
如果你想以就业为大学
大一
选择技术栈然后在 B站/youtube 学基础 + 跟着做项目
前端技术:html,css,js,vue,ts
后端技术:java,javaweb,springmvc,spring,mybatis
Leetcode 刷算法题
当然,学更多的东西不是最牛的,厉害的是成为一个领域的专家
计算机基础的内容不是说完全不学,得按照你的方向学需要的部分,面试重要的是:项目、八股、实习、竞赛
从大二寒假开始投简历,想办法出去实习积攒项目经验
或者进实验室/教师团队跟着老师做项目
或参加一些GitHub上知名的开源项目
这条路走下来在当下一二线城市找一个计算机相关的工作是没有问题的
# 算法竞赛
如果你觉得自己从小逻辑思维特别厉害 / 高考数学 130+ / 有信息学竞赛基础的,可以试试这条路,比较泥泞,但也是非常有趣的一条路
大一:
在完成学校课程的同时,学习算法,刷算法题,参加蓝桥杯等比赛
大二:
继续精进算法知识,出去参加一些 ICPC 邀请赛,网络预选赛
大三:
冲击 ICPC 区域赛,拿到区域赛的牌子无论是考研/就业/出国的认可度都是很高的
当然,这三种学习路线也不是完全隔离的,可以根据自己的情况来调整,做结合取舍,我只是给出一个大的方向,大家都应该把大学过程自己独特的大学
# 竞赛
大学里竞赛很多,但不是每一个都对就业有帮助。与其漫无目的地参加各种比赛,不如有选择地投入。
优先选择那些由企业举办或行业认可度高的竞赛。
算法类:ICPC/CCPC,蓝桥杯
大创:挑战者杯/互联网+
OS类:龙芯杯,全国大学生计算机系统能力大赛(CSCC),全国大学生操作系统大赛
学科类:全国大学生数学竞赛,大学英语竞赛,数学建模
网络安全类:CTF
人工智能类:kaggle
一些企业举行的比赛:百度之星
交叉类:全国大学生电子设计大赛,RobotMaster机甲大师,
# 实习
“到大三才开始手忙脚乱地找实习,这是非常被动的”
实习的价值,不仅是简历上的一个亮点,更是检验你学习成果和职业方向的最佳方式。在真实的工作环境中,你才会明白:
- 企业需要怎样的工程师?
- 团队协作是怎样的流程?
- 你目前的技术栈有哪些短板?
所以,我会从大二开始,就关注实习信息。哪怕第一份实习去不了大厂,但只要能参与真实项目,就是宝贵的经验。尽早试错,才能尽早修正航向。
# 科研
虽然说我校的科研实力比较薄弱,论文产出不多,但是不影响我们通过互联网学习当前最前沿的知识
科研的过程:看论文/复现代码 -> 思考别人模型的不足 -> 提出自己的创新点 -> 做实验 -> 发表论文
当前比较热门的方向:计算机体系结构,操作系统与虚拟化,计算机视觉,自然语言处理(NLP),人机交互,类脑计算与神经形态芯片,量子人工智能
# 35 岁危机
网上大肆宣传计算机在计算机进厂之后要在 35 岁之后是一个不争的事实,我认为这其实没有必要过于担心
一方面,互联网大厂能让你在毕业后的前10年里面积累到别人干一辈子才能积累到的财富,有了这笔财富能合理的进行投资,创业,或者选择其他更多自由职业,也可以转到一些薪资没有那么高的但是需要计算机的行业
另一方面,那一些被优化的人往往都是视技术为生命的人,计算机的知识迭代非常快,而年轻人学习新事物的能力是强于中年人的,所以,在大学时代,我们要提前做到准备
学好英语,往往大部分程序员的英语都不太好,你英语能力突出能更好的和国外的客户交流,能更好得上升到管理层
加强人与人之间交流的能力,积攒人脉,人脉就是资源
所以,在学习计算机专业课的同时,学一下英语,学一些管理学的知识,对未来的帮助巨大!
# 一生一芯
正如封面所示,一生一芯计划能让你从零开始搭建一个 RISC-V 处理器,并且在校生可以免费流片,如果能在大学期间完成这个项目学习,是一件多么cool的事情
# Steam
steam 上有一些小游戏,可以边玩边学
# 寄语
后来才想清楚,其实大学是让我们在一段相对自由的时间里,去选择我们想要的生活
一定,一定,要把大学过程高中梦想中的模样!