怎样成为学习达人?
你有没有过这样的经历:想要学习一件东西的时候,第一反应是找一个老师来教,从来没有想过,自己可以自学会某样技能?努力尝试去学习了,却总是半途而废,好像总是摸不到门道?同样的内容,别人来讲就容易理解得多,自己去学却总是百思不得其解?
不知道如果你们有过上述类似的经历,你们是怎么看待这个问题的。是觉得自己太笨了,所以学不会东西?还是觉得自己知道自己有几斤几两,所以以后就安心找其他人来教自己呢?
其实,你们有没有想过,「可能自学本身就是一个需要学习的技能呢」?
怎么样学会自学,这是一个很大的问题,我没办法用一篇文章让你们学会。但是,针对你们在自学当中的问题,我这里列举了三条建议,应该会有所启发。
01「 控制挫败感,回归问题」
自学的最大敌人就是挫败感,人类天生不喜欢那些显得自己很愚蠢的感觉。所以当你被问题困扰而陷入深深的负面情绪的时候,其实是你身体里的基因在起作用。就好像人被打了会感觉到疼,吃到好吃的食物会心情舒畅一样,这些都是本能。
有一本书叫做《机器人叛乱》,这本书讲的是,我们每个人都是我们基因的奴隶。我们喜欢美女,喜欢美食,喜欢成就感,讨厌挫败感,讨厌当众出丑……等等等等,这些都是我们的基因在左右我们,并不是我们真实的思想。基因为了自己的延续,让我们做了许许多多并不是我们本意的事情。
我们无法控制本能,我们无法控制自己的情绪,因为这些都是不用经过大脑思考的东西。但是,我们面对本能,也并不是无能为力,「我们有一件法宝,那就是理性」。
所以,当你挫败感上涌的时候,请你想一想,这些并不是你的本意,都只是因为你体内的基因在左右你。如此一来,你很容易跳出情绪的范畴,恢复理智,从而冷静地看待面前的事情。佛道两家所说的灵台清明,保持本心,其实也是差不多的意思。
排除掉情绪之后,当你的关注力恢复到问题本身的时候,往往会峰回路转。你会发现所谓不可翻越的困境,不过只是几个具体的问题,并不像你想的那样是一团乱麻。
「而具体的问题,往往都是可解的」。
02「 目标驱动而非内容驱动」
很多人自学的时候,都是内容驱动。我今天学什么,明天学什么。想要通过内容的累积,达成学会某种技能的目的。
其实这样是不对的,学技能不是背单词,并不是单纯的一点一滴地积累。有点像是造房子,先打地基,再造架构,最后内部装饰。「也就是说技能的培养是有层次的,并不是分散的」。
每天垒砖头造不成房子,同样,每天零散地学习也很难学会技能。我们需要转变思路,从内容驱动转向目标驱动。「我们学习的目的不只是为了累积内容,而是为了实现一个个目标」。
拿编程举例,很多人自学编程,今天学分支,明天学循环,后天学面向对象。等这些都学会了,真正上手,还是写不了代码。为什么?因为编程是一项技能,背后需要很强的逻辑思维支撑,并不是分支、循环、面向对象的累加,而是这些内容综合运用的结果。
很多高校的编程课,都是一个一个的project。在学生学习的每个阶段,都会布置一个有一定难度的项目。这个项目不简单,做的时候会遇到一系列问题,目的就是要在解决问题的过程当中,让你学会某样技术。刚开始的时候,并不太适应,总觉得磕磕绊绊。但是到了后面发现,同样是自学,这样学习的收获和效果都要更好。
你可能会说,我是初学者,这些我都不会,我怎么来为自己设立合适的目标呢?
「其实很简单,我们有万能的互联网」。
03「 系统性思考」
这一点非常关键,自学能力的高低,其实就主要看这一点。
什么叫系统性的思考呢?
举个例子,如果把某个领域的知识网络比作是拼图的话,而系统性的思考则是我们在拼图还没拼好的时候就俯瞰全局的能力。你想要学习的方向需要学习哪些知识点?你已经掌握了哪些?你还要学习哪些?哪些的优先级比较高?……
这一系列的问题背后核心的能力就是系统性思考。
我们在学习的过程当中,学习到的知识往往是零碎的,有了系统性的思考,你就能知道在这些零碎的知识点中间,你还需要加入什么,使他们联系起来。当然,看清楚整个拼图当中的每一块太过理想,但是至少,看清已经获取的和需要拓展的边界是完全没有问题的。
「培养自己系统性思考的能力其实很简单,只需要你在学习、在实践的时候,能够经常停下来问问自己几个问题。」
整个的系统(包括软件、乐理、绘画等等,不是特指软件)是怎么构成怎么运转的?
当深入到细节时,我不了解的区域有哪些?
这些领域的细节当中,有哪些是可以通过推理大概猜测到原理的?
那些猜测不了的领域当中,与目前已知的领域有没有联系?
举个例子,如果我刚刚学完Java语言,以后想要往后端工程师方向发展,对于这些问题思考之后,能够得到什么呢?
●后端主要是基于服务端的java系统,对于前端的响应进行数据交互
●我目前已经知道怎么使用Java来编写代码进行数据的操作,但是对于如何和前端进行数据响应以及如何存储数据不太了解。
●通过已经知道的信息,可以猜测,一些后端的框架主要用于和前端交互,数据库用于数据的存储。
●后端系统的网络架构及彼此之间大规模协作的方式不了解,也无法通过推理得到。但可以肯定,它也一定基于java语言,并且通过遵守某种约定实现。
按照这个套路分析下来,是不是觉得清晰多了?自学本来就是一个不断思考,不断更新知识的过程。遇到问题、迷茫都不可怕,也没什么大不了的,只要你愿意思考,绝大多数问题都不是问题。