一直以来伴随我的一些学习习惯
2023-08-30 07:56

一直以来伴随我的一些学习习惯

本文摘编自《暗时间:思维改变生活》,作者:刘未鹏,出版社:电子工业出版社,题图来源:视觉中国

文章摘要
1. 使用搜索引擎,查询维基百科,养成主动搜索调研的习惯

2. 看书挑剔,只读经典,选择书籍时做足功课

3. 做读书笔记,总结阅读思考和摘录书中的好例子

4. 阅读是为了更好地思考,使用思维工具对书的内容进行实验

5. 重视知识的本质,掌握底层知识和基本的思维方法,提前积累强大力量

一、阅读与思考


1. 使用搜索引擎,查询维基百科。遇到问题最先想到的,也是学习某样东西做功课最先用到的工具。这虽然是一个很简单的经验法则,但是你会吃惊地发现如今还有多少人没有形成主动搜索调研的习惯。信息时代学会使用搜索引擎,学会区分信息的质量,几乎如同会自主吃饭一样重要。


可能有人会因为不确定自己查到的内容是不是可信,害怕错误的信息进入自己的大脑,害怕被误导,但这不是不培养这个习惯的理由,而只是说明更需要去培养搜索、调研、信息甄别、主动思考的能力,不然永远是因噎废食。

 

2. 看书挑剔,只读经典。如何选择经典,可以到网上做做功课,看看评价,综合分析一下。书籍是我们知识的主要来源,选择书籍时做足功课是对我们自己的时间负责。这和购物时对比各个品牌是一个道理。只不过奇怪的是,我很少见到有人买书像买衣服那样精挑细选。

 

3. 做读书笔记。一是总结自己阅读时候的思考(包括闪念),二是摘录书中的好例子。注意是“例子”,不是“道理”,因为同一个例子或故事不同的时候去重读,可能会有不同的感触和思考,而道理则经过了作者的思维加工,相当于加了一层滤镜。


有了 Evernote / OneNote 之类的工具来管理笔记,非常便于回顾,加深理解。很多时候,仅仅是用自己的语言重新表述一下就能极大地加深印象和理解。我觉得,人与人学习的差距不在资质上,而在思考的时间和深度上(后两者常常也是相关的)获得多少并不取决于读了多少,而取决于思考了多少、多深。

 

4.  “读”是为了更好地“想”。在阅读中,我们对知识进行再次的深度加工;书的内容是材料,思维是工具,阅读的过程就好比是使用思维工具对书的内容做各种科学实验:这本书提出了这个观点,它给出了哪些支持证据,如果要证伪这个观点又需要哪些证据,有没有相关图书或文献提供证据,我有没有可能从自身的生活经验、对世界的观察体会,去对命题进行证实或证伪,等等。


这些思维实验的过程其实就算是刚开始接触一个领域进行阅读的时候都是完全能够开展的,并不是因为是初学者就要以匍匐于地的姿态进行全盘接受式的自我洗礼。学会享受这个思考过程中的愉悦感,便不会仅仅满足于“学到了”“这个观点很新鲜”,或者“啊!作者说的恰恰正是我想的”,而是从被动阅读进入了真正的主动阅读。


在这样的阅读中,一篇文本可能会帮助纠正我们知识体系中有问题的结论或预设,可能会为我们已经相对确立的结论提供更深刻的佐证,可能会帮助我们弥补知识体系中的短板,进一步反思我们的知识体系中那些含糊、广而泛之的初步结论,可能打开了另外一条新的知识分支。


而另一方面,即便是文章本身看上去毫无逻辑,观点极端,论证偏颇,结构松散,也未必就对我们的思维成长没有益处,因为一篇文章并不是一个整体,如果打散了看,可能它在某一句话上提出了一个你从未去关注的视角,在某个极端上述说了一个你从未设想过的体验,在某一个论证上掰开了你从来没有思考过的隐含节点,甚至某个(你认为是)谬论激发了你去整理和梳理自己既有的知识体系进行反驳,这些对我们的思维和心智的成长都善莫大焉。


因此,我喜欢看论证严谨、立论端正的科学类文章,但同样也很喜欢看论证松散、经验主义、论点奇峰的文章。因为对我来说,真正没有太大意义的噪声不是这些,而是那些人云亦云、一知半解、浅尝辄止的内容。


如此我们的思维才得以真正的成长,而不是成为他人观点的跑马场,东边说打雷西边说下雨,无所适从。


刚开始这是一个痛苦的过程,因为我们在阅读的时候会无意识地过滤掉不符合我们的既有知识和心智结构的知识,以我们情感所钟意的方向对事实和观点进行“再解释”,而对不合我们立场、预期和情感诉求的观点弃之如敝履,对合我们立场、预期和情感诉求的观点则不细究其论证过程。


常常,我们看上去在阅读思考,然而内心的情感探照灯其实只是在字里行间寻找认同感,寻找评判中的自尊加持,寻找(只)吻合自己期许、令自己心安的断言结论。当我们内在的视线因为这样的心理诉求而聚焦在文章中的结论性语句上时,文中的逻辑、视角、材料便都成为一片模糊的光点。


缺乏思考的阅读其实很多时候和看电视没有太大区别,我们的指尖划过屏幕, 文字一行行流淌过我们的大脑,正如一帧帧电视画面,而内心固着的东西仍然固着,无视的东西依然无视,模糊的东西依然模糊,经验和知识之间的鸿沟仍然长存,于是再好的文章,也是道理穿肠过,执念心头坐。


稍微好一点的,则也常常是留脑不留心,因为缺乏深度介入的阅读,只不过是符号记忆,并没有和内心的深层结构整合,一到临事,还是原来的一套自动模式。


5. 提到思考,我有一个小习惯。在走路、吃饭、洗澡、做家务时思考;还有睡前放一个问题在脑子里面,在思考中迷糊入睡。这样一来,往往在不知不觉中多出来大量的思考时间。

 

将思考变成习惯还有一个很大的好处——避免焦虑。卡耐基用《人性的优点》一整本书讲了一个有效的做法来避免焦虑——底线思考法(“如果最坏的情况也不过如此,又有什么可担心的呢?”)。然而实际上还有另一个有效的做法同样可以避免焦虑,而且还能一举两得,那就是投入地做另一件事情。


不去想“喜马拉雅山上的猴子”的方法并不是使劲地告诉自己不去想“喜马拉雅山上的猴子”,因为那样就等于想了那只猴子,正确的做法是想些别的。用别的东西充满工作记忆,其他的神经活动自然会被抑制(大脑的一个模块处于活跃状态便会抑制另一些模块)


所以,感到焦虑的时候不妨思考吧,可以去分析到底是什么让你如此焦虑,在不知不觉中,大脑的工作重心就从情绪模块转向了推理模块。此外,随着对问题的认识因为思考的深入而深入,你也更有可能找到解决根本问题的钥匙,而不是在焦虑中无所适从。


6. 多看看心理学与思维的书,因为它们是跨学科的。知识分两种:一是我们通常所谓的知识,即领域知识;二是关于我们的大脑工作机制的知识,后者不妨称为元知识,虽说这也是领域知识,但跟其他领域知识不同的是,它能有效指导我们学习其他所有的领域知识。


7. 学习一项知识,必须问自己三个重要问题:


  • 它的本质是什么?

  • 它的第一原则是什么?

  • 它的知识结构是怎样的?


8. 学习和思考的过程中常问自己的几个问题和自省


  • 你的问题到底是什么(提醒自己思考不要偏离问题)


  • OK,到现在为止,我到底有了什么收获呢(提醒自己时不时去总结、整理学习过的东西)


  • 设想自己正在将东西讲给别人听(有声思考;能否讲出来是判断是否真正理解的最佳办法)


  • 设想需要讲给一个不懂的人听(迫使自己去挖掘知识背后最本质、往往也是最简单的解释)


  • 时常反省和注意自己的思维过程。尤其是遇到无法理解或解决的问题之后,最需要将原先的思维过程回顾一遍,看看到底哪个环节被阻塞妨碍了理解,问题到底出在哪里,并分析以后需要加强哪方面的思维习惯,才不会在同样或类似的情况下被绊住。对此,将思维的大致脉络写下来是一个很好的习惯。


  • 养成反驳自己想法的习惯。有了一个想法之后,习惯性地去反驳它,问自己“这个难道就一定成立吗?”“有没有反例或例外?”“果真如此吗?”“A一定导致B吗?”之类的问题。


  • 人的思维天生就是极易流于表面来理解事物的(参见 The Psychology of Problem Solving 第 11 章)。觉得自己理解一个问题了吗?条件反射性地问自己:你真的理解了吗?你真的理解了问题的本质?问题的本质到底是什么?目前我的理解是什么?我对这个理解感到满意吗?这样的理解到底有什么建设性呢?等等。


二、时间和效率


1. 趁着对一件事情有热情的时候,一股脑儿把万事开头那个最难的阶段熬过去。万事开头难,因为从不了解到了解基本的一些事实,是一个新知识暴涨的阶段,这个时候的困难是最大的。有人熬不过去,觉得困难太大就放弃了。不过,狂热的兴趣可以抵消对困难的感觉,所以趁着对一件事情有热情的时候,开一个好头是很重要的(这并不是说持之以恒就不重要了)


这就如同冲浪,你需要在大浪到来时抓住机会。当然,这也许是因人而异的,对我来说,我会在对一件事情有浓厚兴趣的时候非常专注地学习,完成很多基础工作,后面就会顺利一些了。


2. 重要的事情优先(详见史蒂芬·柯维的《高效能人士的七个习惯》或《要事优先》)。尽量避免被琐事骚扰,不重要的事情能不做就不做。有时候,紧急的事情之所以显得紧急,往往只是当事人觉得必须马上做完,或干脆就是紧他人之急,最糟糕的就是纯属性格上的原因,觉得每件事情都得第一时间完成。


很多看上去紧急的事情实际上并不是真的“不能再拖了”,有的干脆就不需要或并不值得去做。有很多事情都是可以先放一放甚至完全省掉的,否则,就整天被所谓“紧急”的事情牵着鼻子走了。


3. 重要的事情要创造比较大块的时间来完成。比如读一本好书,或者掌握一个重要的知识点,最好不要切得太琐碎了,否则看了后面忘了前面,不利于知识的组织与联系。


4.  善于利用小块时间。也就是《奇特的一生》中所说的“时间下脚料”,如何利用前面讲的几个方法。当然,也要善于创造整块时间(如通过“要事优先”原则)


5. 重视知识的本质。以软件行业为例,知识芜杂海量,而且总是在增长变化,很多人感叹跟不上新技术。应对这个问题的办法只能是:抓住不变量。大量的新技术其实只是一层皮,背后的支撑技术都是十来年不变的东西。


底层知识永远都不过时;算法数据结构永远都不过时;基本的程序设计理论永远都不过时;良好的编码习惯永远都不过时;分析问题和解决问题的能力永远都不过时;强大的学习能力和旺盛的求知欲永远都不过时;良好的思维方式永远都不过时。

 

6. 重视提前积累的强大力量。计划订长一点,自然就可以获得更多准备的时间。设想你若干年后会在做什么事情,需要哪些技能,现在就开始准备。你比别人往后多看一年,你就比别人早一年的时间来准备,这个差别是巨大的。一个 5 年计划便可以让你早获得从现在开始的 5 年准备时间。5 年中每天腾出半个到一个小时专心于某一件事情,认准一个方向,每次走一点,其实不要说 5 年,两年就会起到宏大的效应。反之,如果每次总是只盯着明天要做的事情去准备,那么你的准备缓冲区永远不会超过一天,当遇到那些需要长期积累的专业技能时,你才发现自己根本没有准备好。


我写博客的时间间隔很长,但总结一段时间的学习和思考的习惯一直都没有停止(博客文章对我来说是学习和思考的副产品,我并不为写文章而写文章),所以几年下来竟也写了不少东西。这就是一个简单的例子。你大致还可以从我的博客看出来我一段时间关注的东西。


一般来说,在一段比较长的时间里(少则半年至一年——譬如对心理学与思维的关注;多则几年——譬如对编程技术的关注),我的业余时间会被一个主题所充斥。反之,如果不知道目的是什么,就不知道往哪个方向上使劲,就容易产生无用功。


7. 抬起头来。人的思维是非常容易只见树木不见森林的(否则这个成语从哪儿来的呢?)。时不时抬起头来审视一下自己正在做的事情,问一问它(对现在或未来)有什么价值,是不是你真正希望做的。你学到的东西到底是什么?

 

它们重要吗?你需要在这个时候学习这些吗(见第 2 条)?你的时间就是你的资源,你投入这些资源来掌握知识,到底用来掌握哪些知识是一个很重要的问题。仅仅遵循兴趣是不够的,人会对很多次要的东西产生兴趣,并一头钻进去浪费好多时间。所以判断一样东西值不值得学习是很重要的。

 

8. 退订信息源(公众号、微信群、微博、知乎等),减少信息推送引擎造成的“被动阅读”。无差别关注大量信息源是个时间黑洞。就算仅仅是走马观花地扫一遍,也会无形中消耗掉大把时间。人有一个特点,我们一旦订阅了某个信源之后就会倾向于不肯退订它,心想也许某天那里会蹦出一个重要的信息。


这其实是源于人们不肯“关上一扇门(即便门内的收益概率极小)”的心理(参见《怪诞行为学》),这种心态也被称为FOMO(Fear Of Missing Out,唯恐错过);而实际上,关上一扇门,有时反而能够增大收益期望。


仔细审视你关注或订阅的信源,有哪些是真正有价值的,把那些没价值的或价值很小乃至于不值一看的,全都退订掉。不要舍不得,那些整整一周都没出现什么内容让你眼前一亮的信源,很大的可能是永远也不会出现。就算可能,也别担心你会漏掉什么宝贵信息,真正宝贵的信息在其他来源你也会接触到的。


9. 有时间吗?总结总结最近得到的新知识吧。一般来说,我在一段时间内学习的一些东西总是会在这段时间内一直在脑子里打转,一有时间空隙(譬如走路、吃饭)它们就会自己蹦出来,促使我去进一步思考和总结。永远不要认为自己对一项知识的把握足够深刻,“理解”的感觉很多时候只是假象。学会反问自己对知识到底掌握了多少,是很有价值的(如何反问,前面的总结中有提到)


10. 有时间吗?看本书吧。(传统的)阅读和思考永远优于所谓的在互联网上汲取新知识,后者往往浅表、不系统,乃至根本没价值。


11. 制订简要的阅读计划。选出最近认为对你最有价值的书,先总览一下,决定阅读的顺序(哪些章节可以优先阅读),然后每天看一点,并利用走路、吃饭、坐车或其他不适合带着书和笔的时间来总结看过的内容,建立知识结构,抽取知识本质,与大脑中以往的知识建立联系。


三、阅读方法


1. 根据主题来查阅资料,而不是根据资料来查阅主题。以前读书的时候是一本一本地读,眼里看到的是一本一本的书,现在则是一章甚至一节一节地读,眼中看到的不是一本一本的书,而是一堆一堆的章节,一个一个的知识主题。


按照主题来阅读,你不再是老老实实地看完一本书再看另一本,而是非常频繁地从一本书跳到另一本书,从一处资料跳到另一处资料,从而获知多个不同的人对同一个主题是如何讲解的。例如我有段时间学习蒙特卡罗算法,来回查了十余份资料,其中有三四篇论文和六七本书。


这是因为书再经典,你也不能指望它对其中每一个主题的介绍都是尽善尽美的,有些书对某个主题(知识点)的介绍比较到位,有些书则对另一些知识点介绍得比较到位。而有时候一篇紧凑的论文比一本书上讲得还要好。


我的书按主题分类,每个主题下面都有一堆书,当我需要学习某个主题的知识时(譬如贝叶斯学习或神经网络),我会翻开涉及这个主题的所有书,索引到相关章节,然后挑讲得好的看。那么,如何判断资料的好坏呢?


2. 好资料,坏资料。


好资料的特点:从问题出发;重点介绍方法背后的理念(Rationale),注重直观解释,而不是方法的技术细节;按照方法被发明的时间流程来介绍(先是遇到了什么问题,然后怎样分析、推理,最后发现目前所使用的方法)


坏资料的特点与之相反:上来就讲方法细节,仿佛某方法是从天上掉下来的,他们往往这样写“我们定义……我们称……我们考虑……我们进行以下几个步骤……”。根本不讲为什么要用这个方法,人们最初是因为面对什么问题才想到这个方法的,其间又是怎样才想出了这个方法的,方法背后的直观思想又是什么。实际上一个方法如果将其最终最简洁的形式直接表达出来,往往丢掉了绝大多数信息,这个丢掉的信息就是问题解决背后的思维过程。至于为什么大多数书做不到这一点,我在后面“知其所以然——如何学习算法”一文中试着分析过。


3. 学习一样东西之前,首先在大脑中积累充分的“疑惑感”。即弄清面临的问题到底是什么,在浏览方法本身之前,最好先使劲问问自己能想到什么方法。一个公认的事实是,你对问题的疑惑越大,在之前自己做的思考越多,当看到解答之后印象就越深刻。记得大学里面的课本总是瀑布式地将整个知识结构一览无余地放在你面前,读的过程倒是挺爽,连连点头,读完了很快又忘掉了,为什么?因为没有带着疑问去学习。


4. 有选择地阅读。很多人觉得我读书速度很快,其实我只是有选择地阅读。这里的选择体现在两个地方,一是选择一本书中感兴趣的章节优先阅读,二是对一本书中技术性较弱或信息密度较低的部分快速地略读。


一般来说,除了技术性非常强的书,大多数书的信息密度很低,有很多废话。有的书整个就可以略读,因为其中有意义的地方并不很多(但又不能绝对不读,毕竟还有一些重要的东西)


譬如《专注力》我花了不到两小时读完了,主要是看里面的一些例子,作者的解释我发现不需要细看,有了例子自己就可以分析,没有作者的解释先入为主反而可以分析得更彻底些。另一方面,读《社会性动物》就花了好几天,因为书中思辨密度很高,值得仔细分析甚至参与作者的思考。


一般来说在阅读的时候应该这样来切分内容:


  • 问题是什么?

  • 方案是什么?

  • 例子是什么?


如果是需要解释一个现象的(譬如《黑天鹅》),那么:


  • 现象是什么?

  • 解释是什么?

  • 支撑这个解释的理由是什么?

  • 例子是什么?


一般来说,这一二三四用不了多少字就可以写完了(假设只举一两个精要的例子),这样的无废话著作的典型是《合作的进化》。那为什么有些书,明明核心观点就那点东西(顶多加上几个精要的例子罢了)却写得长得要命呢?因为人的思维都有一个“联想”的特点,写着写着就容易旁逸斜出,而且作者自己也往往觉得引申出去显得自己挺厉害的,这时候很多与主题无关的废话就掺和进来了。因此,阅读时就应该有选择性地滤掉这些不相干的废话。


此外还有一种可能性就是大量冗余的例子。一般来说组织得比较好的书会有详细的目录和索引且一目了然,根据目录就可以先滤掉一部分(比如某个子章节的内容你以前是看过的),然后有时候作者还会举很多冗余的例子,如果你觉得印象已经够深刻了,这些例子完全可以不看


一些书就非常厚道,对每个观点只辅以一两个最经典的例子,譬如《这才是心理学》(旧译《对“伪心理学”说不》)这样的书我最喜欢。

 

5. 阅读的分类。我一般把书分为两类,一类是知识的,一类是思维的(当然,还有第三类,就是娱乐的,不作讨论)


一般来说我更倾向于阅读培养思维的,譬如《你的灯亮着吗》《决策与判断》《别做正常的傻瓜》《这才是心理学》《数学与猜想》《学会提问》(Asking the Right Questions )……因为思维方面的东西是跨学科的,任何时候都用得上,反之如果思维没有培养好,学习东西也容易走错方向或事倍功半。


当然,话说回来,光看思维方面的书,不去选择一门或几门领域知识,也是思而不学则殆。所以这里所谓“更倾向于”是指时间分配方面的。


6. 利用时间碎片:任何一点时间都可以用于阅读。举个例子,我从家里出发到公司的路上一般有 10 分钟左右,我发现可以读 2~5 页书(而且还不是小说类,而是知识类的书)。即便往少了算,每天 2 页,200 页的书 3 个月也就读完了。(而事实上有多少人一年下来也读不完一本书呢?)点滴的时间汇聚起来就是一个“长尾”,想一想,每天有多少个这样的 4~5 分钟。一个典型的上班族,每天通勤、吃饭、上厕所加起来的时间不少于 1 小时,如果善加利用, 3 个月又可以读完多少本书呢(豆瓣上有一个小组:“走哪都带着书”)?利用这种方式阅读,读完之后就像根本没有花任何时间一样。


另外还有个关键就是不能停,要让这个习惯变成每天吃饭睡觉一样,因为一旦停下来,就不知道什么时候才会再拿起书来读了。“三天打鱼,两天晒网”,到最后往往会变成了“整天晒网,永不打鱼”。一本再厚的书,只要每天看一点,总有看完的一天,而且完全算得出多久就能看完。反之则永远没有开始的那一天。而朗读版图书的出现,更增加了利用这些时间的可能性。


7. 为什么看不懂?如果看不懂一项知识,一般有如下几个可能的原因。


  • 你看得不够使劲。对此古人总结过——读书百遍,其义自见。虽然这个规律不是任何时候都成立的,但是从认知科学的角度看是完全可以解释的。我们在阅读的时候,注意力往往会有选择性地关注其中的某一些“点”,而忽略了另一些“点”,于是一遍看下来可能因为某一些忽略导致无法理解整体,或者干脆看的时候就没注意其中一些细节但又很重要。


    此外,大脑理解一样东西需要一定的处理时间,人脑的处理速度很慢,神经冲动每秒传输速度不过百米,所以不能指望看到哪懂到哪。最后,我们可能因为思维定势只从某个特定的角度去看一句话而忽略了从不同角度去理解的可能性。对于这类情况,仔仔细细地再多读两遍,试着去多理解两遍,往往会恍然大悟:“哦!原来是这样!”


  • 其中涉及你不懂的概念。这是技术性的不理解,这种情况就需要交叉索引。如果一句话中用到了你不懂的概念,那就去查,现在很多书都是电子书,直接搜索一下,或者纸质书看一下书末的索引就行了。


    奇怪的是,很多人看不懂也不分析一下为什么不懂,就直接放弃了。正如解决问题一样,问题卡住解决不了,第一时间要做的就是分析到底为什么解决不了,而不是直接求救。


  • 作者讲述的顺序不对。你接着往下看,也许看到后面就明白了前面的。


8. 如何在阅读之前就能大致评估一本书的质量。在深入阅读之前能够迅速评估一本书的质量可以节省很多时间。基本上有几个线索:


  • 看作者。靠谱作者写的书一般都不错。


  • 看目录和简介。一份好的目录和简介能够透露这本书质量的相当一部分信息。目录结构是否清晰,是否直白(而不是装神弄鬼),都是衡量的线索。


  • 看亚马逊上的评价,需要注意的是,除了看整体打分,更要看打分最低的人是怎么说的,因为小众意见往往有可能来自那些真正懂行的人(除了来踢馆的),如果在打分最低的评价里看不到真正有价值的反驳意见,就可以相当肯定书是不错的了。


  • 看样章。购书网站上一般都可以随机浏览一些章节,表达是否清晰,论证是否严谨,内容是否深刻,基本上读几页就能看出来。


9. 如何找到好书。有几个线索:


  • 同一作者的著作。


  • 亚马逊相关推荐和主题相关的书单(类似豆瓣的豆列)


  • 一本好的著作(或者一份好的资料——不管是书还是网页)在参考资料里面重点提到的其他著作。


  • 有时对于一个主题,可以搜索到好心人总结的参考资源导引,那是最好不过的。


四、知识结构


1. 抓住不变量。


我喜欢把知识分为本质和非本质的。本质知识需要提前深入细致掌握牢靠;非本质知识则可以概览,需要进一步了解细节时再深入查手册。


如何区分本质的和非本质的知识,想必绝大多数时候大家心里都有数。举几个例子:对程序员来说,本质的知识包括硬件体系结构,操作系统一些重要的实现机制,主流编程范式(OO、FP)是为了满足什么需求出现的,是为了解决什么问题,是怎么解决的,自身又引入了哪些新的问题,适用哪些场景。这些我认为都是本质的。


我想补充一点的是,并不是说硬件体系结构就要了解到逻辑门、晶体管层面才行(其实要了解到这个层面代价也很小,一两本好书就行了),也并不是说就要通读《计算机系统结构:一种定量的方法》(Computer Architecture: Quantitative Approach)才行。关键是了解那些重要的思想(长久不变的东西),而不是很细的技术细节(易变的东西)。《深入理解计算机系统》(Computer Systems: A Programmer's Perspective)就是专门针对程序员的需求总结出那些本质知识的好书。


再来说一下为什么需要预先牢靠掌握这些本质的知识。


1)根据周思博(Joel Spolsky)的说法,编程语言技术是对底层设备的封装,然而封装总是会出现漏洞的,于是程序员被迫下到“下水道”当中去解决问题。一旦往下走,漂亮的OO、N层抽象就不复存在了,这时候不具备坚实的底层知识就无法解决问题。


简而言之,这些底层知识会无可避免地需要用到,既然肯定会被用到那还是预先掌握的好,否则一旦用到再查是来不及的,因为本质的知识也往往需要较长时间消化掌握,不像 Ruby 的mixin(混入)或 closure(闭包)这类知识点,翻一下手册就能掌握。


英语也是这样的本质知识。在 PyCN 社区中曾看到一个招 Python 开发人员的帖子将英语列为必备技能,并未将自然语言处理列为必备技能,正是因为英语不是可以临阵磨枪的东西,而且作为知识的主要载体,任何时候都少不了它。如果不具备英语能力,这就会成为个人知识结构的短板或瓶颈,而且由于需要长时间才能获得这项能力,所以这个瓶颈将长时间存在。


另一方面,在问题解决的过程当中,如果不先行掌握必要的基础和本质层面的知识,甚至连思考都无从开始。再强的分析能力也并不是每个问题都能分析出该用哪些知识然后再去查相应手册的,很多时候是在工具和问题之间比较、联想,试探性地拼凑来解决问题;这就使得一个好的既有知识基础变得至关重要。


2)如果你不知道某个工具的存在,遇到问题就很难想到需要使用这样一种工具,底层知识就是使用最为广泛的工具,在编程当中遇到某些问题之后,如果缺乏底层知识,你甚至都不知道应该补充哪些底层知识才能解决问题。


3)首先必须熟悉你的工具,才能有效地使用它。须知合适的工具之强有时是无可匹敌的,但这一切得以“了解你的工具”为前提,甚至得以“了解目前可能有哪些工具适合你的问题”为前提。一门编程语言,你必须了解它的适用场景、不适用场景,比如继承能解决你的问题不代表继承就是最适合的方案,须知问题是一个复杂系统,解决方案往往总是引入新的问题。你必须了解它支持的主要编程范式,它的缺陷和陷阱,如果不知道陷阱的存在,掉进去也不知道怎么掉的。这些都是本质知识,如果不事先掌握,指望用的时候查手册,是很浪费时间的,而且正如第 2 点所说,正因为你不知道这些知识(如适用场景),所以以次优的方式使用一门语言自己可能还茫然不知。最简单的例子是,如果你不知道语言支持foreach,那么可能每次都要写一个冗长的循环,较常见的例子是不知道有很方便的工具库可以解决手头的问题,于是傻乎乎地自己写了一堆代码。人的评价标准常常是,只要解决了最醒目的问题并且引入的新问题尚能忍受,就行。注意,熟悉并非指熟悉所有细节,而是那些重要的,或者无法按需查找的知识。比如上面提到的:适用场景、不适用场景,编程范式,主要语言特性,缺陷和陷阱。

 

当然,以上作为程序员的本质知识的列表并不完备,关键是自己在学习新知识的时候要带着第三只眼来敏锐地判断这项知识是不是不变量,或不易变的量,是否完全可以用到时查手册即可,还是需要提前掌握(一些判断方法在上文也有所提及),并且学会在纷繁的知识中抽象出那些重要的、本质的、不变的东西。前文也提到,在学习新知识的时候常常问自己三个问题:本质是什么;第一原则是什么;该知识的(体系或层次)结构是什么。

 

另外还有一些我认为是本质知识的例子:分析问题和解决问题的思维方法(很难读一两本书就掌握,需要很长时间的锻炼和反思)、判断与决策的方法(生活中需要进行判断与决策的地方远远多于我们的想象)。波普尔曾经说过: All Life is Problem-Solving,而判断与决策又是其中最常见的一类 Problem-Solving。


尽管生活中面临重大决策的时候并不多,但另一方面我们时时刻刻都在进行重大决策,如,决定自己的日常时间到底投到什么地方去。如,你能想象有人宁可天天花时间剪报纸上的优惠券,却对于房价 1%的优惠无动于衷吗(《别做正常的傻瓜》《怪诞行为学》)?如,你知道为什么当手头股票的股价不可抑止地滑向深渊时我们却一边揪着头发一边愣是不肯撤出吗(是的,我们适应远古时代的心理机制根本不适应金融市场)


糟糕的判断与决策令我们的生活变得糟糕,这还不是最关键的,最关键的是我们从来不会去质疑自己的判断,而是总能“找到”其他为自己辩护的理由《错不在我》,Mistakes Were Made (but not by me) )。又如,现在是一个信息泛滥的时代,于是另一个问题也出现:如何在海洋中有效筛选好的信息,以及避免不好的信息左右我们的大脑(Critical Thinking)


关于以上提到的几点我在豆瓣上有一个专门的豆列(“学会思考”)


一个小提示:学习一个小领域的时候,时时把“最终能够写出一篇漂亮的综述”放在大脑中提醒自己,有助于在阅读和实践时有意无意地整理知识的结构、本质和重点,经过整理之后的知识理解更深刻,更不容易忘记,更容易被提取。


五、习惯的养成


最后,关于习惯的养成,必须要说明的是,经常看到有些人评论说,说说容易,做起来哪有那么容易啊(另一个无关习惯的“说起来容易做起来难”则是因为纸上谈兵不可能算计到现实中的所有因素,但那是另一个问题)


对此我要说的是,做起来当然不容易,所谓江山易改,本性难移。人的性格和认识事物的框架是长期积累养成的,并且人们非常珍视自己的信念(英语里面表达不相信某个东西“I  don't  buy  it”)。从进化心理学上说这是有依据的,一个经过时间检验的信念往往是更靠谱的。


可惜的是靠谱不代表最佳,一个信念能让你活下来并不代表能让你活得最好,详见《本能》(Mean Genes),更多的例子参见《理性犯的错:日常生活中的 6 大思维谬误》(How We Know What Isn't So)。我们评判一个信念的标准是赫伯特·西蒙(Herbert Simon)所说的“满意即可(Satisficing)”原则,并不是最优原则。

 

话说回来,为什么说起来容易做起来难,是因为“说”只是理性上承认正确,并没有考虑到我们每个人大脑中居住的那个非理性自我。这个自我以强大的情绪力量为动机,以习惯为己任,每时每刻都驱使着我们的行为。因为它掌握了 “情绪”这个武器,所以我们只能时时把它当大爷。理性是情感的奴隶。


那么,是不是就是说无法克服既有习惯了?以我的经验(以及观察到的别人的经验),还是可以克服的。第一条就是认识到习惯的改变绝不是一天两天的事情,承认它的难度。第二条就是如果你真想改掉习惯,就需要在过程中常常注意观察自己的行为,否则习惯会以一种你根本觉察不到的方式左右你的行为,让你功亏一篑。


有一个认知技巧也许可以缓解更改习惯过程中的不适,即把居住在内心的那个非理性自我当成你自己的孩子(你要去培养他),或者你的对手(你要去打败他)也行。总之不能当成自己,因为每个人都不想改变自己。这里转一个认知技巧的例子,李笑来老师在《把时间当作朋友》中提到他一个朋友用另一个认知技巧来克服背单词的枯燥感:


因为,一共要搞定 20000 个单词,而因此可能获得的奖学金是每年 40000 美元左右,并且连续四年没有失业可能(后来的事实是,他直到五年之后才获得了博士学位)。当时美元兑换人民币的汇率差不多是 1:8,也即每年奖学金相当于320000 元人民币。而如果一年的税后收入是 320000 元人民币的话,那么税前就要赚取差不多 400000 元人民币,每个单词应该大约值 20 元人民币——这还只不过是算了一年的收入而已。


所以,他终于明白背单词是非常快乐的。他每天都强迫自己背下 200 个单词。而到了晚上验收效果,每在确定记住了的单词前面画上一个钩的时候,他就要想象一下刚刚数过一张 20 元人民币的钞票。每天睡觉的时候总感觉心满意足,因为今天又赚了 4000 块!


注意,这跟自我欺骗不同。一来,我们的情绪系统只能这般对付。Synaptic Self 中提到,大脑中的新皮质(所谓“理性”居住的地方,尤其是前额叶)在进化历史上是较为新近的年代才进化出来的,跟底层较原始的模块(如主管情绪的杏仁核)之间的神经网络沟通并不是合作无间的,这就解释了为什么有些事情我们明明知道是对的,但就是不能说服自己,情绪还是在那里不依不饶地驱使你去做另一件事。二来,我们知道在干什么,所以不能算欺骗。


总之,对于习惯的改变,除了最重要的一日三省,加上一些认知技巧(其实每个人都是自己的心理学家,你可以自己看看能不能想出什么法子),并没有什么速效银弹,但是,知难而不退嘛,值得做的事情几乎总是如此。


作者:刘未鹏

出版社:电子工业出版社

出品方:Just-pub

副标题:思维改变生活


本文摘编自《暗时间:思维改变生活》,作者:刘未鹏,出版社:电子工业出版社

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP