anshijian

暗时间》,作者:刘未鹏,2011年7月出版。

2003年,刘未鹏在杂志上发表了自己的第一篇文章,并开始写博客。最初的博客较短,也较琐碎,并夹杂着一些翻译的文章。后来渐渐开始有了一些自己的心得和看法。总体上在这8年里,作者平均每个月写1篇博客或更少,但从未停止。

刘未鹏说——

写博客这件事情给我最大的体会就是,一件事情如果你能够坚持做8年,那么不管效率和频率多低,最终总能取得一些很可观的收益。而另一个体会就是,一件事情只要你坚持得足够久,“坚持”就会慢慢变成“习惯”。原本需要费力去驱动的事情便成了家常便饭,云淡风轻。

这本书便是从刘未鹏8年的博客文章中精选出来的,主要关于心智模式、学习方法和时间利用,《暗时间》的书名便来自于此。

记忆和推理

看书并记住书中的东西只是记忆,并没有涉及推理,只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是你的思维时间,也是人一生中占据一个显著比例的“暗时间”,你走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看和读的东西,让你的认识能够脱离照本宣科的层面。

学习和思考

人与人学习的差距不在资质上,而在花在思考的时间和思考的深度上。获得的多少并不取决于读了多少,而取决于思考了多少、多深。

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

  1. 它的本质是什么。

  2. 它的第一原则是什么。

  3. 它的知识结构是怎样的。

我只想说最最重要的,那就是: 让你自己成为一个持续学习和思考的人,并只写你真正思考和总结之后的产物,其他一切就会随之而来。

问题在想通了之后总是简单的,问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白(路越长走到底的人越少)。
所以,如果你习惯了思考问题,就总会有东西写,先有思考,然后有总结,然后在总结中进一步思考。

保持专注

能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯。

要掌握一门专业知识,其实每天一点时间,专注、积累和持之以恒也就够了。

模仿高德纳先生的名言:过早退出是一切失败的根源。 兴趣遍地都是,专注和持之以恒才是真正稀缺的。

在大学,我之所以还多少学了点东西,完全是仰赖了专注的习惯。而这个专注的习惯其实又是从小受父亲耳濡目染的,父亲会花一整天揣摩一个问题,父亲跟我说过他以前组装电视机时的故事——一切都似乎组装正确,但电视机就是不工作。他苦思冥想,不得其解,当晚,半夜从睡梦中醒来,想到了问题的症结所在。

所以,我在啃一些底层知识时如果弄不懂,也会一遍遍读,然后用走路吃饭坐车的时间在脑子里一遍遍去琢磨。我有很多重要的习惯受到父亲的影响,这些习惯自己一般觉察不到,但却默默影响了平时的一点一滴的时间分配和学习轨迹,这些习惯从纸上很难学到,但耳濡目染却会自然而然地学会。

实践与反思

孟岩先生说到,是不是弯路,不是那么容易界定的。 的确,也许真的有更好的路,但事前真的很难判断哪条路是最优的,我们能做到的,是把一条路走透了、走深了,只要不是一条太不靠谱的路,深入的过程中总会有很多的收获。只要不是太顽固,善于反省,总有一天也会逐渐意识到越来越靠谱的路。

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

ps:在叉路口,犹豫不前时,任选一条走下去,在实践的过程中不断反思校正,总会走上属于自己的正确的路;
选择了,走下去,错了也会成对的;

英语学习的重要性

一旦熟练掌握了语言这个平台,背后就是一扇大门,通向一个海量的信息源,后来我的信息获取绝大多数便来自于英文,其中尤数wikipedia和英文版的书为多。

如何看清一个人的深度

有一句话说:看一个人,只要看他读的书和见的人。还是很有道理的,这两者是一个人成长中最有价值的信息来源。

改变顽固的习惯

有一个认知技巧也许可以缓解更改习惯过程中的不适:即把居住在内心的那个非理性自我当成你自己的孩子(你要去培养他),或者你的对手(你要去打败他)也行。总之不能当成自己,因为每个人都不想改变自己。

理解事物的本质

设想自己正在将东西讲给别人听(有声思考;能否讲出来是判断是否真正理解的最佳办法)。设想需要讲给一个不懂的人听。(迫使自己去挖掘知识背后最本质、往往也是最简单的解释)

主题学习

根据主题来查阅资料,而不是根据资料来查阅主题。以前读书的时候是一本一本的读,眼里看到的是一本一本的书,现在则是一章、甚至一节一节的读,眼中看到的不是一本一本的书,而是一堆一堆的章节,一个一个的知识主题,按照主题来阅读,你会发现读的时候不再是老老实实地一本书看完看另一本,而是非常频繁地从一本书跳到另一本书,从一处资料跳到另一处资料,从而来获得多个不同的人对同一个主题是如何讲解的。

在这段时间内,我的业余时间会被一个主题所充斥。反之,如果不知道目的是什么,就不知道往哪个方向上使劲,就容易产生无用功。

学习一个小领域的时候,时时把“最终能够写出一篇漂亮的Survey”放在大脑中提醒自己,就能有助于在阅读和实践的时候有意无意地整理知识的结构、本质和重点,经过整理之后的知识理解更深刻,更不容易忘记,更容易被提取。 杨军在 TopLanguage 上也曾分享了三篇非常棒的学习心得的文章,字字珠玑:

ps:给自己定一个主题,然后围绕这个主题查找各种学习资料,不论往那个方向使劲,大方向不会错,不会跑出这个圈圈;你所走过的弯路也都是这个圈内宝贵的经验;

讲清楚思维过程

好资料的特点:从问题出发;重点介绍方法背后的理念( rationale ),注重直观解释,而不是方法的技术细节;按照方法被发明的时间流程来介绍(先是遇到了什么什么问题,然后怎样分析,推理,最后发现目前所使用的方法)。坏资料的特点是好资料的反面:上来就讲方法细节,仿佛某方法是从天上掉下来的,他们往往这样写“我们定义… 我们称… 我们进行以下几个步骤… ”。

人们最初是因为面对什么问题才想到这个方法的,其间又是怎样才想出了这么个方法的,方法背后的直观思想又是什么。实际上一个方法如果将其最终最简洁的形式直接表达出来往往丢失掉了绝大多数信息,这个丢掉的信息就是问题解决背后的思维过程。至于为什么大多数书做不到这一点,我在这里试着分析过。

正如解决问题一样,问题卡住解决不了,第一时间要做的就是分析到底为什么解决不了,而不是直接求救。

知识结构: essential的和non-essential

抓住不变量 我喜欢把知识分为essential的和non-essential的。对于前者采取提前深入掌握牢靠的办法,对于后者采取待用到的时刻RTM (Read the manual)方法(用本)。

关键要了解那些重要的思想(很长时间不变的东西),而不是很细的技术细节(易变的东西)。《Computer Systems: A Programmer’s Perspective》就是为此目的,针对程序员的需求总结出那些essential knowledge的好书。
essential的知识也往往正是那些需要较长时间消化掌握的东西;

英语也是这样的essential knowledge——上次在PyCN上看到一个招Python开发人员的帖子将英语列为必备技能,却并不将自然语言处理列为必备技能,正是因为英语不是可以临阵磨枪的东西,而且作为知识的主要载体,任何时候都少不了它,如果不具备英语能力,这个就会成为个人知识结构的短板或瓶颈,而且由于需要长时间才能获得这项能力,所以这个瓶颈将持续很长时间存在。我们曾经在 TopLanguage 上讨论过如何花最少的时间掌握英语)

如何阅读wikipedia

阅读 Wikipedia时要严重注意每个条目后面的 Reference,一般来说这些参考资料本身也都非常经典,其价值不亚于 Wikipedia条目本身。

书写是为了更好的思考

在开始书写你的想法之前,我知道很多人不书写的原因是因为觉得没有什么可写的,其实这是一个怪圈,你越是不开始书写,总是拿有限的思维缓存去默想一个问题,就越是没有内容可以写,如果你逼着自己将一些不成熟的想法写下来,看着自己写的内容,试着进一步拓展它们,就有可能在理性的道路上走得很远,很远。

为什么你应该(从现在开始就)写博客

一开始的时候你是因为要写博客而去使劲地思考和总结,指望给出令人眼睛一亮的东西,到了后来,就变成了因为你习惯了思考和总结,因为你意识到书写是更好的思考,你就必须使你的想法成为文字。至此本和末就会各归原位,不再颠倒。

遇到问题为什么应该自己动手

为了解决一个内存泄漏的bug,你学习了一堆底层知识、了解了一堆调试工具、学习了若干wikipedia页面,表面上看来,仅仅为了解决这一个小bug你的时间花销未免太大了点,然而关键就在于,它的收益远远不止于解决了这一个小bug,下次你遇到任何类似的bug的时候就能够哐当两下就解决之了。 

生活或工作中,很大程度上你遇到的每个问题都不是孤立的,既然你遇到了某问题,那么很大的可能性你以后还会遇到类似的问题。

做笔记的窍门

提醒自己在摘抄的笔记上面多加几个自己熟悉的关键字,比如用自己的话来概括一下主旨,因为自己的习惯用词和作者的习惯用词往往不一样,在阅读作者的文字的时候,你也许下意识里会用自己的习惯词汇来重新表述这段文本,并存放在记忆中,结果一段时间之后当要寻找的时候大脑中只记得自己的说法,却不记得作者原话了,然而为了检索到原始文本你必须要知道作者是用什么词汇来表述的。

为了弥补这个问题,可以在存放文本的时候加上自己的一段概述,这似乎是一个不错的方案——我们平时在学习和记忆的时候也经常听到类似的提倡:用自己的话复述一遍之后理解得更深刻(实际上是更容易记住和提取出来——知识还是那些知识;此外用自己的话复述也常常触发与自己的知识体系中其他知识的联系,进而编码进更多的记忆提取线索

总结既有知识,抽象高层次知识

我们在从既有经验中总结知识的时候,应利用适当的抽象来得出适用范围更广的知识(而不仅仅是一个萝卜一个坑);另一方面,在遇到新问题的时候,同样应该对问题进行抽象,触及其本质,去除不相干因素避免干扰,从而有效提取之前抽象出来的知识。

编程语言的惯用法

对于C++开发来说尤其重要,因为在C++里面,同一件事情往往有很多不同的(但同样都有缺陷的)实现,而实现的成本往往还不低,所以C++社群多年以来一直在积淀所谓的Best Practices,其中的一个子集就是Idioms(惯用法),由于C++的学习曲线较为陡峭,闷头写一堆(有缺陷)的实现的成本很高,所以在一头扎进去之前先大概了解有哪些Idioms以及各自适用的场景就变得很有必要。

搜索:C++ Idioms(惯用法) python Idioms,你能找到一些语言的捷径;

书单计划

我一向认为,很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别。

读好书是如此的重要,因为好书往往带领你去到更好的书,更大的世界。

“书单计划”能很大程度上起到强鉴别器的作用,看了就是看了,必然能学到东西,没看就是没看。知道和不知道,区别是本质的。其实很多企业内部培训,根本上其实还不就是叫员工去看之前没看过的书或者资料嘛。最后,除了鉴别作用之外,它还是一个清晰促进的目标,是完全不花精力的培养。

注: 列出主题书单.招聘必读的十本书..

GitHub+书单,你最好的简历

从你的GitHub旅程开始,你就已经一脚踏进了真正的企业,而企业的面试也已经开始。 书单+GitHub,就相当于一个两年左右的面试。 没有什么面试比持续两年的面试更具有信息量。

新手更能写出教程

最适合将一个东西讲给别人听的时候并不是等懂了很多年以后,而是刚刚弄懂的时候,这个时候从不懂到懂的差别记忆还非常鲜明,能够清清楚楚地记得到底是哪些关键的地方是最折磨人的,也最能够站在不懂者的角度来思考问题。像波利亚这样,成了大师还能够站在不懂者角度去换位思考的,可以说是凤毛麟角。

知其所以然

这是一个树状的知识结构,越往上层走,需要记忆的节点就越少。所谓触类旁通者,其实便是因为他擅长去理解解法背后的更具一般性的东西。所以我还有一个习惯,就是看到美妙的证明和解法总是会去一遍又一遍的去反复揣摩,试图理解想出这个证明的人到底是怎么想出来的,有没有什么一般性的方法可循。

很多时候,在这样揣摩的过程中,你会理解到更深刻的东西,对问题性质更深刻的认识,对解决问题的思路更深刻的认识,这些认识不仅对于你理解当前这个定理或问题有极大的帮助,同时也有助于你解决以后会遇到的表面不同但本质一样的问题。

知道怎么做是从正确(高效)解法得到的,而知道为什么必须得那样做则往往是从错误(低效)的解法当中得到的。

一本从思维角度来讲问题求解的书则可以一遍遍将你置于不同的问题场景下然后在该提醒你的时候提醒你,让你醒悟到“哦,原来这个时候也应该想到这个啊。”,做多了这样的思维演习你就会逐渐从中领悟到某种共性,并将一些思维习惯得到强化,于是终于能够在需要运用某策略的时候能适时的想起来了。

金出武雄在《像外行一样思考,像专家一样实践》中说写论文应该写得像侦探小说一样,我很赞同。

里面提到“思维体力”的概念,所谓思维体力就是能够持续集中注意力的时间,注意力造就非凡专家,天才来源于长期的专注的训练。

规划:分割你的任务

善于规划的人,会将目标分割成一个个的里程碑,再将里程碑分割成TODO列表。前阵子流行的GTD方法学,核心的理念就在于,如果你把任务分割了,你就有了进度条,你就知道,事情在不断的进展,你总会完成任务或到达你的目标,你会有一个时间估计。反之如果没有这个分割,整个的任务或目标对你来说就只有两种状态——“完成”和“未完成”

领导的作用:确定正确的方向

程序员基本上是去解决一个定义好的问题,去实施一个定义好的方案。然而决策问题就不一样了,决策问题是需要去定义问题是什么,以及权衡最佳方案是什么,不管是决策技术架构还是决策商业策略,都是非常复杂的思维过程,需要综合和权衡大量的信息,这种能力就不是简单楞着头搞下去能练出来的了,很多时候需要抬起头来看,免得只见树木不见森林。

如何权衡最佳方案实际上是一个复杂的统筹规划。更重要的是,你往往甚至都不知道问题是什么,能够从纷繁的信息中抽象出问题,是一种极大的能力。这里推荐你的灯亮着吗?:发现问题的真正所在》 和失败的逻辑:事情因何出错,世间有无妙策 

不要为技术而技术

CodingHorror 的作者最近在博客里面跟着 Steve Yegge 同学宣称,如果有一件事情是他想教给程序员同学们的,那就是 Marketing 。无独有偶,有一次吃饭的时候鲍志云同学也提到: Marketing Sense 是很重要的。

其实也就是不要总想着写牛代码,用牛语言技术,不要落入为技术而技术的怪圈,而是首先想明白做的事情有什么价值,先弄清做什么,为什么做,再去想怎么做,这样后面的功夫才花的有价值。

学习这件体力活

学习——本质上是个体力活(尽管是有一定方法的体力活),这个体力活大致分为两步: 将外界(书本上的)知识转化为外显记忆。 通过不断练习,将外显记忆转化为内隐记忆

而第二步又包含两个过程: 将关于思维方法的知识转化为内隐记忆从而不知不觉就遵循。 将关于事实知识(例如“定理”、“性质”)的提取线索们转化为内隐记忆从而看到XX就能想到YY。(参考《找寻逝去的自我》第二章“记忆的建构:对现在和过去的编码和提取”) 关于第一点有本不错的书——《学习的艺术》。

(下载iPhone或Android应用“经理人分享”,一个只为职业精英人群提供优质知识服务的分享平台。不做单纯的资讯推送,致力于成为你的私人智库。)

作者:大CC
来源:大 CC 的博客