我在上一篇聊了聊程序员的面试(http://ruby-china.org/topics/10209),这一篇聊聊如何对某一点知识进行深入学习。
Andy Hunt 在《程序员的思维修炼》中谈到一个学习方法,这个方法的想要达到的目的是“为解决问题而阅读”。我觉得有必要分享一下,该方法叫做 SQ3R 阅读。SQ3R 是具体阅读步骤的首字母缩写:
1)为什么这个方法比普通地读书方法好? 首先 Andy Hunt 认为阅读是一种非常低效的学习方法(经过十多年地阅读,我非常同意他的观点),因为大脑处理语言的部分只占非常小一部分,而且很低效,大家应该都有过这样的经历:有些知识用文字描述很难理解,但用一副图画说明时,大脑却能很快明白。实际上大脑最擅长地学习方式是模仿,人类天生就会模仿,看见别人做什么,自己也会跟着做。
阅读如此低效,我们为什么还要进行阅读呢?因为太多知识我们没有这个环境去模仿,而大多数高质量的知识都被记录在书中,换句话说:“我们是不得以而为之。”好在,经过十多年地阅读,我们阅读的速度越来越快,吸收速率也越来越高。
首先看 SQ3R 的 1,2 步,这两步都是为了定位问题,定位问题有 3 个好处: 1,帮助我们理清思路。 2,减少不必要的阅读,打个比方,如果我们到一个地方旅行,我们是不会记得那些寻常小路,我们直奔风景名胜,用最快的交通工具,走最短的路线,欣赏这一块最棒的景色,即使我们要走过某些路程,但这些路程是为了我们能够达到目的。我们会阅读非必要的序言,前置知识,感想等,但我们最终是要找到问题解决方法所在。 3,增加阅读时的注意力。
而第 4,5 步,则是为了将解决问题的方法,经过复习,内化为一个人本身的能力。这 5 步都非常精辟,必不可少。 第 5 步中“与同事讨论”,除了增加记忆和理清思路外,还能够获得反馈,反馈会帮助你更加精确地理解知识
2)对于程序员来说,如何对某项知识进行主题学习? 我以前读过《如何阅读一本书》,里面谈到一个概念叫做“主题阅读”,意思是在读书时参考同类的经典书籍,就某个范畴的知识进行阅读。但经过应试教育的荼毒,我总是习惯一本书拿上来,了解个大概就顺着读了,一直到一本书读完,美名曰“有始有终”。在书比较少,难以获取的前提下,这样当然没什么问题,但在这个时代,书几乎是无法读完的,信息量大得让人接受不完,这时候主题阅读的好处就出来了。
我们之所以习惯于通读一本书,还有两个原因分别是“侥幸”和“安全”: “侥幸”在于人阅读时会带着这样一个假设:“这本书中很可能存在对我极有价值的知识,从某种程度上改变我的知识。”但事实上,作为改变自我的阅读,从心理学上来讲这种概率是非常小的。 而更多的人是出于“安全”而通读一本书,害怕自己遗漏了书中某个重要的知识点,说不定以后会用到。这种情况当然发生,但从效率上来看,是不值得顾虑的。打个夸张的比方:我猜测今年中国某个地方会发生地震,所以我现在就得卷铺盖逃离中国吗?
说到技术书籍,除非你是新手,在读一本很薄的入门书,否则任何时候通读全书都不是一个好的选择。
后来,我发现主题阅读仍然不够好,因为“某个范畴的知识”也实在太大,而在这个范畴中,你所用到的少之又少,而遗忘的速度却比你想象得要快。所以我只取出某一个问题,对该问题进行主题学习。比如今天的问题是“理解 Ruby 中的 self”,那么我会这么做:
1.《Ruby 元编程》第三章; 2.上 Ruby China 搜索关键词“Ruby Self” 3.上 Stack Overflow 搜索关键词"Ruby Self" 4.在自己的 RSS 阅读器和 Evernote 中搜索"Ruby Self" 5.在我的文献管理工具 Zotero 中搜索“Ruby self” 7.进行 Google blog 搜索关键词 8.如果你在这个知识点上依然有某些部分不理解,分解出不理解的部分,上论坛和 Stack Overflow 提问。 9.练习,并整理成笔记放进 Evernote;或者整理成博文和帖子在论坛进行分享。 10.获取论坛的反馈,你会因为帮助了别人,而让自己更有成就感,形成良性循环。
理解知识点时,尽量不要直接在 Google 上搜索,会浪费你很多时间。
3)改变你的好习惯。
相比与改变坏习惯,更难的是改变自己的好习惯,使之变得更好。
我从小自阅读中获益良多,阅读与无疑是一个好习惯,当我想改变学习方式,缩减阅读时间时,我的感性却告诉我,我在冒着这样一个风险:“不一定会变得更高效,相反一定会浪费时间,并在一开始一定会降低效率,除此之外,你得承受改变的痛苦,以及十多年因为这个好习惯所带来益处的质疑。”
但改变习惯后产生的复利,却会实实在在地,在大时间周期上改善你的人生。
如果你同意我的看法,对你有帮助,请点击下方的“喜欢”,如果觉得这篇文章太烂,或者有问题,请多拍砖。
谢谢^_^