老程序员教你如何提高开发效率、成为大神4——快速学习方法

最近半年由于疫情影响,接了很多开发任务,也在没有足够资料的情况下不断的踏Spring Cloud的坑。好在最后还是挺了过来,紧张的外包开发工作让我也鼓起勇气开启了自己的创业之路。隔了半年之久,才想起更新专栏,还望各位读者海涵。

第四篇、快速学习方法

一、目标和路径

浩瀚的知识海洋,我们每一个真正做技术的人总会保持着对知识的渴望和希冀。也仍然会有很多人对于知识的理解仅限于在金钱观层面,这无可厚非,毕竟存在即合理。不论怎样,做任何事情(包括学习),目标一定不能唯一,路径一定是多样的

1、目标一定不能唯一:

第一目标很难达到,这时候就需要树立第2、3、4、5的目标,依次将目标降级,并且要选取不通的角度去选取目标、互相依赖,第5个目标即是我们现阶段最有可能达到的目标。举个例子,比如最初学习Java的目标可能是“依靠编程出任CTO、迎娶白富美、走上人生巅峰”(事业领域),那么对目标降级,第二个目标或许就会是“成为人人敬仰的技术大神”(社会地位);再次降级,第三个目标是“融入一群真正踏实做开发的人中”(社交需求);再次降级,第四个目标是“找到一份令人满意的工作,能自给自足”(生存需要);再次降级,第五个目标是“能享受到创造的快乐”(满足心情)。因此只要你努力的同时实现你所设想的5个目标,你会发现其实虽然互相有依赖关系,但你学习时做的每一件事情都可以让你的大脑快速分泌多巴胺。别人只有1个目标,你有5个目标,别人失败了就真的宣告自己失败了,但是你即便是第1目标失败了,还有4个目标可能是成功的。学习上的挫败感是杀死学习动力的罪魁祸首。当自己很艰难的时候,总要有什么东西给自己的信心保底。

2、路径一定多样:

每个人的经历都不一样,所以在学习时形成的个人版本也不一样,对知识的接受程度也并不一样。

比如一个班的学生同样是学水流压强,老师讲了泰坦尼克号这部电影里,很多人即使拼命游也还是被卷进海里,有的同学能学会,有的却学不会,可能只因为学不会的同学思维还卡在“泰坦尼克号是什么”上。视频教程上老师说Java的包其实和C#命名空间的含义是一样的……没用过C#的学生:What?

因此初学一个知识体系,至少要有两个知识来源,用来互相用他们自己的话、通过不同角度来解释你不懂的事情。如果两个知识来源对同一个概念产生了不一样的说法,则需要再次寻找第三个知识来源(知识来源包括官方文档、书籍、视频教程、百科网站)。切忌知识来源要精而美,避免杂而乱,不要只顾权威资料,碎片知识也值得一看。

有了多个知识来源的好处在于,即使是作者、老师讲错了,你也可以迅速理解含义,不影响你运用知识,没有绝对的对错,只有可能是所讲的角度和点你没有get到。知识一定是多维度、多角度形成的,而不是单一角度。比如说“猫”这个概念,维度1:“动物”,维度2:“不可以吃”,维度3:“很可爱”,维度4:“有尾巴,耳朵尖尖的”……。用同样的模式去理解“进程”这个概念,维度1:“程序运行就会有”,维度2:“可以杀死”,维度3:“会占用资源”,维度4:“操作系统控制的”……。只有多维度多角度去理解,知识点才能汇聚成知识。

二、认知决定效果

学习,其实是两个动作,一个是“学”(学会),一个是“习”(练习)。感觉自己懒,学不动、不想学、不知有什么用、没办法练习、没机会实践,甚至到自暴自弃,这都是自己对于学习的认知不足造成的。学习绝对不等于死读书、读死书,它是学会和练习的总和;而达成学会的目的,除了需要读书外,还需要接受培训、交流、讨论;达成练习的目的,除了实践外,还需要组织教学、具象演绎、凝练汇总。

接下来就是加强需要对自己的认知和定位,学习者大致可分为常人、学术者、明智者、未悟者。

常人对于知识的认知应当戒骄戒躁,学会了知识要避免骄傲(因为一学就会,一用就废),以免阻碍获取更高级知识的动力;如果仅仅从一个维度学会了知识便有了抑制不住的骄傲感,那恭喜这个人,他现在正在愚昧之峰上(达克效应),急需一个外力把他推向绝望之谷。当然如果此人读过本篇,便会知道如何把自己推向绝望之谷:找几个不同维度的知识来源、试验项目来验证自己。如果时间长了,开始习惯于曾经的知识体系,进入了一个舒适区,则需要时刻去主动寻找不同的对手,以此来警告自己:“比你厉害的人还在更加努力”,不怕自己很牛,就怕没有对手。学习要制定计划,如果遵守计划,就要给自己一个短期奖励;如果破坏计划,就要受到惩罚,言必行,行必果。

学术者对于知识的认知本就理性(我们大家常说的技术狂热爱好者),应当将重心放在与他人的知识交流上,增加情感上的共鸣。学术者使知识能快速增长的办法只有一个:获得大家的尊敬和礼遇。因此学术者要敢于去当别人的老师、敢于去和权威多沟通交流。获得了更多的赞美,学术者便更想研究更前沿的技术。一旦学术者的学者心态筑成,自尊就是每一块知识的基石,那么周围人一旦有蔑视甚至侮辱行为,学术者往往会在学术上失控,开始浪费资源、精力寻找局部最优解以自证观点,这是学术者值得注意的一点,这种情绪对学习知识完全无用,甚至会影响职业生涯。要为志同道合而治学,只接受积极情绪,拒绝消极情绪。

明智者往往对技术并不狂热,但常常一学就会,上手就能工作(传说中的天才)。事实上天才的学习自有其学习方法,天才的比例在人群中也并不低,但为什么明智者往往遇到新技术就会很局促。主要原因是因为明智者主要学习的动力是来自于实用主义,构筑的知识体系维度单一、片面(因为底层逻辑是:只靠极强的理解力通过单一知识来源便可以学习,为何要浪费时间再学一遍?快就完事了,毕竟自己是天才)。这与学术者对于知识的狂热而无差别的学习是不同的。如果未读过本文,往往连明智者自身也不知道自己是不是属于学术者。明智者彼此之间在技术交流时应避免炫技,因为炫不过就会产生抵触,比如“JS链式调用不优美,反复返回this会调用栈溢出”、“Java不能热部署很正常啊,因为元数据空间不能访问”,从而错过很多技术上的可能性。在遇到学术者时,因为学术者自带气场,应当理解其骄傲和自尊,避免嫉妒,有些技术明智者不理解很正常,所以当学术者张口闭口“MDD、BPMN、RBAC、RDF、RFID、AIoT、OpenBCI、LowCode……”的时候,多听听他们在讲什么,千万不要拿实用主义理论来驳斥:“它现在看起来没什么用”,也许3年之后就得用上,明智者必定要克服的就是恃才傲物。

未悟者在人群中属于少数派(如何学也学不会)。其未能开悟的原因主要是因为从最开始就放弃学习,安于现状,缺乏主观能动性,因此不能自我完成学习。那怎么能让未悟者开悟呢?这就需要有强执行力的管理者来办了:常常用冗余工作任务考察其应当掌握的知识点,把未悟者应该会的诈出来:“你说说,你这里写的到底是传值还是传址!”,未悟者思考片刻:“应该是传址”,然后开悟:“我好像是写错了”。往往未悟者是经由上一轮知识体系升级、新技术普及而被淘汰,且未能跟上节奏的常人转变的。因而未悟者若有一天突然想起应当改变一切的时候,需要从新知识体系的常识入手,循序渐进,越急躁,越容易失败。

常人在懈怠的时候会转变为未悟者;未悟者在被工作任务逼迫的情形下获取了主观能动性会转变为常人;常人意识到自身不足,从而逼迫自己,会成为明智者;明智者因否定他人,会逐渐转变为常人;明智者无差别的学习、构建庞杂的知识体系,会转变为学术者;学术者因在乎自尊而片面罗织能证明自己理论的证据,会转变为明智者。

三、几种快速学习方法

上面为何这般长篇大论目标、路径和认知,因为如果连自己都不了解自己要做什么,何谈学习。只有自己的大脑完全同意自己要学习,而不是仅凭着一腔热血,才有可能将技术学习这件事情做到极致。要把学习当做看风景一样对待,是一种美好的体验。

1、客观环境准备

如果决定连续几天好好学习,那么不妨把手机锁起来,晚上9点30左右睡觉,睡前洗个热水澡,第二天自然醒,吃过早饭后认真洗漱一下、连续一整天忌烟忌酒。书桌和电脑桌尽可能保持整洁,泡一杯茶开始一天的学习。好的身心环境才是一切美好的开始。事实证明,身体或心理上的任何一种痛苦,都会阻碍学习的效果。从一开始要相信自己可以高效的学习,这是你的本能,完全不需要逼迫自己。

2、读书的方法:2小时速读

注意,永远不要记笔记,这是很浪费时间的。先花费20分钟时间翻遍每一页,寻找所有没见过的概念,努力理解几秒,如果暂时不能理解则跳过。再重复这个行为2-3遍,此时一个小时过去了。你将会发现你奇迹般的理解了很多概念,又似乎多了很多的问题。没关系,我们把那些没弄明白的问题再放到网上搜一遍,约1个小时后,你对这本书的脉络就很清晰了。

什么文字不要去细读:一段文字以“随着”、“从XXX年代开始”、“XXX是XXX专家,做了XXX事情”、“人们意识到”……诸如此类的开头,就不必细读了,因为读了也记不住。

什么文字需要牢记:目录结构一定要记住,字体加粗的一定要记住,第一次出现的函数、API或者语法结构一定要记住。

原理是什么:作者在写书的时候,思维是跳跃的,常常会忘记解释清楚基本概念,因而在往后写的时候,一旦想起来便会在下文做出说明,毕竟之前的文稿都已经排完版,不想做出改动。所以看不懂没关系,可能翻到后面就解释清楚了。而很多作者在写书的时候也是基于一些很简单的点和脉络在撰写,甚至两张A4纸、一盘花生米、两瓶勇闯天涯就能说明白(也就差不多2小时)。但问题是为何要长篇大论:一是为了能够从不同角度阐述,二其实也是为了凑字数。因此不必细读的那些文字极有可能只是作者通过阅读其他文献,再用自己的语言诉说出来而已。作者粘了200行代码上去,核心想阐述的可能也就10行代码,1个API而已。

(因为大多数读者和观众只想满足自己对知识的占有欲,占有欲属于物欲的一种,因此书籍越厚越好、视频越长越好。谁也不会相信2-3张A4纸的薄册子会把知识讲明白。而知识是有价的,创造和传播都需要投入资源和成本,2-3张A4纸要是卖100元,你会去买么?对学术者,再深奥的知识,凝练成2-3张A4纸足够理解了。对明智者,凝练成10页A4纸也足够了。对常人,30-40页就已经是记忆极限。而对未悟者,纵使书籍再厚,也不会去翻看。)

3、视频教程的学习方法:2倍速+快进

一开始看视频教程采用2倍速播放很多人会不习惯,但毕竟时间就是生命,应当渐渐习惯2倍速学习视频教程。依旧千万不要记笔记,能用大脑记就尽力用大脑记住。当视频教程的讲师讲到你已经学过的地方时,要毫不犹豫的跳过。视频教程和书籍一样会存在很多冗余内容,录视频的老师会尽可能的搜集一些小故事、高级黑、笑话来让你感觉轻松,这些是完全可以跳过的。

另外一个问题就是,是不是看视频的时候要跟着做一遍?因人而异吧,学术者和明智者不需要做就可以快速理解。常人是需要跟着在电脑上操作一遍、巩固记忆的。而未悟者最佳的学习方式是项目和工作任务驱动,甚至要直接与KPI、OKR、末位淘汰制挂钩,没有压力的情况下,是不会主动看视频的,因此所有的操作,也要紧密和工作任务相关。

4、背诵API、概念和英文的学习方法:7x8分组背诵

背诵API的好处在于:1、可以快速上手一个新的语言、框架 2、形成命名规范和印象,自己写代码的时候有素材。 3、API互相组合套用的时候信手拈来,不必再百度去搜寻能不能做到。

有人会觉得背诵API、概念很傻,但是要在头脑中快速将API、概念组装成方案或预判可行性时,才会发现大脑一片空白。

以JS的Document对象API为例,可以在本上每7个一组记下这样的内容,中文一定要控制的字数越少越好

然后每个API按单词默读7次(如果单词不熟悉,需要按字母拼读,仅凭大脑默读,勿读出声音,驱动发声器官会使其机械疲劳,效率逐渐下降,这个苦不必去吃),再到下一个。这样一组API默读49次即可有印象(平均每个API耗时10秒,一组耗时约1-2分钟)。

接下来档上英文,每个API回忆一次(仅凭大脑回忆,勿手写),反复这两个步骤,直至这7个API能记住(平均每个API耗时2秒,一组耗时约15秒)。然后再挡住中文,看着英文API来回忆中文含义(很重要,因为大多数人很可能懂得中文到英文怎么说,可是看到英文依然不懂其含义)。通过这种方式在头脑中建立双向映射回路。

拿8张这样的卡片(或者笔记本上记着的8组),共56个API。按以下顺序进行:

背1组、测1组;背2组,测2组;(耗时约4分30秒)

测1、2组;倒测2、1组;(耗时约1分)

背3组,测3组;背4组,测4组;(耗时约4分30秒)

测3、4组;倒测4、3组;(耗时约1分)

测1、2、3、4组;倒测4、3、2、1组;(耗时约2分)

背5组,测5组;背6组,测6组;(耗时约4分30秒)

测5、6组;倒测6、5组;(耗时约1分)

背7组,测7组;背8组,测8组;(耗时约4分30秒)

测7、8组;倒测8、7组;(耗时约1分)

测5、6、7、8组;倒测8、7、6、5组;(耗时约2分)

测1、2、3、4、5、6、7、8组;倒测8、7、6、5、4、3、2、1组;(耗时约4分)

总计30分钟,即可完成56个API的记忆。注意每天不要超过这个量,否则大脑会陷入疲劳状态。

5、逻辑推理学习

涉及到逻辑复杂、具有算法的知识时,需要借助流程图、脑图、UML序列图、类图来剖析复杂知识体系的结构。特别是类似于支付、调度、流程、交互类的技术,不妨先把各个设备、角色、模块画在纸上,每接触一个流程,就画条线,一条线胜过千言万语,一切皆有输入、输出和其自身逻辑构成(PMP的重要思想,也是UML的重要思想)。最终形成的图形多看几遍,便会彻底记住。

比如下面这张图就很容易记忆了,如果用文字描述,需要大篇幅说明:

6、传道授业

接受知识最快的方式是给别人讲课。比较尴尬的是,我们现在可能并没有要听咱们讲的人。为了打破这个僵局,我们要为未来准备,学到的东西咱们立即做成MarkDown、PPT、Word、事先备上课,没准真的有一天就能让你来讲述所学的内容。

传道授业也是有方法的,如果你真的想把一节课讲得令人佩服,就不得不提到美国梅瑞尔教授提出的“五星教学模式”:1、聚焦问题;2、激活原有知识;3、展示论证新知识;4、尝试应用练习新知识;5、融汇贯通,举一反三,发散思维。

依据这样的原理而制作出来的MarkDown文档或者PPT,即使是有一天自己忘记今天所学的技术,回顾起来也能很快把技术吃透。

以上就是我多年来总结的一些学习方法,希望能帮助到各位。

猜你喜欢

转载自blog.csdn.net/yry0304/article/details/108588696