《暗时间》读书笔记
更多精彩内容,请关注微信公众号:后端技术小屋
如果把大脑比作一个CPU, 我们日常的工作、生活、学习类似CPU处理前台任务,而暗时间
就像CPU处理后台任务,虽然看不见也没有产生直接成果,但是如果一个人能充分利用这些时间进行思考、消化平时所读所看,便能使得认识更系统、全面、深入,也能无形之中拥有更多的时间。
这就是《暗时间》这本书标题的由来。作者刘未鹏,微软程序员,除了老本行计算机外,作者对心理学、认知科学、时间管理等领域有着浓厚的兴趣。在春节回家的火车上一口气看完了这本书,书中关于如何读书、学习、思考、写作、竞争都有一些实操性很强的总结,结合自己这些年走过的弯路,阅读过程中竟有相见恨晚之感。本文为阅读《暗时间》的读书笔记。
思考
有人用 10 年才能领悟一个道理,因为他们是被动领悟——只有在现实撞到他脸上的时候才感到疼,疼完了之后还是不记得时时提醒自己,结果很快时过境迁抛之脑后,等到第二次遇到同一个坑的时候早忘了曾经跌过跟头了,像这样的效率,除非天天摔坑里,否则遗忘的效率总是大过吃亏长的记性。
专注
“投入时间”这个说法本身就是荒唐的,实际投入的是时间和效率的乘积。
任务切换的暗时间看似非常不明显,甚至很多人认为“多任务”是件很好的事情(有时候的确是),但日积月累起来就会发现,消耗在切换上的时间越来越多。
迅速进入状态的能力是可以锻炼的,根据我个人的经验,至少可以缩短到 3-5 分钟。
能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯。
规划
善于规划的人,会将目标分割成一个个的里程碑,再将里程碑分割成 TODO 列表
如果你对整个目标的几个重大步骤有清晰的界定,能够对每个步骤的耗时作出靠谱的上界估计,你就不会被不确定的未来,不确定的时间投入感到恐惧,就不会被这种不确定感压迫到过早退出。
兴趣遍地都是,专注和持之以恒才是真正稀缺的
靠专业技能的成功是最具可复制性的
一生的知识积累,自学的起码占90%
作为程序员如果没有查过 wikipedia ,没有看过几本原版电子书,没有在国内外主要邮件列表里面提过问题吵过架,没有用技术博客记录学习的独特体会,没有订阅技术牛人们的博客,怎么好意思说身在这个行业呢?
如何有效地记忆与学习
用自己的话复述一遍之后理解得更深刻
我们在从既有经验中总结知识的时候,应利用适当的抽象来得出适用范围更广的知识(而不仅仅是一个萝卜一个坑);另一方面,在遇到新问题的时候,同样应该对问题进行抽象,触及其本质,去除不相干因素避免干扰,从而有效提取之前抽象出来的知识。
- 养成习惯,经常主动回顾一段时间学到的东西(老生长谈了)
- 创造回忆的机会:
2.1) 经常与别人讨论,或者讲给别人听。
2.2) 整理笔记:经常整理你的笔记——如果你没有做笔记,现在就开始
2.3) 书写:将一段时间学习的知识按照一个主题系统地“串”起来大大地丰富了知识之间的关联,平添无数提取线索 - 联系 / 比较自身的经历:将别人的经历或者通过阅读和观察得来的经历和自身的经历进行比较,常常能够得到非常有价值的结论。
人类大脑最杰出的能力之一就是强大的归纳推理( inductive reasoning ),或者我们常说的:泛化、推广、举一反三、抽象。
观察、阅读,并别忘带着你的理性去审视(包括本文),弄清娱乐是娱乐,知识是知识,如果你想真正得到一些知识,最好过滤一下你的信息。
学习密度与专注力
尽管学习时间很长,但学习密度极低,效果也不会好
如果一个人要靠自制力去强迫自己不受干扰,那只能说还是寻常人 (mediocre) 。真正的效率源自于内心对一个东西强烈的热忱,也就是我们俗称的追求
“思维体力”的概念,所谓思维体力就是能够持续集中注意力的时间,注意力造就非凡专家,天才来源于长期的专注的训练。
《高效能人士的七个习惯》里面提到的第四代时间管理法则,即要事第一(指重要但不紧迫的事,即长远积累会对你今后人生产生重大影响的事)法则就非常有效。而对于不重要的事情让它们自己来找你就可以了,即中断式被动关注,后者可以防止空转轮询浪费的时间,从而把最集中注意力的时间利用在最重要的事情上。
高效学习与思考
- Google&Wiki (遇到问题做的第一件事情,也是学习某个东西做功课( homework )最先用到的东西。
- 看书挑剔,只看经典。如何选择经典,可以到网上做做功课,看看评价,综合分析一下。
- 做读书笔记。一是将自己阅读的时候的思考(包括闪念)总结下来,二是将书中的好例子摘抄下来。(这个习惯是一年前才养成的,发现受益极大。)
- 感到焦虑的时候不妨思考吧,甚至完全可以去理性分析和思考导致焦虑的问题本身,将其拆解,分析来源,在不知不觉中,大脑的工作重心就从情绪模块转向了推理模块了,而且这思考也可能顺带更有效地解决了导致焦虑的问题呢 😃
- 重要的事情优先
- 重要的事情营造比较大的时间块来完成。比如一本好书,或者一个重要的知识点,最好不要切得太琐碎了看,否则看了后面忘了前面。不利于知识的组织 & 联系。
- 善于利用小块时间
话说回来,为什么说起来容易做起来难,是因为“说”只是理性上承认正确,并没有考虑到我们每个人大脑中居住的那个非理性自我。这个自我以强大的情绪力量为动机,以习惯为己任,每时每刻都驱使着我们的行为。
时间管理
能否讲出来是判断是否真正理解的最佳办法
养成反驳自己的想法的习惯:在有一个想法的时候,习惯性地去反驳它,问自己“这个难道就一定成立吗?”、“有没有反例或例外?”、“果真如此吗?”之类的问题。
大量的新技术其实只是一层皮,背后的支撑技术其实都是十来年不变的东西。底层知识永远都不过时。算法数据结构永远都不过时。基本的程序设计理论永远都不过时。良好的编码习惯永远都不过时。分析问题和解决问题的能力永远都不过时。强大的学习能力和旺盛的求知欲永远都不过时。你大脑的思维方式永远都不过时
重视积累的强大力量,万事提前准备:计划订长一点,自然就可以多获得准备的时间。设想你若干年后会在做什么事情,需要哪些技能,现在就开始准备。
你的时间就是你的资源,你投入这些资源来掌握知识,所以到底用来掌握哪些知识是一个很重要的问题。仅仅遵循兴趣是不够的,人会对很多次要的东西产生兴趣,并一头钻进去浪费好多时间。所以判断一个东西值不值得学习是很重要的。
有时间吗?总结总结最近得到的新知识吧。一般来说,我在一段时间内学习的一些东西总是会在这段时间内一直在脑子里打转,一有时间空隙(譬如走路,吃饭)它们就会自己蹦出来,促使我去进一步思考和总结。
有时间吗?看本书吧。(传统的)阅读和思考永远优于所谓的在互联网上汲取新知识,后者往往浅表、不系统、乃至根本没价值
阅读方法
学习一个东西之前,首先在大脑中积累充分的“疑惑感”。即弄清面临的问题到底是什么,在浏览方法本身之前,最好先使劲问问自己能想到什么方法。一个公认的事实是,你对问题的疑惑越大,在之前做的自己的思考越多,当看到解答之后印象就越深刻
- 趁着对一件事情有热情的时候,一股脑儿把万事开头那个最难的阶段熬过去。
- 根据主题来查阅资料,而不是根据资料来查阅主题。
- 好资料,坏资料。好资料的特点:从问题出发;重点介绍方法背后的理念( rationale ),注重直观解释,而不是方法的技术细节;坏资料的特点是好资料的反面:上来就讲方法细节,仿佛某方法是从天上掉下来的,他们往往这样写“我们定义
- 有选择地阅读。
- 为什么看不懂?如果看不懂一个知识,一般有如下几个可能的原因: 1) 你看得不够使劲;2) 其中涉及到了你不懂的概念。这是技术性的不理解。这种情况就需要 Cross Reference 。 3) 作者讲述的顺序不对,你接着往下看,也许看到后面就明白了前面的了
- 如何在阅读之前就能获得对一本书质量的大致评估。1) 看作者。牛作者写的书一般都不错。2) 看目录和简介 3)看 Amazon 上的评价 4) 看样章。 Amazon 上一般都可以随机浏览一些章节的
知识结构
把知识分为 essential 的和 non-essential 的。对于前者采取提前深入掌握牢靠的办法,对于后者采取待用到的时刻 RTM (Read the manual) 方法(用本)。
对程序员来说,硬件体系结构是 essential 的,操作系统的一些重要的实现机制是 essential 的,主流编程范式( OO 、 FP )是为了满足什么需求出现的(出现是为了解决什么问题),是怎么解决的,自身又引入了哪些新的问题,从而适用哪些场景)
《 Computer Systems: A Programmer’s Perspective 》就是为此目的,针对程序员的需求总结出那些 essential knowledge 的好书。
再好的分析能力也并不是每个问题都能分析出该用哪些知识然后再去查手册的,很多时候是在工具和问题之间比较,联想,试探性的拼凑来解决问题;这就使得一个好的既有知识基变得至关重要。如果你不知道某个工具的存在,遇到问题的时候是很难想到需要使用这么样一个工具的, essential knowldge 就是使用最为广泛的工具
我在之前的 part 里面也提到我在学习新知识的时候常常问自己三个问题:该知识的(体系或层次)结构是什么、本质是什么、第一原则是什么。另外还有一些我认为是 essential knowledge 的例子:分析问题解决问题的思维方法(这个东西很难读一两本书就掌握,需要很长时间的锻炼和反思)、判断与决策的方法(生活中需要进行判断与决策的地方远远多于我们的想象)
学习一个小领域的时候,时时把“最终能够写出一篇漂亮的 Survey”放在大脑中提醒自己
我在南大的七年
我在博客上总结自己学习编程中走过的弯路,孟岩先生说到,是不是弯路,不是那么容易界定的。
我想,虽然有很多人本科就明白自己想做什么,我多花了两年多,总还不算太晚。
为什么一定要亲身经历了之后才能明白?
- 切身体验。亲身经历一个负性事件带来的情绪记忆要比看着或听说别人遭受一个同样的事件所感受到的强烈得多,形成的负性条件反射也远远更持久。
- 别人口中的故事。别人口中的故事也许只是事情的一个方面,难免受到他们自己观念的影响而产生偏见,
- 为什么。别人在告诉你一个道理的时候往往只能告诉你怎么 (how) 做,而难以说清为什么 (why) 要这么做,遑论“为什么一定 (have to) 要这么做”了
- 世界是复杂的。更何况,很多时候人们根本无法确切地向你保证 A 选项一定优于 B 选项:
- 情绪对照。经历了失败之后,我们在做“正确”的事情的时候便会觉得更理直气壮。如果没有经历失败后的糟糕记忆,我们就算理性地认识到目前的做法是更合适的,也很难从情绪上强烈地感受到这么做的“正确感”
这个世界有太多因素是不确定的,除了自己的因素比较可控之外,外界的机遇因素几乎完全不是能够控制或预测的。我们最多只能做好头脑准备,尽量不错失机遇
如果我们先入为主地不想听取别人的意见,就很容易自己说服(欺骗)自己说“情况不一样,所以道理不适用”(而实际上到底哪些情况不一样,为什么道理不适用,是不是真的不适用,我们根本就不去深究了)
如何解决这个“知识经验跨情境转移失败”的问题?除了多多反省观察自己之外,在面对问题的时候多抽象其本质也是一个有力的办法
从信息收集者的角度来说,世界上没有成功或失败,失败的事情中揭露出来的信息一点也不比成功事件中的信息少,或许往往还能得到更多的东西。
贪婪、嫉妒、短视、投机,这些天性也许在远古社会曾经成功地让我们的祖先占取了生存繁殖优势。然而现代社会的情境已经改变,分享、合作、交流、长远、诚实,这些才是在现代社会获得成就的方法
事实上,我们的直觉的确有不少时候是很灵的(《 Blink 》、《 Gut Feelings 》),但也有不少时候是失灵的(前文已经有例子了),正确的做法不是一概而论地听取直觉的意见或者一概而论地不听取,而是将它当成一个启发式的判断,然后利用自己的理性大脑对其进行进一步的客观的、逻辑的检验( Critical Thinking )
普通人从自己的错误中学习,聪明人从别人的错误中学习。人类最强大的另一个能力则是归纳和推理—— 我们在大脑中走得越远,在现实中就走得越稳。我们在大脑中失败的次数越多,在现实中失败的次数就越少
事实上,现代社会人最重要的能力之一就是能否从别人的错误中学习,往往是这类人能够迅速走在别人的前面,在别人跌倒的地方跳过去。如果我们事必躬亲,那么历史绝对不会进步,我们只会每个人从生下来开始都将别人犯过的错误再犯一遍,将别人趟过的泥潭再趟一遍,阳光底下就真的没有新鲜事了,历史就真的永远重复他自己了。然而历史告诉我们绝非如此,虽然很多人都会甚至需要自己犯一犯某些错误,但同样也有很多人能够在别人的错误中学习。
理智与情感
社会心理学研究发现,我们会对那些对自己有利的证据不加细查,而对那些对自己不利的证据则死抠烂打揪住一点小辫子就不放;同样,我们还会倾向于勤劳收集有利证据,并忽视不利证据。事实是,当我们内心的天平早已经倾斜了之后,看来荒谬无比的理由也变得光辉灿烂,别人很有道理的反驳也能被抠出“致命”漏洞。
Artemus Ward 曾经说过:并不是那些我们不知道的事情让我们陷入麻烦,而是那些我们认定自己知道,却实际上是错误的知识,让我们陷入麻烦
书写是为了更好的思考 书写是对思维的备忘: 书写是对思维的缓存:书写是与自己的对话
为什么你应该(从现在开始就)写博客
- 能够交到很多志同道合的朋友。我
- 书写是为了更好的思考。
- “教”是最好的“学”。如果一件事情你不能讲清楚,十有八九你还没有完全理解。绝大多数人应该都知道在程序员行业面试官经常要求你讲解一个东西给他听
- 讨论是绝佳的反思
- 一个长期的价值博客是一份很好的简历。
就像那句经常被人传阅的话:只做你最感兴趣的事情,钱会随之而来
问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白
我不想与我不能
简而言之自利归因就是把一件事情发生的原因归结为对自己有利的那种情况。
俗语有谋事在人,成事在天的说法。其实这话说的是,我们的努力是为了增大结果发生的几率,而不是为了那个确定的结果
无论外因如何,只要不是到了人力所不能抗的地步,发挥一下自己的自由意志和主观能动性,总能获得同样好的结果
困难的路越走越容易,容易的路越走越难。
什么才是你的不可替代性和核心竞争力
这个行业里拥挤着上百万聪明人,彼此之间真正的不同在哪里?不在于你学的是什么技术,学得多深, IQ 多少,而在于你身上有别人没有的独特的个性、背景、知识和经验的组合
- 专业领域技能:成为一个专业领域的专家,你的专业技能越强,在这个领域的不可替代性就越高。这个自是不用多说的。
- 跨领域的技能:解决问题的能力,创新思维,判断与决策能力,Critical-Thinking ,表达沟通能力,Open Mind 等等。
- 学习能力:严格来说学习能力也属于跨领域的技能,但由于实在太重要,并且跨任何领域,所以独立出来。如何培养学习能力,到目前为止我所知道的最有效的办法就是持续学习和思考新知识。
- 性格要素:严格来说这也属于跨领域技能,理由同上。一些我相信很重要的性格要素包括:专注、持之以恒、自省(意识到自己的问题所在的能力,这是改进自身的大前提)、好奇心、自信、谦卑(自信和谦卑是不悖的,前者是相信别人能够做到的自己也能够做到,后者是不要总认为自己确信正确的就一定是正确的,Keep an open mind )等等。
推荐阅读
- 30分钟入门Vim
- 30分钟入门GDB
- STL源码分析--vector
- zookeeper client原理总结
- redis实现分布式锁
- 推荐几个好用的效率神器
- C/C++关键字之restrict
- 现代C++之右值语义
- Python乱码九问
- Linux Shell脚本攻略读书笔记
更多精彩内容,请扫码关注微信公众号:后端技术小屋。如果觉得文章对你有帮助的话,请多多分享、转发、在看。