前两天群里有小伙伴问我,说你写这么多文章涉及的领域也不少,这些是你本来都会的吗,还是你后来现学的?
我打开公众号看了一下,才发现不知不觉间已经写了超过300篇原创文章了。其实早在几个月之前就已经300篇了,只是后来由于和LeetCode的梁子,导致我把LeetCode的题解删了,这才少了不少。今天就和大家聊聊这些文章背后的知识积累也就是学习的话题。
初心
原本我做公众号的初心之一就是知识积累,通过写文章的方法,可以让我巩固之前学到的内容,也可以让我学到新的内容。
从这点来说,你们也可以看得出来,公众号的文章其实不完全都是我已经学会的。大部分当然是我比较熟悉和了解的,但也有一小部分其实也是现学现卖的,比如一些Python的高级应用,比如golang专题基本上都是这样。在我写文章之前,在这两个领域我可能都是刚入门的水平,也许写代码熟练一点,但是对一些高级的用法还不够了解和熟悉。所以在我写完这两个专题之后,我自己这两块也积累了很多。
这么多篇文章写下来,我最大的感受就是循序渐进。就像我之前所说的,那些刚好在我们舒适区之外的东西是最适合我们学习的。从零到一是最难的,之后我们只要按照顺序从一到二,再从二到三,依次前进即可。比如你Python还没写溜,上来就搞各种模型,倒不是说不能搞,只是根基不牢,会有很多问题。比如代码运行效率低,比如代码可读性差,开发能力也不行等等。
所以大家不管是学习一门新的领域也好,还是在某一个领域内提升,都要记得循序渐进的道理,千万不能着急。学习本来就是一件螺旋式上升的过程,聪明人也许能够一遍学会,但是几乎没有人可以做到一遍记住、过目不忘,都是要反复温习、巩固最终才彻底学会的。
学习渠道
学习渠道无非就那么几个,看书、看博客、看视频、上公开课。
这些渠道其实本身没有高下之分,只是我们选择的时候不能无脑选,需要因势利导。简单说说我自己的情况,对于我基本上不了解,或者是觉得很抗拒的领域,比如前端,我会选择公开课的方式。因为公开课有老师讲解,然后也有一些作业和练习,既可以让我学,也可以让我练习,非常有助于克服惰性和抗拒。如果在这些领域内选择看书的话,会出现一种状况就是看了很多内容,����,��ֵ但是上手写还是不会,也不知道怎么练,花了很多时间,到头来还是一头雾水。
如果是我已经有一定了解,相对比较熟悉的领域,想要进一步夯实能力或者是系统化地完善能力,我会选择看书。比如Python、golang、git等专题我都是照着书学的。我会选一两本业内知名度比较高,大众比较推荐的书,基本上这些书都是国外的,有中文版看中文版,没有中文版我也会硬着头皮看原版。
看书的话我也不会一字一句地照着读,会略过我相对比较了解或者是我觉得没有用的部分,针对性地对于那些我不太熟悉或者是我比较想要了解的部分着重学习。关于读书,古人有一句话叫做“六经注我”而不是“我注六经”。意思是说这些书应该为我所用,而不是我们跟着书走。我们需要明确我们读书的目的,在读书的过程当中,根据我们这个目的进行选择。
人生时间有限,我们也不可能读完每一本书,所以略读和跳读是非常必要的,千万不要一字一句照本宣科,这非常浪费时间。
对于那些我非常熟悉,但是一些细节有所忘却的内容我会选择博客。因为我比较了解的,指向性非常强,我知道需要查看什么内容。比如某一个算法或者是某一个数据结构,我可以直接在网上搜到相关的博客。如果我选择看书的话,我还需要找到有这个内容的书,再从书上找到相关内容,显然非常不方便。
关于博客有一个很大的问题就是良莠不齐,老实说现在优质的博客不多,筛选内容其实也需要不少时间。我们可以参考一些指导性的博客,比如教你如何入门,教你应该学哪些知识看哪些书的博客。如果是从零开始想要学一门技术,不建议选择博客。
学习方法
学习方法是老生常谈了,对于技术领域的学习无非是多练多想。
前文说了,除了天赋异禀的天才之外,其他人都是不可能做到过目不忘的。我们学一个新知识或者是新技能,也不可能看完书立刻就会,即使你觉得你会了,你真正上手去写代码,你会发现还是磕磕绊绊问题很多。这个就不叫学会,只有做到得心应手,不需要太多思考,这才是真正会了。
之前acm竞赛期间,我们这些菜鸡要写数据结构还需要参考模板或者是边写边想,那些大牛都是信手就来的。我认识的单挑银牌的学长,敲代码敲得比我敲字还快。这显然不是天生的,这也是一点一滴的苦功夫练出来的。其实没什么道理,就很简单,练。练一遍不行就两遍,两遍不行就三遍,几十遍下来你会发现也许还是不行,但是和一开始的时候完全不一样了。
这里我推荐如果喜欢玩游戏的同学去玩一下只狼、黑魂、血缘这类魂游戏,体会一下一遍一遍重来,最终打败boss的感觉。我当时打弦一郎死了至少50次,甚至到后来走路都在想他的出招。我个人觉得这类游戏能玩通关,那么学技术肯定没啥问题。反之,如果连玩游戏多死几次都惧怕,很难让人相信他会有足够的毅力坚持学习。实际上学一门技术也根本没这么夸张,一般练习10遍左右就足够了。
多想是说,我们要主动思考,不仅是我们学的内容,还有我们没想到的东西。举个例子,同样是协程,有些人是学了一个用法就完了,还有些人不仅学会了用法,还会去研究操作系统层面究竟是怎样实现协程的。然后发现原来协程其实就是程序自身仿照线程进行轮询,从而就能明白为什么协程效率比线程高,并且还能明白使用协程的时候大概有什么需要注意的。显然同样是学习,后者学到的东西不仅更多、更扎实,而且有一种延伸力,也就是对于没有学到的东西的一种感悟。
就好像拼拼图一样,有些人就是照本宣科一块一块地拼,有些人则会思考,我这块拼好了之后,它附近的拼图应该大致是什么样子,它和其他的拼图块之间有什么联系。显然后者的拼图效率比前者要高得多。
总而言之,世上没有什么学习方法是可以不用下苦功的。只是人与人差距太大,有些人的苦功可能在我们看来是捷径而已。想要出成果,想要成长,苦功是必须的。某种程度上来说,我觉得认清这点其实比这些方法本身有用得多。
我是承志,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、在看、转发)