程序员的思维修炼:开发认知潜能的九堂课 - 亨特

亨特

第1章 绪论

软件并不是在集成开发环境(IDE)或其他工具上设计出来的,它是在我们的大脑中想象和创造出来的。

Frederick Brooks在他的里程碑式的文章《没有银弹》[Bro86]中提出:“软件产品处于应用、用户、规则和硬件的合力之下。这些因素总是在不断变化,迫使软件产品也随之改变。”

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

我在本书中会经常提到敏捷方法,因为很多敏捷思想和实践都是与良好的认知习惯相融合的。

1.1 再提“实用”

什么是湿件
wet·ware│wet, we(e)r│词源:wet+software
名词,谐语。指人脑细胞或思维过程,与计算机系统相对应。
也就是说,利用计算机模型类比人类的思维过程。

1.2 关注情境

万事万物都是相互联系的:自然界、社会系统、你内心的想法、计算机的逻辑——所有事物构成了一个庞大的相互联系的现实世界。没有什么事物是孤立存在的,一切都是系统和更大的情境的一部分。

一切都是互相关联的。
Everything is interconnected.

1.4 本书结构

技能获取领域的德雷福斯模型(Dreyfus model)是研究如何超越新手层次、如何不断精通技术的有效方法。我们将会探讨德雷福斯模型,并特别关注成为一名专家的关键要素:应用你自己的实践经验、理解情境和利用直觉。

请注意,这里我所说的学习具有广泛的含义,不仅指对新的技术、程序设计语言之类的学习,也包括对所在团队的变化、所开发软件的重要新功能等内容的学习。在当今时代,我们必须不断地学习。

第2章 从新手到专家的历程

制造问题的思维方式无法用来解决问题。
——阿尔伯特·爱因斯坦

事件理论与构建理论
德雷福斯模型是所谓的构建理论。理论分两种:事件理论和构建理论*。这两种理论都用于解释我们观察到的现象。
事件理论可以被测量,这类理论可以被验证或证明。你能够判断某个事件理论的准确性。
构建理论是无形的抽象,无法被证明。构建理论是通过它的用处来衡量的。你无法判断某个构建理论准确与否。它是客观存在和抽象的结合体。就像苹果是存在的,苹果是事物,存在则是抽象。
例如,我可以使用简单的电流或者复杂的医学成像设备来证明大脑的所有部件,但是我无法证明你有思维。思维是一种抽象,事实上没有这种客观事物,只是一种概念,但是它是一种非常有用的概念。
Dreyfus模型是一种构建理论,是一种抽象。我们随后将看到,它非常有用。

2.1 新手与专家

专家通常很难把他们的行为恰如其分地解释清楚,他们的很多行为是如此地熟练以至于已经变成无意识的了。他们的大量经验都是通过大脑的非语言、无意识区域存储的,这让我们难以观察,而专家则难以表述。

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

2.2 德雷福斯模型的5个阶段

德雷福斯模型针对每项技能。
Dreyfus is applicable per skill.

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

高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力。同时,他们能够开始形成一些总体原则,但不是“全貌”。他们没有全面的理解,而且的确不想有。如果你试图把一个更大的情境强加给高级新手,他们可能会认为该情境与那些原则不相关而忽略掉。

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

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

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

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

2.3 现实中的德雷福斯模型:赛马和赛羊

达尔文说过:“无知往往来自于自信而不是知识。”
反过来似乎也是对的。一旦你真的成为了一名专家,你会痛苦地意识到你知道的是多么少。

新手使用规则,专家使用直觉。
当然,从新手到专家的过程涉及的不仅仅是规则和直觉。在你提升技能水平的过程中,有许多方面会发生改变。最重要的三个变化如下。

  • 从依赖规则向依赖直觉转变。
  • 观念的改变,问题已不再是一个相关度等同的所有单元的集合体,而是一个完整和独特的整体,其中只有某些单元是相关的。
  • 最后,从问题的旁观者转变为问题涉及的系统本身的一部分。

可悲的是,研究似乎表明,大多数人的大多数技能,在他们生命的大多数时间里,从来没有高于第二阶段高级新手,“执行他们需要做的任务并根据需求学习新任务,但是从来没有对任务环境获得更广泛的、概念上的理解。

专家与众不同之处是他们使用直觉和在情境中识别模式的能力。这不是说新手没有任何直觉或者胜任者根本不能识别模式,但是专家的直觉和识别模式的能力已经超越了他们显性的知识。

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

2.4 有效地使用德雷福斯模型

而且需要辛勤工作——只是在某领域工作十年是不够的。你需要实践。根据著名认知科学家Dr. K. Anderson Ericsson的说法,积极的实践需要四个条件。

  • 要一个明确定义的任务。
  • 务需要有适当难度——有挑战性但可行。
  • 务环境可以提供大量反馈,以便于你采取行动。
  • 供重复犯错和纠正错误的机会。 稳步做这种实践十年,你就会达到目标。正如我们在《程序员修炼之道》[HT00]中提到的,甚至连英国诗人乔叟也抱怨“生命如此短暂,学知之路如此漫长”。

小号手Clark Terry曾经告诉学生们学习音乐的秘密是经历三个阶段:

  • 模仿
  • 吸收
  • 创新 也就是说,首先模仿现有的做法,然后慢慢地吸收内在的知识和经验,最终将超越模仿阶段并能自主创新。这和被称为Shu Ha Ri的武术训练周期有异曲同工之妙。 在Shu阶段,学生模仿老师教授的技术,原模原样。在Ha阶段,学生必须思考其中的意义和目的,以达到更深的理解。Ri意味着超越,不再是一名学生,已经具有了自己的创新。

随着向人力成本更便宜的国家开展外包和离岸开发,这种趋势变得更加严重。这个发展状况很让人担忧,因为它进一步巩固了人们的偏见,认为编码只是一种机械活动,恨不得都外包给最低水平的承包人。事实当然完全不是那么回事。

正如护理专业一样,编程专家必须持续编程,并找到一个有意义、有价值的职业生涯。对组织来说,设置一个能够反映最优秀程序员价值的薪酬等级和职业阶梯是实现这个目标的第一步。

2.6 再一次考虑情境

在系统思维中,如面向对象的编程,往往是事物之间的联系最让人感兴趣,而不是事物本身。这些联系有助于形成情境,而正是情境让这些事物各不相同。

3.1 双CPU模式

人类具有超强的感知能力,其中许多无法有效地用语言表达。例如,你可以立刻认出大量熟悉的人的面孔,无论他们是否改变了发型、穿着,或者肥了10磅,还是过了20年。
但是,尝试描述你最亲密爱人的脸庞,你会觉得有心无力。你如何把这种识别能力用语言表达出来?你能建立一个数据库来存储你所认识人的脸部数据,并依据这些数据来识别这些人吗?不能。这是一种伟大的能力,它不是基于文字的、语言的、L型的。

R型在存储输入方面非常卖力。事实上,可能你的每一次经历,不论多么平淡乏味,都会被存储。但是它不一定被索引。大脑把它存储起来(好比存储到硬盘里),但是不会建立一个指向它的指针或者索引

3.2 随时(24×7)记录想法

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

3.3 L型和R型的特征

最快的处理方式是甚至没有到达大脑皮层的肌肉记忆类反应。钢琴演奏家在快节奏的章节演奏中没有时间思考每一个音符。参与的肌肉基本在无意识或无指令的状态下自己完成了整个演奏。

例如在一项实验中,研究人员在同一时刻为这些裂脑患者的两只眼睛展示了不同的图片,如果要求他们说出看到的图像,他们会报告右眼看到的画面(使用了负责语言的左半球),但是如果要求他们触摸图片以确定图像,他们就会报告左眼看到的画面(这关联到非语言的右半球)。

本质上不存在左脑思维和右脑思维这样的东西,大脑的各种脑叶和不同层次的结构体之间的协作分布得非常均匀,不论是古老的爬虫类脑部,还是最新发现的大脑新皮质,它们之间都有协作。但是尽管有这样的协作,我们仍然拥有两种不同的认知风格——CPU 1号和CPU 2号。

Betty Edwards博士在Drawing on the Right Side of the Brain [Edw01]一书中首次打破了左右脑的区分模式,将它们称为L模式和R模式。
为了明确每种认知模式的本质,我在本书中使用线性模式和富模式,简写为L型和R型。

L型处理令人感到舒适、熟悉而轻松。L型提供以下9种能力。
语言能力
使用词语来命名、描述和定义。
分析能力
有理有节分析事情。
符号能力
用符号表示事物。
抽象能力
抽取小部分信息(本质),并用其表示事物整体。
时间能力
遵时循序。
推理能力
基于理智和事实得到结论。

数字能力
使用数字计数。
逻辑能力
基于逻辑(定理、明确的论点)得出结论。
线性思维能力
按照关联、依序推演问题和思考,经常会得出收敛性结论。

R型是非语言的,它可以获取语言但是不能创建语言。它喜欢综合学习:集合事物形成整体。它总是如实地反应事物,从这一点来说,它非常具体实在,至少目前是。它使用类比来评价事物之间的关系。它喜欢听好听的,而且不愿意为守时而费心。它不受理性的约束,因为它不需要基于原因或者已知事实来处理输入——因而,它完全愿意暂时不作任何判断。
R型绝对是注重整体的,总是希望一次就能看到事物整体,感知整体的模式和结构。它具有空间性,喜欢弄清楚事物之间的空间关系,部分如何形成整体。最重要的是,它是直觉性的、跳越性的思维,通常基于不完整的模式、直觉、感觉或者视觉影像来做判断。

3.4 R型的崛起

是的,它可以。事实上,另外的研究证实了这一点:积极的情感对学习和创造性思维非常关键。处于“高兴”的状态可以扩展你的思维过程,激活更多的大脑物质。

你可能一直听说,人在出生时拥有一定数量的脑细胞,这就是你所有的家当。脑细胞可能会死亡,但无法再生新的。酒精和年龄增长会杀死脑细胞,这让人一想到老年生活就顿感沮丧,因为与出生时相比失去了太多脑细胞。
幸运的是,伊丽莎白·高尔德教授不这样想。一项发现使这个领域沸腾了,她发现了神经形成——在成年时期,新脑细胞会不断再生。但是有趣的是,之前的研究人员之所以从未发现神经形成,竟然要归因于他们的研究对象所处的环境。
如果你是困在笼子里的实验室动物,你永远都不会产生新的脑细胞。
如果你是困在斗室里的程序员,你永远都不会产生新的脑细胞。
相反,如果处于一个丰富的环境中,里面充满了需要学习、观察和交互的事物,你就会产生大量新脑细胞和新的神经联系。
几十年来,科学家被人造环境(无菌实验室笼子)误导了,因为人造环境只会产生人造数据,这再次证明情境是关键。你的工作环境需要提供丰富的感观机会,否则它真的会损坏大脑。

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

康解释了美来自于选择。也就是说,艺术不是来自于创造本身,而是来自于选择,从几乎无限的可选项中进行选择。

创造来自于选择和组装,它要选择最合适的部件,并将它们组装成最合适的表现形式,这就是创作。

3.5 R型看森林,L型看树木

实验对象在使用左眼时能良好地回答有关全局模式的问题(主要使用了R型)。同样他们使用右眼能很好地回答有关局部的问题(主要使用了L型)。

3.6 DIY脑部手术和神经可塑性

思想使然。
Thinking makes it so.

可能这就是音乐家不断练习音阶的原因,这类似于刷新动态RAM。想做一名更好的程序员吗?那就多编码,深思熟虑,专注实践。想学习一门外语吗?那就投入进去,不停地说,用它思考。大脑会很快意识到并调整自己为这种新用途提供更多方便

4.3 促成R型到L型的转换

虽然我们可以利用历来忽略的R型处理,但它不是银弹或灵丹妙药。单凭它自己无法解决所有问题,毕竟它不能处理语言。
我们需要的是更好地同步L型和R型,保证整个大脑可以工作得更好及更有效率。

。半小时之后,教练出现了,开始讲课,告诉我们如何攀岩。现在,因为我们已经有了一些经验(虽然短暂),所以他的讲解更加有意义。我们可以明白他的指令所针对的一些情境:当他提到通过某种方式转移身体重心,我们明白其用意。这比他一开始直接讲课要清楚得多

如果想法过早地受到束缚,那么创造力就会被扼杀。与此类似,如果你还没有全局的概念就试图记忆细节,那么学习就会陷入僵局。

不要太着急。解决问题时,学会轻松面对不确定的事情。进行创造时,坦然面对荒谬和不切实际的东西。学习过程中,不要太迫于学会和记忆,首先只是适应它。试着先理解其意思,掌握主旨思想。
然后再采取传统的L型活动走到下一步:从R型到L型的转换。

“完美主义是压迫者的声音,是人们的敌人。它会束缚你的想法,毁掉你的生命,同时它也会妨碍你创建较差的草稿初案。我认为完美主义基于一种强迫性的想法:如果你足够细致,每件事情都做得很好,那你就不会失败。但事实是,无论怎么做你都有可能会失败,可是很多人即使不太仔细也会做得比你好,而且其间也会拥有更多欢乐。”

当你与人交谈或者在白板或纸上和别人携手工作时,你的思维往往会变得更加抽象。你就更可能发现新的抽象模式,这也正是我们所有程序员所期望的。

现在,听到隐喻和类比,你可能会回想起小学时可怕的语文课。但是事实上,我们一直在使用隐喻。我们在计算机屏幕上所说的窗户(window)并不是真正的窗户。鼠标(mouse)也不是真的老鼠。硬盘上的文件夹(folder)也不是真的,回收站(trash)也不是真的垃圾桶。
当你使用线程(thread)编写并发程序时,你不是在做针线活。这只是一个隐喻。更别说Unix上的僵尸进程(zombie process)或字体排印上的寡妇(widow)和孤儿(orphan)了。

隐喻(metaphor)源自希腊语metaphora,意思是“转移”,表示你正在以一种事实上不可能的方式把一个事物的属性转移到另一个事物上。

但是,提出一个好的隐喻——能够帮助解决问题而不是产生更多问题——可能是非常困难的。同测试先行、结对编程等广受欢迎的开发方式相比,系统隐喻作为一种实践并未得到广泛应用。

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

4.4 收获R型线索

但是很多时候,答案不是那么容易找到的:R型毕竟不能处理语言。它可以获取记忆块,但无法处理它,这会导致一些相当奇怪的情景。

许多想法是无法用语言表达的。
Many ideas are not verbalizable.

要知道的事情。
图像流就是一种用于收获R型意象的技术。其基本思路是有意观察心理意象,即密切关注,并在心中回想一下。
首先,找一个问题。然后,闭上眼睛,再把脚搁在桌子上(能以这种姿势工作可是超棒的),默想大约10分钟。
对于经过大脑的图像,做如下处理。
1.观察图像,努力看清所有细节。
2.大声地描述出来(真正发出声音,这很关键)。现在把脚翘在桌子上自言自语。
3.利用全部五种感观想象它(或者根据实际情况尽量运用所有感观)。
4.使用现在时态,即使该图像都溜跑了。
通过明确地把注意力集中到稍纵即逝的画面中,你对该图像使用了更多的途径并加强了联系。当努力解释这种画面时,你扩展了提供给R型思维的搜索参数,这有助于凝聚相关信息。无论如何,密切关注意识中掠过的“随机”图像,就可以开始有一些新的领悟。

写信是一种伟大的习惯。有时内容相对枯燥——天气情况、市场价格上涨、女佣与呆男出走等等。但是偶然的哲学领悟都是存在于日常生活的点滴之间。这种自由形式的日记历史悠久,那些已经逝去的、精于这项技艺的思想者最终都被尊称为“men of letters”,正是因为他们写了这些书信。

但是从何开始呢?除非你正激情澎湃地关注某个主题,否则很难坐下来写一些东西。你或许会愿意尝试使用杰拉德·温伯格的Fieldstone方法(参见Weinberg on Writing: The Fieldstone Method [Wei06])。

事实上,当你准备出去进行“思维散步”时,不用做任何思考。对R型和L型的显著区别加以比较,这一点也很重要。L型是主动性的:当你集中注意力时,L型就在工作。R型则不同,你不能命令它,只能邀请它。
R型只能邀请,不能强制命令。
R-mode can be invited, not commanded.
你必须得有点心不在焉。

4.5 收获模式

大脑非常善于在模型片段的基础上重构事实。大脑也能基于不完整的数据进行联想,它一直都在这样做,即使你并没有意识到。

请记住,源代码的阅读次数远远多于它的编写次数,所以通常值得花一些工夫把代码变得适合人类阅读。换句话说,我们应该使代码中的较大模式更容易被看到。

请努力使用一致的排版提示来辅助可视化知觉。编译器也许不在意,但是我们的确在意。对下述可能会出现的情况也要理解:如果你处于较高的技术水平上,同时又遭遇到团队里其他人的阻力,要明白他们看待问题的方式肯定和你不同。他们不会自觉地认识到这种价值,因此你必须向他们解释。
如果你没有看到这些模式的价值,但是团队里的专家们意识到了,那么请遵循他们。记住,这不是一种浪费时间的愚蠢修饰,而是一种重要的交流工具。

我想说的是,这个完全出人意料的字面答案来源于一种你可能不习惯的情境。

作曲家布赖恩·伊诺(Brian Eno)和彼得·施密特(Peter Schmidt)提出了一套100种间接策略来换脑。这些问题和语句强迫你查找类比并深层考虑问题。当你无路可走时,它们就是你可以利用的智谋(而且还在线可得,有适合Mac和iPhone的Dashboard Widget格式,Palm OS的文本格式,Linux的命令行格式等)。以下是一些例子。

错误是一种潜在的提示。

古语云:“只有婴儿喜欢改变。”我们都是习惯造就的动物。但是,根深蒂固的习惯对大脑而言并非是最好的,因为,有了这种习惯,你就无法建立新的联系,而且会逐渐对其他选择项熟视无睹。

这些小变化对你的大脑有益,因为它们有助于改变关联,防止出现神经惯例。的确是这样。大脑的一个特点就是适应能力强,但是如果没有什么需要它去适应,形象地讲,它就会松弛下来。

第5章 调试你的大脑

与之相反,我们是基于不完善的记忆和当时的情感状态来做出决策并解决问题,忽视了关键的事实,却根据发生的时间地点或者是否醒目而关注不相干的细节。特别是当这些细节非常引人注意时。

我们将探讨四大类问题。

  • 认知偏见:思维如何被误导。
  • 时代影响:同代人如何影响你。
  • 个性倾向:个性如何影响思维。
  • 硬件故障:大脑较老区域如何压制较聪明的区域。

5.1 了解认知偏见

霍桑效应
研究人员注意到,人们在知道自己正被审视时,往往会改变自己的行为。当你在团队里引入一项新技巧或新工具时会看到这一点。起初,每个人都在关注——也都知道他们正在被关注——结果非常好,纪律性很高,对新事物的兴奋劲也点燃了动力。但是,随后新鲜感逐渐减弱,聚光灯也转移了,所有人都无情地回到了原来的行为状态。

信任记录而不是记忆,每一次思维的输出都是一次输入。
通过某种现实凭据来增强你的记忆。不论是你写的笔记,还是与其他人的交谈在他们的脑海中留下的记忆,你需要一些东西来确保你的记忆不会与事实相去甚远

5.2 认清时代影响

正如道格拉斯·亚当斯指出的,偏见会随着时间改变,总的来说,驱动另一代人的偏见和驱动你及你同龄人的偏见就不一样。

相比到目前为止我们所探讨的bug,这些是更加可怕的偏见形式——其价值观和态度如此地根深蒂固,以至于你根本就不会想到去怀疑一下。但是,它们会明显影响你的判断和认知。

你是否曾经想过为什么会珍视你所珍视的东西?是父母灌输给你的吗?或者是对父母的一种反抗?你是否曾经坐下来,认真思考自己到底是要成为自由主义者、保守主义者、自由意志主义者还是无政府主义者?成为工作狂还是懒鬼?

你们的态度会相差多远?这里有一些我想到的分界线。

  • 风险承受者与风险抗拒者
  • 个人主义与集体主义
  • 稳定与自由
  • 家庭与工作

千年一代又重新重视忠诚,强调等级分明的、强有力的组织。他们会对集体的感知做出反应,他们认为婴儿潮一代唠叨、不切实际,X一代懒惰、不守规矩。

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

从多个角度看待问题。
要想避免你所处时代的特有偏见,最好的方法是保持多样性。如果你和你的团队思考问题方式相似,你可能会认为你们的集体观点是唯一正确的。其实不是。只是因为你珍视自己的方法,你的个人主义或者你的集体主义,并不意味着年轻一代或者年长一代就会认同你的观点,也不意味着这个观点在那种情境下就是正确的答案。

5.3 了解个性倾向

大多数公司通过表扬和认可奖励团队,但这并不一定适合所有性格类型。特别是对外向型起作用的奖励可能并不适用于所有程序员。
你在渴望一场正式的蛋糕庆祝会吗?对于很多内向型人来说,被带到众人前面,哪怕是为了接受表扬,也会深感不安。对于新手来说的巨大奖赏,专家级人士可能根本就看不上,反之亦然。
既然性格和技能水平各异,可能奖励措施也应该各式各样才对。

5.4 找出硬件问题

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

在手写书信的过去,用于亲笔写信的时间和等待寄出(等待邮递员)所造成的不可避免的延迟使得更显冷静的新大脑皮层可以进行干预,并提醒你这或许不是一个好主意。
但是互联网的时间绕过了新大脑皮层,将我们的原始反应暴露无遗。它允许你充分发泄你的最初本能反应,不论是通过电子邮件、博客评论还是即时消息。虽然这种快速、暴力的响应适用于应对丛林中的捕食者,但是对于与同事、用户或者卖方合作项目却没什么帮助(当然,可能有助于应对掠夺型的卖方)。

5.5 现在我不知道该思考什么

为了获得更大的视野并测试一下自己的理解和心理模型,问问自己以下问题。
你怎么知道的?
How do you know?

  • 你怎么知道的?
  • 谁说的?
  • 有什么特别的?
  • 我的做法会如何影响你?
  • 与什么或者谁比较?
  • 这总是发生吗?你能想到一个特例吗?
  • 如果你这样做了(或者不这样做)会怎么样?
  • 什么阻止了你? 你有衡量的指标吗?是不是心中有数?有统计数据吗?当你和同事讨论时会怎么样?如果同事的观点与你完全不一样会怎么样?他们会被动接受吗?这是一种危险信号吗?他们强烈地反对吗?这增加了可信度吗?或者相反?

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

实践单元

  • 当发生冲突时,考虑基本性格类型、不同年代的价值观、你的偏见、别人的偏见和情境。通过思考更多因素,是不是更容易解决冲突?
  • 仔细检查你的立场。你是如何知道你所知道的?什么使你这样认为?

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

6.1 学习是什么……不是什么

  • 学习不是强加于你的,而是需要你主动做的事情。
  • 仅仅掌握知识,而不去实践,没有用。
  • 随机的方法,没有目标和反馈,往往会导致随机的结果。

“假设有人原本去找他邻居要火,结果发现邻居那儿很暖和,于是他就继续呆在那边取暖。这就好比是,某人去向别人学习知识,却没有意识到他应该点燃自己的火焰、他自己的智慧,而只是很高兴地着迷于他人的演讲,老师的话只是触发了联想思维,就好比只是让他的两颊泛起红晕,只是让他四肢感到温暖,但是,虽然笼罩在智慧的温暖光茫下,他内心的阴冷昏暗却没有被驱散。”
——普卢塔赫,希腊历史学家、传记作家和评论家

大脑构建的模型、为构建模型所提出的问题和你的日常经验和实践对你的业绩更加重要,它们才能提高你的竞争力和专长。仅仅掌握知识是不够的。
单纯密集、脱离情境的课堂教育最多只能给你正确的方向。你需要持续的目标,需要反馈以了解你的进展,需要更加主动全面的学习,而不是在令人窒息的教室里一年上一次课。

6.2 瞄准SMART目标

“写一部小说就像在黑夜里开车。你只能看到车灯照亮的部分,但是你却可以走完整个旅程。”
——E.L.多克托罗(E.L.Doctorow)

6.3 建立一个务实的投资计划

管理你的知识投资有很多要点:

  • 制定具体计划
  • 多样化
  • 主动投资
  • 定期投资

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

知识投资和金融投资的一个主要区别是所有知识投资都有些价值。即使你从来不会在工作中使用某项技术,它也会影响你思考和解决问题的方式。因此,你学习的任何东西都有价值,只是有可能不是直接的、有物质回报的或和当前工作相关的价值。也许它会有助于开发R型思维或者改善R型到L型的切换

实践单元

  • 写下现在、短期和长期的具体目标。
  • 增加两个新的学习领域,让你的知识投资变得多样化。
  • 每周设定时间来实施知识投资。
  • 设置提醒,让自己定期、阶段性地重新评估投资计划。哪些发生了改变,哪些已没有意义,现在你要做什么?

6.6 使用增强的学习法

  • 主动阅读和总结书面材料的更好方式
  • 使用思维导图探索和发现模式和关系
  • 以教代学

6.7 使用SQ3R法主动阅读

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

  • 调查(Survey):扫描目录和每章总结,得出总体看法。
  • 问题(Question):记录所有问题。
  • 阅读(Read):阅读全部内容。
  • 复述(Recite):总结,做笔记,用自己的话来描述。
  • 回顾(Review):重读,扩展笔记,与同事讨论。 这项技术的第一个有用方面是主动性。人们不再是随机地捡起一本书阅读,而不管记住或者没有记住多少内容。这项技术是一种更周到、更自觉、更有意识的方法。

通过重复回顾材料来不断测试你自己,这种方法有效得多*。主动、反复地尝试回顾巩固了学习,增强了大脑的内部连接。仅仅依靠反复的输入,你不会有什么效果。尝试用你正在学习的新语言编写一个程序——你需要回顾关键信息才能完成。尝试向同事解释新方法的关键部分。持续回顾——测试你的知识。你可以把这看作是测试驱动学习。当测试自己时,可以利用间隔效用

6.8 使用思维导图

虽然思维导图听起来非常基本、初级,但它有一些微妙的属性。它利用了你的眼睛扫描和阅读一张纸的方式。通过一种线性文字或者大纲所不能的方式,空间提示可以向你传达信息,因为颜色和符号的使用增加了表达的丰富性。当你打算添加一条新信息、一个新想法或者领悟到思维导图时,你要面对这样一个问题:这属于哪一块?你必须评估想法之间的关系,不仅仅是想法本身,这是一项非常具有启迪作用的活动。

我发现最有效的办法是在听讲时先草草地记笔记(这可以使你在提取要点的同时不至于分心),然后把这些草稿笔记整理成正式笔记。即使我从没有再看过这些笔记,但是整理草稿笔记的过程是最有价值的。对思维导图,你也可以做同样的事情——先做一个粗糙的,然后根据需要重画。重画有助于在大脑中形成更多关联。

6.9 利用文档的真正力量

  • 手动制作增强了R型处理。
  • 笔记/卡片的主动创建有利于为以后的活动做思想准备。
  • 可视化流程和预演可以让大脑模拟

6.10 以教代学

另一种有用的办法是尝试向一个孩子或者你所在领域之外的人解释你的东西。诀窍就是用他们能理解的话语进行解释。这是一个向你的Edna大婶解释你的工作的好机会,也是一个练习从听众角度观察问题并创建隐喻的好机会,这些隐喻有助于解释、阐明你的工作。你可能会在这个过程中惊奇地发现一些新的收获和领悟。

第7章 积累经验

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

7.2 利用现有知识

解决问题时,先提问自己。

  • 未知量是什么?
  • 已知量是什么?
  • 条件是什么?
    然后制定一个计划,执行之,回顾结果。波利亚建议的一些技巧(如下所示)听起来非常熟悉。

  • 努力回想拥有相同或类似未知量的常见问题。

  • 画一张图。

  • 解决一个相关的或者更简单的问题,放宽限制,或者使用已知量的子集。

  • 所有已知量和条件都用上了吗?如果没有,为什么?

  • 尝试重新叙述这个问题。

  • 尝试从未知量推到已知量。

危险就在于没有完成过渡和坚持混合的方式,当你没有完全接受新技能而是处于过渡状态中时,新老方式被混杂在一起,这时就有危险。你需要学多少就得忘多少。

7.3 正确对待实践中的失败

“我不知道”是一个好答案,但不要就此止步。

7.4 了解内在诀窍

内在诀窍理论提供了解决方法:避免向学生传授一长串指令,而是教学生一种意识,并使用这种意识来纠正学习表现。意识是一种超越新手层次的重要工具。

例如,在采取纠正行动之前完全知道“这是什么”对于调试非常重要。太多程序员(包括我自己)往往在没有完全明白真正的错误是什么之前就着急修正它。匆忙地作出判断或者过早地进行修补。你需要首先完全明白系统的原理,然后再判断哪部分错了,最后提供解决方案

7.6 想象超越感观

内在诀窍(inner game)的名字意味着真的可以在内部玩。除了现实世界之外,你也可以从大脑中取得经验。

事实证明,大脑不是很擅长分辨输入源。实时的感知数据、过去事情的记忆,甚至是从没发生过的单纯想象都会引起相同的生理反应

很多感知是基于预测的,预测则基于情境和过去的经验,以至于当前的、实时的输入被抛在了后面。你是否有过一位朋友突然在外形上做了很大改变?他们留了或者剃了胡须,或者改变了发型或染了色,而你没有立刻意识到?甚至是过了一段时间也没意识到?

7.7 像专家一样学习

记忆的每一次读取都是一种写入。记忆不是固若金汤的,逐步增长的专业知识会渐渐添加到你要使用的过滤器和匹配模型中。
直觉就是这样增长的:你有越来越多的模型来借鉴和应用,也有越来越多只可意会的知识来帮你确定要搜索什么,以及何时搜索。换句话说,你开始感受到专家行为的初级阶段。

第8章 控制注意力

情境,超出了本书之前的使用范围,它是指你此刻正在关注的事物的集合。比如,你正在调试一个程序,所有的变量、对象关联关系等构成了当前的情境。把它看作某一特定时刻你正处理的信息的“工作组”。

8.1 提高注意力

许多人在研究冥想的益处。最近,研究人员发现,即使是孩子——中学生——也可以受益。学生们参加了为期一年的学习,结果发现他们提高了保持平静警觉状态的能力,改善了有关情商的技能(自我控制、自我反省/意识、灵活的情绪反应),并提高了学习成绩。对于坐着呼吸来说这是个不错的投资回报。

8.2 通过分散注意力来集中注意力

丹尼尔·丹尼特(Daniel Dennett)博士提出了一种有趣的意识模型。在任何特定时刻,你的头脑中包含了事件、想法、计划等多个粗略的草稿。丹尼特将“意识”定义为某一时刻下,头脑中占有最多脑细胞或处理活动的某个草稿。

8.3 管理知识

你自己的藏书,你的笔记,甚至是你喜爱的IDE和编程语言都构成了外部信息处理系统的一部分,它是在你实际大脑之外的思维内存或处理组件。作为程序员和知识工作者,我们可能比大多数人更依赖于计算机去建立更多的外部信息系统。当然,并非所有基于计算机的工具都合适。

8.4 优化当前情境

我们不能同时关注太多不同的东西,因为当你的注意力从一个事物转移到另一事物上时,你需要切换情境。不幸的是,我们的大脑硬件无法很好地支持情境切换。

在功能更全的系统中,你可以运行一个专门的应用程序来隐藏目前使用的程序之外的所有程序。例如,在Mac上可以使用Think!屏蔽焦点以外的所有程序,或者是Desk Topple,它可以隐藏你的桌面图标,替换你的墙纸,并定时自动隐藏应用程序的窗口。

8.5 积极地管理干扰

例如,假设我在写一封电子邮件或者文章,正表达某些想法时,被打断了。我很快写下几个单词——不是完整的句子——只是提醒我自己当前的想法。这似乎很有用,关于这种线索准备的主题已经有很多研究成果了。

8.7 如何保持注意力

那么,如何才能保持注意力集中?最重要的是自我意识——记住你需要集中注意力做什么。我们大脑的默认设置不利于编程和知识型工作。
如果没有别的了,记住下面三件事情。
1.学会安抚喋喋不休的L型思维。
2.主动在前进中思考和增强思想,即使是不成熟的。
3.明确情境切换的昂贵代价,尽可能地避免。
如果你开始尝试解决这些领域的问题,就会逐渐善于管理自己的活动中心,并控制自己的注意力。

9.1 有效的改变

请记住老习惯依然存在,如果你又回到了以前的某个习惯,不要太责怪自己。大脑就是这样工作的。只要承认失误即可,按照新的想法继续前进。当然老习惯肯定会再次发生,但是要意识到它的出现,并重新回到正确的道路上去。

9.2 明天上午做什么

不管你能做什么,或者期望自己能做什么,现在就开始做。勇敢可以给人智慧、力量和神奇。现在就开始做吧。
——歌德

  • 开始承担责任,不要害怕问“为什么”,也不要害怕问“你怎么知道的”或者“我怎么知道的”,同样要大方地回答“我目前还不知道”。
  • 挑两件帮助你维持情境、免受干扰的事情,立即实施。
  • 创建一个实用投资计划,设定SMART目标。
  • 弄清楚你在所属专业领域中所处的位置(从新手到专家)和你期望的位置。保证诚实。你需要更多的诀窍还是更多的情境?更多规则还是更多直觉?
  • 实践。某段代码遇到问题了吗?尝试用五种不同的方式编写。
  • 允许犯更多错误——错误是许可的,要从中学习教训。
  • 携带一个笔记本(最好不带横线)。涂鸦,做思维导图,记笔记。让你的思想自由地流动。
  • 打开心扉接收美感和其他的感官输入。不论是你的房间、桌面还是代码,关注它们是多么地赏心悦目。
  • 开始在私人wiki上记录你感兴趣的事情。
  • 开始写博客。为你读过的书写评论。阅读更多书,你会有更多可写的东西。使用SQ3R和思维导图。
  • 让散步成为你每天生活的一部分。
  • 启动一个读书小组。
  • 再拿一个显示器,开始使用虚拟桌面。
  • 回顾每章的“实践单元”,尝试去做。

9.3 超越专家

永远提高警惕不仅是自由的代价,也是意识的代价。一旦你启动自动驾驶,你就不会转向了。或许在长途笔直的高速公路上是可以的,但是生活往往类似于通往夏威夷毛伊岛哈纳的弯曲、狭窄的道路。你需要不断重新评估你自己和你的条件,否则习惯和过去的智慧会让你看不到眼前的现实。