作为一名计算机专业的学生,该如何高效自学

前言

        之所以会有这篇文章是因为经过大学这两年半的自学经历,使我对于自学这件事情有了一些自己的思考和感悟,但这些思考和感悟在我脑中十分的散乱,于是便想着写一篇文章来整理一下。同时发布到网上也有可能有机会与别人进行交流,从而更正我的思考和感悟中可能存在的错误。

正文

        那么回到标题:作为一名计算机专业的学生,该如何高效自学?

        对我而言,自学的过程中,理论与实践相结合是最高效的学习方式。就拿Java语言的学习来说,在学习Java的基础语法之时就可以边学边写代码,甚至是照着书上的敲都可以,目的就是要培养出敲代码的感觉(注意,这个阶段不要在有自动补全的代码编辑器上写),因为我是真见过有的人学了一学期Java,敲过的代码不超过20行的人,所带来的后果便是连一个简单的Hello World程序都要敲半天,而且还是用两根手指来敲。然后在学完基础语法之后就可以去写一些简单的算法题了,比如AtCoder、LeetCode、Codeforces上的简单题,而不是接着去学习什么接口、反射等内容。刚开始可能会一道简单题都要写10多分钟,导致觉得很难受不想写,但这真的是十分必要的,可以让你编写代码解决问题的能力快速提升。并且当你写不出题去看优质题解时,看到哪些题解简洁美观的代码风格,以及对各种数据结构及其各种集合的巧妙使用,你会自然而然的效仿他们的代码风格以及学习数据结构和集合的使用。看到这可能有人会说,理论与实践相结合这是多少人都知道的事情,你说的这些也没多大意义。事实也确实如此,但我下面要讲的一个观点可能就有不少人都没想到了(至少我是因此走了挺多弯路的)。

        现在要讲的一个观点就是:在学习计算机领域的知识时不应该按照一门科目一门科目的方式去学习。也就是跟现在大多数学校一样,比如大一上完整的学完C语言、大一下完整的学完数据结构、大二上又完整的学完计算机网络等。那么应该怎么学呢?在细讲之前我先直接给出一个大致的结论:在自学过程中学习任何一门科目时,学习的深度不应该超过当前实践所需的深度,同时也不应该超出其它科目太多,尽量要并驾齐驱。

        可能有人会无法理解,但要指出的是这个结论的理解是要与“理论与实践相结合”这个观点所联系起来的。不同的是,这里要说的实践是进一步的实践,不再是说简单跟着书敲一遍代码或者写一些算法题这种简单的实践,而是要通过去做项目或者Demo来实践。相信我,这种确确实实的实践一遍相比看几遍单纯的理论所带给你的感觉以及给你留下的印象要更深刻。更不用说你在做项目或者Demo时大概率会卡住,这时便会迫使你带着问题去重新看理论,既能加深印象也不会让你在学习的过程中感觉太枯燥。但我要提醒的就是,这种学习方式刚开始时肯定是十分艰难的。一方面是实践就是比较难,尤其是刚从高中毕业的学生,先前已经习惯了通过写题目来实践的方式,现在让他们去做项目或者写Demo可能会无从下手,另一方面就是通过这种方式学习所花费的时间会比较多。那你可能会说,这样的话还算的上是高效吗?那我会说仅通过理论学习确实会快一些,但代价就是可能很快就会忘记,还可能会出现一学就会一做就废的情况。尽管理论+实践的学习方式也会出现遗忘,但你的印象会更深,并且在这个过程中所锻炼出来的动手能力也是十分重要的。

        因此在理解了我所讲的实践到底是什么后,便进入下一阶段:在自学过程中学习任何一门科目时,学习的深度不应该超过当前实践所需的深度,同时也不应该超出其它科目太多,尽量要并驾齐驱。比如很多同学一口气学完什么《Java编程思想》、《Spring实战》、《深入理解JVM》,然后一做项目,连NullPointerException都不会定位。而具体做法就是,假设你要做一个全栈项目,在刚开始时,对于前端,你大致只要先学会如何构建项目大致框架和制作项目接口页面就行了,而什么美化以及什么更简洁的代码编写都是目前不需要考虑的。对于后端,你也只要学会如何实现前后端通信以及如何编写简单的接口就行了,不需要在这个时候就一口气的把所有什么并发等内容全学完。等到这一阶段掌握之后,这时候你就可以根据你的设想来决定下一步又该学什么,同时也要去思考要怎样才能把下一步要学的同之前所学的所联系起来。对于不好直接在项目中实践的内容则可以先通过做Demo去实践,之后再想办法融合进项目之中。并且要记住,学习过程要记好笔记,记住在实践这一知识或者做到项目某一步时所遇到的难点是什么,以便之后你重新学习或者重新做项目时再次掉进同样的坑。而且做笔记的过程也能进一步提炼知识,锻炼编写文档的能力,代价同样时起步难,费时多,但能坚持就有好处。

        到这里,关于我思考及实践所得出的学习方法的理论已经讲完了。下面主要就是进行一些补充性的内容。

补充

第一个要补充的就是关于在面对一个新技术时,该怎样学习。对我而言:

  1. 我会先去了解这个技术的作用是什么,出现的背景是什么。
  2. 我要怎么样才能够用的了
  3. 这个技术的优势和劣势是什么,有没有其它类似的技术

第二个要补充的就是怎么通过做项目和写Demo来实践,关于这一点如果细讲的话内容就会太多了,而且也不好讲。但是,在这个AI时代,很多都可以通过AI来解决,比如你可以让AI来写个项目框架然后你就可以在理解框架构成后开始开发项目,或者你也可以让AI写个Demo,然后你就可以模仿并复现一遍等等。

最后的最后,我想说的是,每个人的情况都有所不同,我的学习方法和理论可能并不适合每一个人。因此,我的这篇文章更多的是提供一个参考,抑或是在你的心中埋下一颗主动去思考适合自己的学习方法的种子,至少我认为靠自己思考并实践得出的学习方法和理论才是最适合自己的。

到此,送大家一句话:靡不有初,鲜克有终。能坚持下来才是最重要的!

以上就是这篇文章的全部内容,因为我本人水平有限,因此可能会有许多错误,欢迎各位进行批评指正,共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值