这里给大家一个建议:以能力为导向学习,而不是以课程为导向学习。
什么是以能力为导向?
就是养成那些在你未来几十年工作中都能用到的思维能力、学习能力。
而课程学习的目的首要的就是为了习得能力,其次是专业技能,最后是考试分数。
以数学为例,数学带给你最重要的是逻辑思维,其次才是专业知识,最后才是考试技巧。
工作这么多年了,发现绝大多数的大学课程都忘了,但是学习他们让我养成的一些习惯一直用到了现在,帮助我解决了书本之外的很多问题。
或者说,让我有自学的能力。
没想到吧,第一门推荐的竟然是英语课。这是因为毕业后,你的大学知识都太基础了,你需要获得更高层次的知识,这个时候你有两种途径:一是等,等待他人将英文文献翻译成中文,这种方法意味着你永远拿着二手资料,永远比别人差了一步;二是自己看,而自己看就需要你有扎实的英语水平。
别问为什么论文没有中文的,因为最顶级最前沿的文献,不管是中国人的文章还是外国人的文章都是用英文写的。
英语依旧是影响力最大的语言。
说实话,大学的时候这门课让我啃了很久,但最后还是一知半解。但为了这一知半解,我也花费了很大的功夫,而这种花费,让我掌握了解决问题更高效的方法。有问题先上百度及Google,因为他们能解决你问题的80%,百度Google解决不了的问题,再集中问老师或者前辈,能少讨很多骂,偶尔还会有人夸你问的有水平。
说白了,这门课教会了如何去问问题。
这门课重要是因为对它的学习,让我搭建了完整的学习方法,举一反三,以后所有编程语言的学习都是在这个基础之上的。
详细完整的经验,很长,所以我整理在了另外一篇回答中,有兴趣的朋友可以点开看看。
程序员如何利用周末提高自己?
所谓编程思维很大程度上就是数学思维。一个人数学学的咋样基本上可以反应他的编程水平了。
而且你的数学理解力和你的英语能力结合起来能有意想不到的收获,偶尔翻一番国外数学期刊,看一看数学方法上的一些突破,把一些能用的运用到你的编程当中,能产生意想不到的效果。
后来我想很多大牛之所以厉害,就是他了解很多你不懂的新方法,然后巧妙地运用到了编程当中。
越底层的知识,可移植性以及可拓展性都是最强的,而且越是基础的东西,玩起来就越是高级。
对操作系统的学习,能让你更深入的了解程序的运行,比如内存的分配,比如多线程的运行过程,而你只有明白才能优化。
稀里糊涂是写不出好东西的。