一、找实习
这个我放在了第一位,因为我了解的比较有规划的学生,大一暑假就已经开始实习了。
在高中毕业以后,马上做项目+刷题学起来,然后就开始秋招春招找FMAG大厂实习,这个是最好的规划安排,没有之一,但大多数人其实做不到。
能做到的,绝对是家长+孩子自己都是非常有规划和为自己未来考虑的,百里挑一。
那么具体来说说找实习,而且我把它放在第一位,是有原因的。
1.早规划实习
要知道,大一,大二,大三,一共有三次实习的机会,大四马上毕业就是New Grad找全职了。所以最好的方式,就是每次机会都不放过,每次都能找到,越早越好。
这个问题的很多回答都是大量讨论考研,学习,ACM,课程,但在我看来,这些没有一个是重点。
为什么?我们学的这些东西,最终的目标,是就业,可能国内和北美不一样,如果我家孩子能在暑假去Google,Facebook这种公司实习,那些课程是最重要的吗?是公司实习的工业界内容多,还是花一学期学几门课带来的内容多?
高下立判。
2.为全职做准备
很多学生目标都是去FMAG这些大厂,那么你有实习,拿到全职的机会和offer的概率就会增大,很多人没有实习到最后找全职根本就拿不到公司的面试,你如果有Google,Facebook的实习,很多人是可以直接拿到return offer的,全职所有公司基本都会给你面试。
而且很多学生学校并非名校,那么实习的重要性就更高了。
二、课程
课程主要是两个点,一个是为了学习,一个是为了工作。
1.计算机体系架构
主要的计算机体系是:操作系统,数据库,计算机网络,计算机组成原理,这四门,你大学最应该学好的就是这四门课,外加一个语言吧,语言其实不是最重要的,因为你上班可能语言用的都不一样。那么很多人会说还有算法数据结构,往下看。
2.求职体系架构
北美求职三大体系,Algorithm,OOD,System Design。Algorithm就是数据结构+算法,这部分单独提出来,因为他太重要了,北美面试不会考操作系统,数据库,计算机网络,计算机组成原理这些东西,会有涉及但绝大部分都是考算法,也不需要搞什么ACM,说实话我是反对的,如果真心对那东西有兴趣搞可以,但如果你的算法能达到面试水平,已经足够足够了。
然后OOD和System Design,都是要好好额外学的课程,缺一不可。
三、项目
有好的硬核的项目才是最重要的,工业级项目,不要水项目,一旦简历有实习,马上替换掉项目,实习才是最重要的。
四、思想
计算机最重要的就是自学能力,规划好自己的路。
我不推荐大家像其他回答一样那么重视课程,你如果能去公司上班,很多学的东西远远比你学校里讲的更有意义,那些数学的很多东西其实就是学校学可能后半辈子都用不上,CS最重要的能力就是实战,不能学以致用都是纸上谈兵。