【程序员的思维修炼】学习与思考

然而不是程序员也应该看看

两个月前看完了这本书,因为书中有意思的内容太多,一时没来得及写日志,结果这一拖就来到了今天,果然说明想到啥立即去做才是把事情做完的唯一方法。这本书并不会教你怎么写代码,但是会教你怎么学习和思考,我觉得这其实才是对一个人来说最重要的能力。我相信如果真的能把书中提到的诀窍应用到生活中去的话,一定是大有裨益的。

运用一门程序设计语言编程对大多数普通程序员来说是“小菜一碟”,那么如何更上层楼成为一名专家级的软件开发者呢?本书给出了答案——优秀的学习能力和思考能力

很多时候我们把自己局限在了一个很窄的方向上,除了那些看起来直接有用的东西,我们会觉得学习那些是浪费时间。重点在于看起来直接有用的东西,总是容易过时的;而那先看似没啥大用的往往可能是宝藏。

程序员需要不断地学习——不仅仅是学习新技术,还包括应用的问题域、用户社区的奇思妙想、同事的古怪习惯、行业的八卦新闻和项目演进的重要特征,我们必须学习学习再学习,持续不断地学习,然后把学习成果应用到解决日常遇到的一切新旧问题上。

当我们试图将某个事物单独挑出来时,我们发现它与宇宙中的其他事物是息息相关的。所以常常跳出原来的思维和领域,常常会有不一样的收获。

切忌随波逐流。 Only dead fish go with the flow.

接下来我就会把书中的30多个诀窍一一列出来,当做是我的读书笔记吧。(有些似乎漏了,一定是我当初就没有太留意的,所以不看也罢!)

诀窍1:始终关注情境。

有些东西是基础的、各领域相通的。 There’s something fundamental here.

成为一名专家的关键要素:应用你自己的实践经验、理解情境和利用直觉。直觉是一个专家的标志,什么时候你发现自己开始使用直觉来判断和解决问题,那么说明你的技术已经上升了一个层次。

专家通常很难把他们的行为恰如其分地解释清楚,他们的很多行为是如此地熟练以至于已经变成无意识的了。他们的大量经验都是通过大脑的非语言、无意识区域存储的,这让我们难以观察,而专家则难以表述。新手和专家有着根本区别,他们看待世界的方式不同,反应也不同。

  1. 新手在该技能领域经验很少或者根本没有经验。这里提到的经验,指的是通过实施这项技术促进了思维的改变。新手非常在乎他们能否成功。没有太多经验指导他们,他们不知道自己的行为是对是错。新手不是特别想要学习,他们只是想实现一个立竿见影的目标。他们不知道如何应付错误,所以出错的时候,他们非常容易慌乱。新手需要指令清单。 Novices need recipes.规则只能让你启程,不会让你走得更远。
  2. 高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力。他们没有全面的理解,而且的确不想有。如果你试图把一个更大的情境强加给高级新手,他们可能会认为该情境与那些原则不相关而忽略掉。高级新手不想要全局思维。 Advanced beginners don’t want the big picture.
  3. 与更高水平者追随下意识反应不同,胜任者会探寻和解决问题,他们的工作更多是基于谨慎的计划和过去的经验。如果没有更多的经验,在解决问题时,他们将难以确定关注哪些细节。胜任者能够解决问题。 Competents can troubleshoot.
  4. 精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常沮丧。精通者能够自我纠正。 Proficient practitioners can self-correct.在德雷福斯模型中,处于精通水平的从业人员有一项重大突破:他们能够纠正以往不好的工作表现。他们会反思以前是如何做的,并修改其做法,期望下一次表现得更好。到这个阶段,自我改进才会出现。精通者有足够的经验,他们知道下一步会发生什么,如果没有发生又需要改变什么。他们非常明确哪些计划需要取消,而应该采取什么行动。
  5. 专家是各个领域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式去做事。他们有丰富的经验,可以在恰当的情境中选取和应用这些经验。专家凭直觉工作。 Experts work from intuition.直觉是专家的工具,但公司往往轻视它,因为他们错误地认为,直觉“不科学”或者“不可重复”。因此,我们往往本末倒置,不倾听薪酬高昂的专家们的意见。

清晰表述专业技能十分困难。 It’s hard to articulate expertise.

新手和专家有着根本区别,他们看待世界的方式不同,反应也不同。

他们的研究表明,从新手到专家要经历巨大的变化。在这个过程中,人们不只是“知道更多”或者获得了技术,而且还在如何认识世界,如何解决问题以及如何形成使用的思维模型等方面体验到根本性的区别。

新手在该技能领域经验很少或者根本没有经验。这里提到的经验,指的是通过实施这项技术促进了思维的改变。

新手非常在乎他们能否成功。没有太多经验指导他们,他们不知道自己的行为是对是错。新手不是特别想要学习,他们只是想实现一个立竿见影的目标。他们不知道如何应付错误,所以出错的时候,他们非常容易慌乱。

新手需要指令清单。 Novices need recipes.

规则只能让你启程,不会让你走得更远。

高级新手能够开始多多少少地摆脱固定的规则。他们可以独自尝试任务,但仍难以解决问题。

高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力

他们没有全面的理解,而且的确不想有。如果你试图把一个更大的情境强加给高级新手,他们可能会认为该情境与那些原则不相关而忽略掉。

高级新手不想要全局思维。 Advanced beginners don’t want the big picture.

第三阶段,从业者现在能够建立问题域的概念模型,并有效地使用它们。他们可以独立解决自己遇到的问题,并开始考虑如何解决新的问题——那些他们之前没有遇到的问题。他们开始寻求和运用专家的意见,并有效利用。

与更高水平者追随下意识反应不同,胜任者会探寻和解决问题,他们的工作更多是基于谨慎的计划和过去的经验。如果没有更多的经验,在解决问题时,他们将难以确定关注哪些细节。

胜任者能够解决问题。 Competents can troubleshoot.

精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常沮丧。

精通者能够自我纠正。 Proficient practitioners can self-correct.

在德雷福斯模型中,处于精通水平的从业人员有一项重大突破:他们能够纠正以往不好的工作表现。他们会反思以前是如何做的,并修改其做法,期望下一次表现得更好。到这个阶段,自我改进才会出现。同时,他们会学习他人的经验。作为精通者,他能够阅读案例研究,倾听有关失败项目的流言蜚语,观察别人怎么做,从故事中认真学习,即使他没有亲自参与。

精通者有足够的经验,他们知道下一步会发生什么,如果没有发生又需要改变什么。他们非常明确哪些计划需要取消,而应该采取什么行动。

专家是各个领域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式去做事。他们有丰富的经验,可以在恰当的情境中选取和应用这些经验。

专家凭直觉工作。 Experts work from intuition.

当你在某领域不是很擅长时,你更可能认为自己是这方面的专家。

规则断送专家。 Rules ruin experts.

直觉是专家的工具,但公司往往轻视它,因为他们错误地认为,直觉“不科学”或者“不可重复”。因此,我们往往本末倒置,不倾听薪酬高昂的专家们的意见。

诀窍2:新手使用规则,专家使用直觉。

大多数人都是高级新手。 Most people are advanced beginners.

你可以把这种现象称为二阶不胜任(second-order incompetence):不知道自己不知道多少。新手尽管能力差但是信心十足,而专家在情况异常时会变得愈发谨慎。专家会更多地自我怀疑。

直觉和模式匹配能力超载了显性知识。 Intuition and pattern matching replace explicit knowledge.

积极的实践需要四个条件。 需要一个明确定义的任务。 任务需要有适当难度——有挑战性但可行。 任务环境可以提供大量反馈,以便于你采取行动。提供重复犯错和纠正错误的机会。

诀窍4:通过观察和模仿来学习。

没有实践就没有技能,而且没有什么东西可以替代实践,但是我们可以努力使你现有的经验发挥更大效力。

首先模仿现有的做法,然后慢慢地吸收内在的知识和经验,最终将超越模仿阶段并能自主创新。

优胜者不会帮扶失败者。 Winners don’t carry losers.

诀窍5:保持实践以维持专家水平。

模型是工具,而非镜子。 The model is a tool, not a mirror.

规则无法告诉你在某种情况下应该采取的最合适行为或者正确路线。它们充其量也就是“自行车的辅助轮”——可以帮助启动,但是却限制并大大妨碍了以后的表现。

诀窍6:如果你需要创造力、直觉或者独创能力,避免使用形式方法。

不要屈服于工具或者模型的虚假权威。没有什么可以替代思考。

从德雷福斯模型学到的最重要的收获之一就是,认识到新手需要与情境无关的规则,而专家使用与情境相关的直觉。

警惕非情境化的客观性。 Beware decontextualized objectivity.

一种规格并非处处适用。 One size does not fit all.

专家需要获得全貌;不要用约束性、官僚的规则妨碍他们做出自己的判断。你需要从他们的专业判断中获益。请记住,不论怎样他们认为自己是系统的一部分,并将这些事情当作自己的事情来做,他们的投入超出你的想象。

诀窍7:学习如何学习的技能。

要获取专业技能,需要做到如下几项。

  • 培养更多的直觉。
  • 认识到情境和观察情境模式的重要性。
  • 更好地利用我们自己的经验。

诀窍8:捕获所有的想法以从中获益更多。

如果你不记录这些伟大的想法,你就不会意识到拥有过它们。

每个人都有好点子。 Everyone has good ideas.

每个人——不论教育背景、经济状况如何,不论日常工作是什么,不论年龄大小——都有好想法。但是在这么多拥有好想法的人里面,只有少数人在努力跟踪它们。而其中,又只有更少数人会努力付诸行动。随后,仅有少之又少的人有能力将好想法成功实现。要想达到图3-3中金字塔的最顶层,必须跟踪好想法,这是最基本的要求。

真正想要了解一只青蛙,传统的解剖不是办法,更好的方式是构造一只青蛙。

诀窍9:综合学习与分析学习并重。

商品化意味着美学品味的竞争。 Commoditization means you compete on aesthetics.

美学可以改变这些,不论是用户界面、代码和注释的布局,还是变量名的选择和桌面的整理,还是别的任何方面。

20世纪最著名的建筑设计师之一路易·康,很好地解释了美和设计之间的关系:“设计并不是创造美,美来自于选择、共鸣、同化和爱。”

诀窍11:重新连线大脑,坚信这一点并不断实践。

神经可塑性(大脑的可塑本质)也意味着你能够学习的最大容量或者你可以获得的技能数量不是固定的

人应该努力学习洞察和培养自己内心深处的灵光一现,这远远胜于外面流光溢彩的整个世界。然而,人总会下意识地抛弃自己特有的想法,仅仅因为那是他自己的想法。——拉尔夫·瓦尔多·爱默生(1803—1882), 美国散文家、思想家、诗人

诀窍12:增加感观体验以促进大脑的使用。

大脑总是渴望接受这种额外的、新奇的刺激。大脑擅于持续适应变化的环境。因此,要定期改变环境,满足你的大脑。

诀窍13:R型开路,L型紧跟。

不要太着急。解决问题时,学会轻松面对不确定的事情。进行创造时,坦然面对荒谬和不切实际的东西。学习过程中,不要太迫于学会和记忆,首先只是适应它。试着先理解其意思,掌握主旨思想。

隐喻,语言和意象共同的地基,是在左右脑半球之间,在潜意识和意识之间来回游弋的途径。” 隐喻是一种激发创造力的强大技术。

诀窍14:使用隐喻作为L型和R型相融之所。

两个想法差距越远,越难以通过有效的隐喻联系起来

幽默既不是浪费时间,也不是无害的消遣,而是反映了思维、学习和创造所必需的重要能力。它与联系有关。

在任何情况下,幽默的能力都来自于发掘或扩展常规之外的关系,真正突破思维界限。急智——能够发现无关事物的联系或者扩展思维突破其界限——是一种值得在团队中实践、锻炼和提倡的技能。

诀窍15:培养幽默感以建立更强大的隐喻。

一旦开始写作,一定要注意坚持不懈。不要为技术问题而分心。不必担心有些话是不是还需要润色,先把它们都写下来。

有很多方法可以记录想法,其中一些效率更高。最好的方法之一就是晨写。

诀窍16:离开键盘去解决难题。

当你不寄希望于它时,就会发现答案自己冒了出来。

瑜伽、冥想、呼吸技术和武术都会影响大脑处理信息的方式。我们是复杂的系统,正如我们已经认同系统思考的观念,这意味着一切都是关联的。甚至一种特殊的呼吸方式,也会显著影响你的思维方式。

请努力使用一致的排版提示来辅助可视化知觉。编译器也许不在意,但是我们的确在意。对下述可能会出现的情况也要理解:如果你处于较高的技术水平上,同时又遭遇到团队里其他人的阻力,要明白他们看待问题的方式肯定和你不同。他们不会自觉地认识到这种价值,因此你必须向他们解释。

拥有创造力和问题解决能力的关键在于寻找思考问题的不同方式。

诀窍17:改变解决问题的角度。

需要是发明之母。角色扮演是发明之父。 ——求罗迦·费·因格,当代颇具创意精神的美国实业家、学者。

  • 坚持晨写至少两周。
  • 培养快速的洞察能力。寻找不相关事物之间的关系或类比。
  • 面对难题时引入更多感观。哪些对你而言最有效果?
  • 阅读一些有别于平常的东西,比如小说,但不是科幻小说,等等。
  • 尝试不同类型的电影、假期、音乐或者咖啡。
  • 点一些你喜欢的餐馆里从未吃过的菜。

逆向思维。你会看到什么?

一些常见的偏见:

  1. 思维定势 只是看到一个数字就会影响你随后对数字的预测和决定。
  2. 基本归因错误 我们倾向于把别人的行为归因于他们的个性,而不去考虑行为发生时的情境。
  3. 自私的偏见 这种偏见使人们相信,项目的成功是我的功劳,失败则与我无关。
  4. 需要定论 我们对疑问和不确定性感到不舒服——这种感觉如此强烈,我们会竭尽全力解决未有定论的问题,移除不确定性,进而得出定论
  5. 认可上的偏见 每一个人都根据自己的成见和喜好原则来选择相应的事实。
  6. 曝光效应 我们往往只因为非常熟悉某些事物而对它有所偏爱。这包括不再好用甚至会出错的工具、技术或者方法。
  7. 霍桑效应 研究人员注意到,人们在知道自己正被审视时,往往会改变自己的行为。
  8. 虚假记忆 大脑很容易把想象的事件和真实的记忆混淆。
  9. 符号约简谬论 如之前所看到的,L型非常乐于提供一个快速的符号来表示一个复杂的对象或者系统,这至少丢失了细节,有时甚至是事物的真相。
  10. 名词谬论 符号约简谬论的一种形式,以为给事物贴上标签就意味着能够解释或者理解它。
  11. 柏拉图圈的概念,正如The Black Swan: The Impact of the Highly Improbable [Tal07]一书中所描述的,强调了人类非常不善于从过去的事情推断未来的事情。我们总是假定事件差不多形成了一种稳定、线性的递进,原因和结果都很简单。

诀窍18:记住标题:“很少”不意味着“没有”。

黑天鹅现象警示我们不要把未观察到的或者罕见的事件认定为不可能。

诀窍19:适应不确定性。

我们对定论的渴望意味着我们总是努力消除不确定性。但是过早地下结论减少了你的选择,甚至可能消除了成功的选择。

诀窍20:信任记录而不是记忆,每一次思维的输出都是一次输入。

不同的年龄段自然存在不同的价值观,你自己的态度和关注点也会随着年龄而改变。随着你和同代人年龄的增长,你们开始接手前一代人留下的角色,但是你们将按照自己的思想调整形势。

每一代人都会对前一代人的缺点做出反应,随着时间的推移,就会形成一种重复模式。这样来说,千年一代的后一代将对他们的价值观做出反应,这种循环会不断重复。

以下列举的就是这四种时代原型和其主要特征。

  • 先知:高瞻远瞩、价值观
  • 游牧民族:自由、生存、荣誉
  • 英雄:利益共同体、富裕
  • 艺术家:多元化、专业知识、法定诉讼程序

当你激烈地支持或者赞成一个观点时请记住这一点。你提出的论据是逻辑性的,还是情感作怪,或者只是因为熟悉?在特定的情境中论据成立吗?你是否真的考虑过别人的看法?旁观者清,所以你需要从正反两个方面看待问题。

诀窍21:从多个角度看待问题。

每一代人都会对前一代人的缺点做出反应,随着时间的推移,就会形成一种重复模式。这样来说,千年一代的后一代将对他们的价值观做出反应,这种循环会不断重复。

以下列举的就是这四种时代原型和其主要特征。

  1. 先知:高瞻远瞩、价值观
  2. 游牧民族:自由、生存、荣誉
  3. 英雄:利益共同体、富裕
  4. 艺术家:多元化、专业知识、法定诉讼程序

当你激烈地支持或者赞成一个观点时请记住这一点。你提出的论据是逻辑性的,还是情感作怪,或者只是因为熟悉?在特定的情境中论据成立吗?你是否真的考虑过别人的看法?旁观者清,所以你需要从正反两个方面看待问题。

诀窍22:尊重不同人的不同性格。

如果你和幸福、乐观的人在一起,你的心情就会提升。如果和你相处的人都沮丧、悲观并认为自己是失败者,你也会开始觉得自己是个沮丧、悲观的失败者。态度、信念、行为、情感——他们都是可传染的。 聚众施暴就是这样产生的。

“心灵是自己的地方,在那里可以把地狱变成天堂,也可以把天堂变成地狱。”

在手写书信的过去,用于亲笔写信的时间和等待寄出(等待邮递员)所造成的不可避免的延迟使得更显冷静的新大脑皮层可以进行干预,并提醒你这或许不是一个好主意。但是互联网的时间绕过了新大脑皮层,将我们的原始反应暴露无遗。

深深地呼气,摆脱变味的空气。深深地吸气。数到十。记住你是高级动物。让蜥蜴式的响应过去,请新大脑皮层来处理问题。

诀窍23:像高级动物一样行动,请做深呼吸,而不要张口嘶鸣。

在手写书信的过去,用于亲笔写信的时间和等待寄出(等待邮递员)所造成的不可避免的延迟使得更显冷静的新大脑皮层可以进行干预,并提醒你这或许不是一个好主意。 但是互联网的时间绕过了新大脑皮层,将我们的原始反应暴露无遗。

深深地呼气,摆脱变味的空气。深深地吸气。数到十。记住你是高级动物。让蜥蜴式的响应过去,请新大脑皮层来处理问题。

诀窍24:相信直觉,但是要验证。

最后,为了避免一厢情愿、盲目乐观的想法,记住任何一个决定都是一种权衡。不是没有免费的午餐。凡事总有两面性,仔细权衡——积极和消极的两面——有助于确保你更全面地评估形势。

我们通过逻辑来证明,通过直觉去发现。 ——庞加莱

大脑不是一个用于填充的容器,而是一束需要点燃的火焰。

在当今技术和文化环境下,学习能力可能是成功的最重要因素。它决定了你是“大获全胜”还是“勉强通过”。

技术本身并不重要,持续学习才是最重要的。

目标任务使你更靠近目标。 Objectives move you to your goal.

诀窍25:建立SMART任务实现你的目标。

目标任务使你更靠近目标。 Objectives move you to your goal.

制定计划是实现任何目标的一种非常有效的步骤。我们大多数人常常陷入一种默认的学习日程表:等到有空时再花时间学习一门新语言或者新函数库。不幸的是,把你的学习活动流放到“空闲时间”去,这就等同于失败。

时间是无法创造和销毁的。时间只能分配。 Time can’t be created or destroyed, only allocated.

制定计划就是巨大的进步。计划要具体,要运用SMART目标理念,要为不同时间段设计不同层次的目标

所有知识投资都有价值。 All knowledge investments have value.

诀窍27:发现你的最佳学习方式。

研究表明同伴学习小组非常有用。学习主题是由参与者选择的,因此与日常工作直接相关。学习过程可以灵活、方便地根据你的日程表来安排,而且无需昂贵的旅行和资料。学习小组是代替陌生、中毒性的羊浸式学习的伟大方法。

诀窍28:组织学习小组学习和辅导。

研究表明同伴学习小组非常有用。学习主题是由参与者选择的,因此与日常工作直接相关。学习过程可以灵活、方便地根据你的日程表来安排,而且无需昂贵的旅行和资料。学习小组是代替陌生、中毒性的羊浸式学习的伟大方法。

尽量保持每一个小组不超过八到十个人。如果团队很大,可以将其分成多个更小的组织来讨论。

这项学习一本书或其他印刷品的方法称为SQ3R,是该方法具体步骤的首字母缩写。

  • 调查(Survey):扫描目录和每章总结,得出总体看法。
  • 问题(Question):记录所有问题。
  • 阅读(Read):阅读全部内容。
  • 复述(Recite):总结,做笔记,用自己的话来描述。
  • 回顾(Review):重读,扩展笔记,与同事讨论。

诀窍29:主动阅读。

这项学习一本书或其他印刷品的方法称为SQ3R,是该方法具体步骤的首字母缩写。

  • 调查(Survey):扫描目录和每章总结,得出总体看法。
  • 问题(Question):记录所有问题。 阅读(Read):阅读全部内容。
  • 复述(Recite):总结,做笔记,用自己的话来描述。
  • 回顾(Review):重读,扩展笔记,与同事讨论。

诀窍30:同时用R型和L型做笔记。

诀窍31:写文档的过程比文档本身更重要。

诀窍32:观察,实践,教学。

积累经验是学习和成长的关键——我们通过实践的方法学习,效果最好。

通过构造来学习,而不是通过学习来构造。 更好地利用反馈,让失败也变得有意义。 让大脑提前为成功构建神经网络。

诀窍33:为了更好地学习,请更好地玩。

诀窍34:从相似点中学习,从差异中忘却。

诀窍35:在你的环境中安全地探索、创造和应用。

这是运用内在诀窍的关键要素:不要把精力放在纠正一个一个的细节上,只需要具有意识。接受事实是第一步,只要意识到它即可。不要做出判断,不要急于拿出方案,不要指责。

最后期限会使大脑恐慌。 Deadlines panic the mind.

从内在诀窍系列书籍学到的另一个重要经验是,允许失败会促进成功。你无需主动犯错误,只是一旦犯了,那也没什么。这听起来有点违反直觉,但是一旦你实践这种想法,就非常有意义。

诀窍37:允许失败,你会走向成功。

这是运用内在诀窍的关键要素:不要把精力放在纠正一个一个的细节上,只需要具有意识。接受事实是第一步,只要意识到它即可。不要做出判断,不要急于拿出方案,不要指责。

最后期限会使大脑恐慌。 Deadlines panic the mind.

从内在诀窍系列书籍学到的另一个重要经验是,允许失败会促进成功。你无需主动犯错误,只是一旦犯了,那也没什么。这听起来有点违反直觉,但是一旦你实践这种想法,就非常有意义。

诀窍38:让大脑为成功形成惯例。

你可以想象实践并从中学习,如同真实体验一样有效。大脑不知道其中的差别。因此,放下压力,弄清楚哪里出错,假装你已经修正了它。 然后,你就真的会改正它。

下一次面对困难局面时,请记住:“尝试会失败,认知会弥补。”停下来,首先完全弄明白问题在哪里。

为失败做计划。要知道,如果犯了错误,也没关系。看看这是不是有助于减轻压力和提高表现。

成为专家。不要只是假装,要真正地扮演专家的角色。注意这么做会如何改变你的行为。

你的注意力是供不应求的。每天有那么多的事情都争相获取你的注意,而你仅仅能关注其中的一部分。

诀窍39:学习集中注意力。

毫无疑问,我们生活在信息丰富的时代。但往往过犹不及,过多的信息却导致了知识和注意力的匮乏。置身于应接不暇的信息中,很容易失去思考的重心

你的注意力是供不应求的。每天有那么多的事情都争相获取你的注意,而你仅仅能关注其中的一部分。

诀窍40:挤出思维的时间。

冥想听起来好像没什么意义。但实际上意义重大。我强烈建议你尝试片刻,因为专注是一种重要的技能。

诀窍41:使用wiki来管理信息和知识。

多任务处理对生产力会造成重大损失。一项研究发现,一般情况下,多任务处理将耗费你百分之二十至四十的生产力。

无论你做什么,请不要同时都做。

捧个钱场?