求知欲的克制-自己的毛病

toplanguage看到一篇好文,这也是我一直存在的问题. 我在解决一个问题的时候,遇到一个新知识点,马上谷歌一下,谷歌了一个牛人的博客把所有的链接打开挨个看, 最后 干脆谷歌关键词”牛人博客 ,技术牛人”,很可怕, 自己也深刻认识到了这个问题的严重性. 正好toplanguage上讨论的一个主题可以给大家分享

2008/12/18 吴彧文 <atyu@gmail.com>

> 人对于未知的事物总是充满了好奇心,然而在知识爆炸的今天,一个人由于其精力的有限性,必须对想要学习的知识进行一定的取舍,分清主次而避免在一些琐碎的,无关­的主题上消耗太多精力。
> 但是现在的信息传播方式也是具有一定侵入性的,比如你订阅的RSS,
> 邮件列表等,它们会常常通知你:”嘿,伙计,我这里又有新东西了”,于是很有可能某个新鲜的主题又勾引起了你求知的欲望。即是这个主题与你的学习,工作,甚至兴­趣一点关系也没有,仅仅是因为”这个东西还蛮有意思,我居然今天才知道,嗯,要学习学习”这个念头就有可能花掉大量的时间和精力。人即使在求知上也是很贪婪的,­一个问题未能完全弄懂总是未免有点意兴阑珊的味道。我的经验是,如果思考一个问题而没有得到结果,那么在随后的几天时间里大脑都会有意识或无意识地给这个问题分­一定的时间片。毫无疑问,这样会干扰正常的工作和学习,因为只有专注才能获得最高的效率。如何克制住自己对某些知识主题的求知欲?我想听听各位牛人们的意见。
> 说到牛人,还是一个问题就正是关于牛人们的,当今的网络时代是牛人横行的时代,而且还是没有最牛只有更牛的时代。可以理解地,牛人总会赢得大多数人的尊敬,而牛­人的知识结构与学习路线也会影响很多人对知识的取舍。但是客观来讲,每个人都有自己熟悉的专业领域和知识背景,牛人们的牛知识可能对自己大有裨益,也有可能完全­是琐碎而无用的(只是相对某个个人来说)。那么如何在强大的心理暗示和诱惑–”牛人们的知识是可以让人变牛的知识”–之下,坚持住适合自己的学习计划和路线­?如何增强自己对”牛知识”的抗干扰能力?

 我认为吴兄的思考很有道理,这方面的反思也非常有必要。

对此我的观点是:

1. 弄清哪些知识对自己是重要的,分清主次。人的精力是有限的,如果什么知识都想学,结果精力分散之后,反而每门都深入不了。
2. 弄清为什么某个知识对你来说是不重要的,为什么某个知识又是重要的。这不是一个容易分辨得清楚的问题,要弄清一门知识有没有必要去学,必须首先了解它,而又不能­花太多时间去了解它,否则就等于是学了这门知识了,一个较平衡的办法是从
wikipedia 下手,上面对于知识的本质、结构、要点整理得很清楚,如果一通 review 了之后发现对自己很有价值,便可以深入了解。否则可以扔掉。
3. 的确有这样一种倾向:即牛人推荐的东西,不管对我有没有用都会忍不住瞄上两眼,我也曾是如此;实际上一个人不可能精通所有领域,*但我们可以锻炼自己的判断力,­从而能够迅速地判断一门知识的性质,用处(学了之后的收益期望及上下界),所需消耗的时间等,我常用的判断方法就是将知识分成
essential 和 non-essential
(尽管这样的区分有些绝对,但能够对大多数场合作出很好的判断),见这里<https://groups.google.com/group/pongba/msg/b58e565a216ac388> 上面链接被墙了,后面把这篇文章复制过来了,往下看!
4. 作为推荐者,应该在推荐的时候给出较详细的理由,让大家可以自行判断对自己是否有价值。 

下面是引用<https://groups.google.com/group/pongba/msg/b58e565a216ac388>的内容

我总是喜欢把知识分为essential的和non-essential的。对于前者采取深入掌握牢靠的办法,对于后者采取RTM (Read the
f*cking manual)方法。
如何区分essential和non-essential的知识想必绝大多数时候大家心里都有数,我举几个例子:对程序员来说,硬件体系结构是essentia­l的,操作系统实现机制是essential的,主流编程范式(OO、FP)是为了满足什么需求出现的(出现是为了解决什么问题),是怎么解决的,自身又引入了­哪些新的问题,从而适用哪些场景)。。
这些我认为都是essential的。我想补充一点的是,并不是说硬件体系结构就要了解到逻辑门、晶体管层面才行(其实要了解到这个层面代价也很小,一两本好书­就行了),也并不是说就要通读《Computer
Architecture: Quantitative
Approach》才行。而是关键要了解那些重要的思想,以及重要的细节,如:中断、陷阱机制属于前者,而具体设备的中断控制器的缓存大小则是后者(除非是搞单­片机的:)),《Computer.Systems.A.Programmers.Perspective》就是为此目的,针对程序员的需求总结出那些esse­ntial
knowledge的好书。
再来说一下为什么需要预先牢靠掌握这些essential的知识,因为3点:
1. 根据Joel Spolsky同学的说法(原文<http://www.joelonsoftware.com/articles/LeakyAbstractions.html>),编程语言技术是对底层设备的封装,然而封装总是会出现漏洞的,于是程序员被迫下到”下水道”当中去解决问题,一旦往下走,漂亮的OO,N层抽象就不复存在­了,这时候不具备坚硬的底层知识就会无法解决问题。简而言之就是这些知识会无可避免的需要用到,既然肯定会被用到那还是预先掌握的好,否则用到的时候再查是来不­及的,因为essential的知识也往往正是那些需要较长时间消化掌握的东西,不像Ruby的mixin或closure这种翻一下manual就能掌握的东­西。(英语也是这样的essential
knowledge——上次在PyCN上看到一个招Python开发人员的帖子将英语列为必备技能,却并不将自然语言处理列为必备技能,正是因为英语不是可以临­阵磨枪的东西,而且作为知识的主要载体,任何时候都少不了它)
2. 如果你不知道某个工具的存在,遇到问题的时候是很难想到需要使用这么样一个工具的,essential
knowldge就是使用最为广泛的工具,编程当中遇到某些问题之后,如果缺乏底层知识,你甚至都不知道需要去补充哪些底层知识才能解决这个问题。
3.
你必须首先熟悉你的工具,才能有效地使用它。一门语言,你必须了解它的适用场景,不适用场景。你必须了解它支持的主要编程范式,此外你还必须了解它的traps­和pitfalls(缺陷和陷阱),这些都是essential
knowledge,如果不事先掌握,指望用的时候查manual,是很浪费时间的,而且正如第2点所说,正因为你不知道这些知识(如适用场景),从而用sub­-optimal的方式使用了一门语言自己还不知道(因为人的评价标准是:只要解决了最醒目的问题(functionality)就行);类似,如果不知道陷阱­的存在,掉进去也不知道怎么掉的。注意,熟悉并非熟悉所有细节,而是那些重要的,或者无法在需要用到的时候按需查找的知识。比如我上面提到的:适用场景不适用场­景,编程范式,主要语言特性,缺陷和陷阱。
还有一些我认为是essential
knowledge的例子:分析问题解决问题的思维方法(这个东西很难读一两本书就掌握,需要很长时间的锻炼和反思)、判断与决策的方法(生活中需要进行判断与­决策的地方远远多于我们的想象,忘了是哪个说的了:Life
is Problem-Solving。而判断与决策又是其中最常见的一类Problem
Solving。尽管生活中面临重大决策的时候并不多,但另一方面我们时时刻刻都在进行最重大的决策:如:决定自己的日常时间到底投入到什么地方去。如:你能想­象有人宁可天天花时间剪报纸上的优惠券,却对于房价的1%的优惠无动于衷吗?(《别做正常的傻瓜》、《Predictably
Irrational》)如:你知道为什么当手头股票的股价不可抑止地滑向深渊时我们却一边揪着头发一边愣是不肯撤出吗?(是的,我们适应远古时代的心理机制根­本不适应金融市场。)糟糕的判断与决策令我们的生活变得糟糕,这还不是最关键的,最关键的是我们从来不会去question自己的判断,而是总是能”找到”其他­理由(《错不在我(Mistakes
were made, but not by
me)》)又,现在是一个信息泛滥的时代,于是另一个问题也出现:如何在海洋中有效筛选”好”的信息,以及避免被不好的信息左右我们的大脑。(Critical
Thinking)
写得匆忙,先写这些:)
2008/11/18 Albert <zinki@gmail.com>

>  其实这个问题很早就有了,单单对于编程序而言,你是钻透一门编程语言呢?还是做个泛泛的手册派,遇到问题查一把手册,然后Luckily把问题
> FIX掉。
>  我应该是属于MANUAL派的,因为我没有深入的学习任何编程语言,除了C,C++花的时间多一点之外。于是很多时候解决一个简单的问题,看一把
> MANUAL大部分问题也就随之而去了。但是最近我开始思考这样的一个问题:对于一项新的技术例如说CUDA,我总共在上面要解决N个问题,如果我没有
> 仔细的去学过,记学习代价T=0,此时解决一个问题的代价MT,那么总共花掉的时间是N*MT;与此同时如果我仔细的学习CUDA,花学习代价
> T=100(例如),解决每一个问题的时间就大大的缩减了记MT’,此时总共的代价就是T+N*MT’;这两者如何去权衡
>  当然这是简化的模型,推而广之,在仔细学习一门课程的时候搜集资料,也要花去相当一部分时间HT,还有很多很多要考虑的
>  当然还可以推广,比如说,在知识爆炸的几年,如何去权衡学习什么样的知识,以及什么样的知识应该学到什么样的程度,这样的模型该怎么建,该怎么分析,
> 该怎么求解

 


刘未鹏(pongba)
Blog|C++的罗浮宫
http://blog.csdn.net/pongba
TopLanguage
http://groups.google.com/group/pongba
Twitter
http://twitter.com/pongba
Delicious
http://delicious.com/pongba
Douban
http://www.douban.com/people/pongba/

    • 安心
    • 五月 15th, 2011

    科学家贝尔纳思维敏捷,领域广阔,在结晶学、分子生物学方面有重大贡献。贝尔纳发散型思维能力极强,在科学的各个领域都有灵感,有想法,但他在收敛型思维方面能力不足,未能专注于一个或几个课题深入地进行穷追不舍的研究。因而,他未能充分展现自己的才华,未能挖掘自 己深厚的科学潜力,未能获取诺贝尔奖,未能进入一流的科学家的行列。有人把这种由于兴趣过于广泛,思维过于分散,而不利于科学创造的现 象称为“贝尔纳现象”,也可把“思维分散,兴趣平摊”,导致的“样样皆知,样样不专”的心理现象,统称为“贝尔纳效应”。

  1. 还没有引用通告。