锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-08-11 14:30:02 50pin母端勾耳连接器k2an继电器

喜欢这本书,请买正版。

请注明铁文请注明转载。

译者序

这是一本教你如何编程大脑的书!

对于大多数普通程序员来说,使用程序设计语言编程是小菜一碟,那么如何在更高的层次上成为专家软件开发者呢?这本书给出了答案——优秀的学习能力和思维能力。从软件开发领域的角度,作者阐述了每个程序员提高内力所需的各种软知识:从新手到专家5层次、人脑的运行机制、直觉和理性的优缺点、学习方法和实践经验的重要性、控制注意力的技能等,可以说是程序员素质教育的微型百科全书。我非常支持白话版的素质定义:除了书本知识和硬性记忆,问问自己,包括我自己在内的大多数程序员,除了固化编程知识,还能拿出多少素质?IT领域知识的快速更新需要我们继续前进。当我们痛苦地追求时尚的新事物时,我们需要放慢脚步,冷静地练习我们的内部技能,以不断地应对变化,以便立于不败之地。如果你想改变现状,这本书可以是一个很好的起点。作者对各种软技能进行了深入的研究,并结合自己的经验总结成你可以珍惜的知识点,这样你就可以吸收适合自己的本质,而不需要阅读各个领域(认知科学、神经学行为理论)的专业知识。

翻译这本书的时候,我真的觉得虽然文字少,篇幅小,但内容丰富,引用经典,说明作者知识渊博,写作认真。我建议读者在阅读这本书时者不要急于求成,要仔细阅读每一章,结合自己的日常经验体验文字背后的含义。对于每一节的实践单元,要立即应用到日常工作中,观察和比较实践的前后效果,找出适合自己的行动指南!

千里之行始于足下。请打开这本书的下一页,这可能会改变你的生活

赞美这本书

这本书将促使你拥抱更美好的未来。

——Patrick Elder,敏捷开发人员

遵循Andy推荐的具体步骤可以使你最宝贵的财富(大脑)更有效率和创造力。请阅读这本书并遵循Andy做你说的事。你的思维会比以前更敏捷,你的工作会更好,你会比以前学到更多。

——Bert Bates, Head First系列书的合作者

我一直在寻找能帮助我提高学习能力的东西,但我还没有找到能与这本书相媲美的东西。这本书提供了帮助你成为专家学习者、提高技能、指导你通过快速易行的学习提高工作效率的最佳方法。

——Oscar Del Ben,软件开发人员

我喜欢谈论与情境有关的书。这本书就是这样做的,它帮助你理解为什么情况如此重要。从德雷福斯(Dreyfus)模型(让我顿悟很多事情)解释为什么经验训练效果显著(书中的攀岩例子),Andy以其幽默老练的写作风格,让读者在阅读中有所收获,提高思考和学习能力。

——Johanna Rothman, 顾问、作家和演说家

我非常喜欢Andy其内容严谨实用。

——Patricia Benner老金山加州大学社会与行为科学系主任

昨晚读完了这本书beta版本。我很喜欢NFJS研讨会上的讨论(赛马一节)真的很棒。这本书的所有内容实际上都改变了我的生活!

——Matt McKnight, 软件开发人员

这本书太有趣了,我受益匪浅。这对我来说就够了。

——LindaRising, 面向对象领域的国际演说家、顾问和专家

献给我的妻子和孩子。

献给那些梦想成真的人。

1章绪论

欢迎大家!

谢谢你选择这本书。我们将共同体验认知科学、神经学、学习和行为理论的旅程。你将看到人类大脑惊人的工作机制,并研究如何克服这个系统的局限性,以提高你的学习和思维技能。

我们将开始重建你的湿——重新设计和重新连接你的大脑,这样你就可以更有效地工作。无论你是程序员、经理、知识工人、技术陌生人还是思想家,或者你只是想让你的大脑更聪明,这本书都会帮助你。

我是一名程序员,所以我的例子和言论与软件开发领域是分不开的。然而,如果你不是一名开发人员,你不必担心。事实上,程序设计与使用神秘而深刻的编程语言编写软件无关(尽管我们总是习惯性地认为它们是相关的)。

程序设计其实就是解决问题,它需要发明、创造和灵感。不论你从事什么职业,可能都需要创造性地去解决问题。然而,对于程序员来说,既要受到数字计算机系统的严格约束,又要展开丰富而灵活的人类思考,这就会展示二者的强大力量,又会深深地暴露二者的缺陷。

无论你是一名程序员,还是一位心灰意冷的用户,可能都曾认为软件开发是人类可以想象和遇到的最艰难的工作,它的复杂性耗尽了我们的全部智慧,而一旦失败则后果是可怕的,且往往极具新闻价值。我们曾经让宇宙飞船偏离轨道,撞上遥远的星球;让昂贵的火箭爆炸,遭受无法弥补的实验损失;向消费者发送零美元的催款信,令人费解;不时让航空乘客留在机场。

    适才我们发现:这完全是我们自己的错误造成的。我们自身往往增加了程序设计的难度。随着软件行业的不断发展,我们似乎失去了作为一名软件开发人员所必需的最基础、最重要的技能。

    不过好在,我们此时此地就能改正这个错误。本书将告诉你如何去做。

    过去40年中,程序员引入到程序中的缺陷的数量已经基本保持不变。尽管程序设计语言、技术、项目方法论等都在不断改进,但缺陷发生的频率仍然保持在同一水平,没能得到改善(引自Bob Binder,基于Capers Jones的研究成果)。

    也许这是因为我们一直关注着错误的事情。尽管技术上有了很多显著的改变,但有一样东西却始终没变:我们自己——作为开发人员的人。

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

    软件是在头脑中创建的。Software is created in your head

    思想和概念是需要在团队(也包括付钱让我们开发软件的人)中分享和交流的。我们已经在改进基础技术——程序设计语言、工具、方法上花费了很多时间,当然这也是十分必要的,但现在是我们更进一步的时候了。

    现在我们需要研究的真正难题是团队内部和团队间的交流,甚至更困难的问题是完全陈旧的思想。没有任何项目是孤岛,软件不可能孤立地创建或者运行。

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

    Brooks的言论把我们推向了社会漩涡的中心。考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是:

   沟通能力;

   学习和思考能力。

    软件行业正在逐步提高沟通能力。特别是敏捷方法(见注解栏),强调了团队成员之间、最终客户和开发团队之间的沟通交流,类似《演说之禅:职场必知的幻灯片秘技[Rey08]这样的大众图书突然热卖,表明越来越多的人意识到简单、有效的沟通非常重要,这是个好的开始。

    不过,提高学习和思考能力要更难一些。

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

    也许,这些听起来都相当容易,但学习能力、批判性的思考能力和创造力——所有这些扩展思维的能力,都取决于你自己。没有人教你这些东西,你必须自己学习。我们往往错误地看待老师和学生的关系:不光是老师在教,学生也要学,学习完全取决于你自己。

    我希望本书能够帮你获得又快又强的学习能力和更实用的思考能力。

    什么是敏捷方法

    “敏捷方法”这个词最早出现在20012月的一次峰会上,与会的17个人都是软件开发行业领军人物,他们创建了各种开发方法,如极限编程、ScrumCrystal,当然也包括我们的注重实效的编程。

    敏捷方法在很多重要的方面都与传统的基于计划的方法不同,最显著的就是摆脱了死板的规则,丢弃了陈旧的日程表,注重实时的反馈。

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

1.1 再提“实用”

    从最初的《程序员修炼之道:从小工到专家》[HT00]到现在的Pragmatic系列图书,你会注意到我们一直在冠以实用(pragmatic)这个词。实用主义(pragmatism)的本质就是做对你有用的事情。

    在开始讨论之前,请牢记:每个人都是不同的。虽然我引用的很多研究成果都已经被大部分人所沿用,但也有一些还未广为使用。我会运用大量不同的材料,既有通过对大脑的功能性核磁共振扫描证实的科学事实,又有一般概念性理论,既有荒诞故事,也有“嘿,Fred做了尝试,这对他管用”的日常生活中的例子。

    在很多情况下,尤其是在讨论大脑时,根本的科学依据是未知的或不可知的。但你不必为此担心:如果某种方法是有效的,那么它就是实用的,我就会写入书中,供你思考。我希望这些方法中的大多数对你都有用。

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

    不过,总有些人与众不同,你可能就是其中一员。这也没关系,不要盲目地听从任何建议,包括我的建议。你可以用开放的思维来阅读本书,尝试执行一些建议,再判断哪些对你有用。

    什么是湿件

    wet·ware | wetwe(e)r | 词源:wet+software

    名词,谐语。指大脑细胞或思维过程,与计算机系统相对应。

    也就是说,利用计算机模型类比人类的思维过程。

    随着不断成长和适应,人们需要改变自己的习惯和方法。生命中没有什么是恒久不变的,只有死鱼才随波逐流,尝试改变自己,请把本书当作改变的开始。

    我将会分享在我的经历中发现的实用思想和方法,剩下的就看你的了!

1.2 关注情境

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

    由于现实世界的相关性,小的事物可能会有意想不到的巨大影响。这种不成比例的影响作用是非线性系统的标志,也许你并未注意到,现实世界毫无疑问是非线性的。

    当我们试图将某个事物单独挑出来时,我们发现它与宇宙中的其他事物是息息相关的。

——约翰·谬尔(美国作家),1911年,《山间夏日》

    在本书中,你会发现一些活动只有不起眼的差异,看不出它们之间能有什么区别。比如,冥想与大声说出你的想法,或者在纸上写一句话与在计算机编辑器中输入这句话。抽象地讲,这些事情应当是完全等价的。

    然而,事实并非如此。

    这些活动使用了大脑中完全不同的思维路径,这些思维路径深受人类思想和思考方式的影响。思想并没有与大脑或身体的其他部分切断,它们相互间是密切相连的。这只是一个例子(在本书的后面章节将会讨论更多关于大脑的话题),但它有助于说明理解这些相互作用的系统的重要性。

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

    在《第五项修炼[Sen90]一书中,Peter Senge推广了系统思维(systems thinking)这

个词语,描述了另外一种观察世界的方法。在系统思维中,人们试图将一个事物看作几个系统的连接点,而不是一个独立的个体。

    例如,你可能把一棵树看作一个单独、离散的对象,立在地面。但事实上,一棵树至少是两个主要系统的连接点:树叶和空气的处理循环与根和泥土的处理循环。树不是静止的,也不是孤立的。更有趣的是,几乎没有人只是系统的一个观察者,不论你是否意识到,很可能你就是这个系统的一部分(来源于Heisenberg的测不准原理,更一般性的观察者效应(obscrver effect)认为人必须通过改变系统来认识它)。

    诀窍1:始终关注情境。

    将这句话写下来贴在你的墙上、书桌上、会议室里、白板上,甚至任何你独立思考或与他人共同思考的地方。我们将会在本书后面讨论这个主题。

1.3 所有人都关注这些技能

    在我构思如何写这本书的时候,我发现很多不同领域的人都在谈论这些我感兴趣的话题。这些领域包括:

   MBA和高级管理人员的培训;

   认知科学研究;

   学习理论;

   护理、卫生保健、航空以及其他行业;

   瑜伽和冥想;

   编程、抽象和问题解决;

   人工智能研究。

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

    当你从以上各个领域发现事物虽有不同的表象却有着相通之处,这其实是一个信号。在如此众多的不同情境下却拥有类似的思想,那么必然存在某些根本和重要的东西。

    瑜伽和冥想训练近来相当流行,却似乎想不出有什么明确的原因。大约200510月前后,我曾经在飞机上看到杂志上的标题醒目地写着“公司提供瑜伽和冥想训练以减少不断增加的保健成本”。

    大公司以前从没有提供过类似活动,但是医疗费用的急速增长迫使它们去寻找一切解决办法。很显然,它们相信瑜伽和冥想的练习者会比普通人拥有更强健的体魄。在本书中,我们更关心这些方法与认知相关的地方,当然如果能获得全面健康那也是很不错的收获。

    我也注意到MBA和高级管理人员的很多教程都在提倡各种思考性的、创造性的、直觉性的技能,这些东西都是当前已有的研究成果,不过还没有普及到奋战在第一线的员工,包括我们这些知识型工作者。

    但是不要担心,我会在本书中讨论这些话题,非MBA也能享受这些成果。

1.4 本书结构

    每一次美好的旅程都由一幅地图开始,我们的地图就在本节。尽管本书的章节是按顺序依次排列的,但这些章节却是相互关联的。

    毕竟一切事物都是相互联系的,但是当你面对一本顺序写成的书时,却不容易领悟到这个观点。你也许无法通过书中各章节中无数个“又见”的提示,去体会到这种关联性,那么通过本节内容,我希望你能稍微明白一些各主题之间的联系。

    请记住,以下的主题就是本书的方向,虽然讨论中我们还会说些别的话题。

1.4.1 从新手到专家的历程

    在本书的第一部分,我们将研究一下大脑为何如此运转,一开始就引入一个流行的专业模型。

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

1.4.2 认识你的大脑

    当然,在软件开发中最重要的工具就是你自己的大脑。我们将会讨论一些认知科学和神经系统科学的基本知识,因为它们与软件开发人员的兴趣密切相关,比如把大脑模型可以类比成双CPU、共享总线设计,以及如何对你自己的大脑作“手术”。

1.4.3 正确使用大脑

    一旦对大脑有了更深的认识,我们将想方设法提高创造力和问题解决能力,以及更有效地获取经验。

    我们还将探讨直觉从何而来。直觉是专家的基本特征,事实上难以驾驭。你需要它,依赖它,但或许也莫名其妙地反对经常使用它。你可能总会怀疑自己或其他人的直觉,错误地认为它是“非科学的”。

    我们将探讨如何转变这种思想,给直觉更大的活动空间。

1.4.4 调试你的大脑

    直觉是非常奇妙的技能,当然直觉出错时除外。在人类思考中存在着许多“已知的缺陷”:个人认知偏见、时代及同代人的影响、固有的个性,甚至是大脑底层的生物性缺陷。

    这些缺陷经常会误导人们做出错误的判断,甚至走向灾难性的深渊。

    了解这些常见缺陷是消除其影响的第一步。

1.4.5 积极学习

    既然我们对大脑的工作方式有了深入了解,那么接着我们开始研究如何利用这个系统,引入有关学习的话题。

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

    但是我们绝大部分人并没有学习过如何去学习,只是凭自我感觉。我将告诉你一些具体的技巧来帮助你改进学习能力。我们将探讨做计划的技能、思维导图、阅读技巧(SQ3R),以及教学和写作的认知重要性。拥有了这些技能后,你将会更快、更容易地吸收新的信息,获得更强的洞察力,更好地融会贯通新的知识。

1.4.6 积累经验

    积累经验是学习和成长的关键——实践出真知。但单纯的“实践”并不是成功的保证,你需要从实践中学习其中的价值,而一些常见障碍会让这个过程很艰难。

    但你也不要刻意地拼命实践,过犹不及,我们将研究如何利用反馈、乐趣和失败来创造更有效的学习环境,关注设定最后期限的危害,并体会如何通过自我引导积累经验。

1.4.7 控制注意力

    控制注意力是此次旅程的关键下一步。我将分享一些技巧,帮助你管理需要学习和实践的大量知识、信息和见解。我们生活在信息丰富的时代,而且日常工作很容易搞得你焦头烂额,你没有机会推进自己的职业生涯。让我们共同解决这个问题,加强你的注意力。

    我们将研究如何优化你当前的情境,如何更好地处理烦人的打扰,并看一看打扰为何有害。我们还将探讨为何需要分散一些注意力,以便更好地聚焦于思维浸泡之中,并以更积极的方式管理你的知识。

1.4.8 超越专家

    最后,我们将快速讨论一下为何改变自己比想象中的困难,并且我会提供一个你可以立即付诸行动的建议。

    我将分享专家之上还有什么层次,并告诉你如何达到。

    现在,请坐下,端起你的可口饮料,让我们揭开本书的神秘面纱。

1.4.9 实践单元

    在本书中,我会设立一个“实践单元”,可以让你加深印象并真正掌握所学内容。这部分会包括练习、实验或者培养习惯。我使用多选框标记,这样当你完成一项后,可以画个勾,就像下面这样。

   认真思考一下你的项目的当前问题。你能指出它所涉及的不同系统吗?这些系统是在何处交互的?这些交互点是否与你当前的问题相关呢?

   找出情境中导致你的问题出现的三个因素。

   在你的显示器周围的某个地方,贴上一个标签“关注情境”。

    关于插图

    你可能注意到本书中的插图并不像通常采用Adobe Illustrator或类似软件制作出来的精致图片那样,这是我故意的。

    Forrest M. Mims的电子书,到敏捷开发人员所钟爱的小纸片上的设计文档,手绘插图具有独特的作用,我们会在本书后面的内容中看到。

1.5 致谢

    非常感谢Ellie Hunt向我介绍了德雷福斯模型以及相关的护理方面的知识,帮助修改我不通顺的文字,确保了本书的进度,同时打理着我们的公司。编辑的工作通常非常艰苦且不讨好,仅仅在前言中表示感谢远远不够。集编辑、母亲和管理者的角色于一身,她展示了高超的技巧和极大的耐心。

    感谢在Pragmatic Wetware邮件列表中的朋友们及审阅人,包括Bert BatesDon GrayRon GreenShawn HartstockDierk KoenigNiclas NilssonPaul OakesJared RichardsonLinda RisingJohanna RothmanJeremy SydikSteph Thompsont,以及所有分享过他们的想法、经验和文章的人们。这些经验的碰撞极其宝贵。

    特别感谢June Kim对整本书的众多贡献,他告诉了我许多研究线索和他本人学习与思考的经验,并且他在本书孕育的各个阶段均做出了积极反馈。

    同样要特别感谢Patricia Benner博士,她将德雷福斯模型引入到护理行业中,感谢她的支持,允许我引用她的研究成果,还感谢她对学习能力研究的巨大热情。

    感谢Betty Edwards博士,她是开展大脑半球研究的实际应用的急先锋,感谢她的支持,允许我引用她的研究成果。

    感谢Sara Lynn Eastler为本书做索引,感谢Kim Wimpsett为本书校正单词和语法,感谢Steve Peter为本书做了精美排版。

    最后,感谢你购买了本书,并和我一起开始这个旅程。

    让我们的事业沿着正确的方向不断前进,运用我们的经验和直觉,创造适合学习的新环境。

2章从新手到专家的历程

    制造问题的思维方式无法用来解决问题。

    ——阿尔伯特·爱因斯坦

    难道你不想成为专家吗?不想凭直觉就知道问题的正确答案吗?这是我们一起探索旅程的第一步。在本章中,我们将看一看什么是新手,什么是专家,以及从新手变成专家需要经历的各个阶段。让我们出发吧。

    从前,有两名研究人员(兄弟俩)想要推动人工智能的技术发展水平,准备编写一个能够像人类一样学习和获取技能的软件(或者证明这根本不可行)。为了实现这个目标,他们首先得研究人类是如何学习的。

    他们提出了德雷福斯技能获取模型(出自Mind Over Machine: The Power of Human Intuition and Expertise in the Era cf the Computer[DD86]),概括了从新手到专家必须经历的5个阶段。这个模型已经被证实是行之有效的,接下来我们将深入探讨它。

    让我们回到20世纪80年代初,当时美国的护理专业人员使用德雷福斯模型纠正她们的工作方法,帮助她们提高专业技能。那时,护士们面对的问题与我们如今在软件开发领域面对的许多问题都是相同的,她们现在已经取得了巨大的进步,而我们还要继续努力。

    事件理论与构建理论

    德雷福斯模型是所谓的构建理论。理论分两种:事件理论和构建理论(参见 Tools of Critical ThinkingMetathoughts for Psychology[Lev97])。这两种理论都用于解释我们观察到的现象。

    事件理论可以被测量,这类理论可以被验证或证明,你能够判断某个事件理论的准确性。

    构建理论是无形的抽象,无法被证明。构建理论是通过它的用处来衡量的。你无法判断某个构建理论准确与否。它是客观存在和抽象的结合体。就像苹果是存在的,苹果是事物,存在则是抽象。

    例如,我可以使用简单的电流或者复杂的医学成像设备来证明大脑的所有部件,但是我无法证明你有思维,思维是一种抽象,事实上没有这种客观事物,只是一种概念,但是它是一种非常有用的概念。

    Dreyfus模型是一种构建理论,是一种抽象。我们随后将看到,它非常有用。

    下面列举了一些人们观察到的现象,适用于护理和软件开发,也可能适用于其他行业。

   实际工作中,专家级职员并不总被认为是专家,也没有拿到相称的薪水。

   不是所有专家级职员都想成为管理者。

   职员的能力存在巨大的差异。

   管理者的能力存在巨大的差异。

   任何团队的成员在技术水平上可能各不相同,无法看作一个同质的可替代资源集合。

    除了更好、更聪明、更快,技术水平还有更多的内涵。德雷福斯模型描述了我们的能力、态度、素质和视角在不同的技术水平下是如何变化的,以及为什么会有变化。

    这有助于解释为什么过去许多改进软件开发的办法会失败。德雷福斯模型建议我们采取一系列行动,切实改进软件开发行为——无论是为了个人还是为了整个行业。

    下面让我们来看一看。

2.1 新手与专家

    你如何称呼一名专家级软件开发人员呢?巫师。当我们遇到魔数,十六进制数据、僵尸进程和复杂的指令(比如tar -xzvf plugh.tgz或者sudo gem install --include-dependencies rails)时,他就会出现。

    有了他,我们甚至可以转换成其他用户身份,或者切换到root用户——Unix世界最高权力的化身(见图2-1)。巫师们处理这些棘手的事情看起来易如反掌。眯起双眼,指尖一缕尘埃,口念咒语,“噗”的一声,一切问题解决了。虽然带有神秘的色彩,但是我们印象中特定领域的专家都是这种形象(他们是如此地神秘,带给我们的印象是如此地深刻)。

2-1 Unix巫师(略)

    使工作看起来很轻松

    曾经有一次,我有机会面试专业的风琴演奏者。对于试音环节,我选择了法国作曲家Charies-Marie WidorToccata片段(出自第5交响乐F小调,第42曲第一章),节奏非常快,我比较业余,感觉这节比较难。

    一位候选者演奏得很好——两脚踏板,飞快转动,双手跃动,十指模糊,双眉紧,严肃专注。最后,她满头大汗。演奏太出色了,我被打动了。

    但是随后真正的专家出现了。她弹得更好一些,更快一些,在她的双手和双脚灵活地演奏时,她一直微笑着与我们交谈。

    她使演奏看起来很轻松,最终她得到了这价工作。

    例如就专家级大厨来说,他们徜徉于面粉和香料的缭绕之中,不必关心越堆越高的脏盘子(这些都留给实习生清洗),大厨只要努力琢磨、清楚表达如何做好这道菜。“来一点这个,那个少点——不要太多,然后开始烹饪直到完成。”

    厨师长克劳德这样说不是故意卖关子,他知道“烹饪直到完成”的含义。他知道“刚好够”和“太多”之间的细微区别依赖于湿度、肉的来源以及蔬菜的新鲜程度。

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

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

    当专家在做事时,我们其他人觉得十分神奇。神秘的魔法看起来似乎无处可寻,当我们甚至还不完全认识问题的时候,专家就已经凭借一种不可思议的能力知道了正确的答案。

    当然,这不是魔法,只是他们认识世界的方式、解决问题的方法、运用的思维模型等都和普通人显著不同。

    而一个新厨师在辛苦工作一天回到家里后,可能不会关心湿度和原料方面的细微差别。他只想知道食谱中到底需要放入多少藏红花(不仅仅只考虑藏红花特别昂贵这个因素)。

    他想知道的是,如果已知肉的重量,如何精确设定烤肉箱的定时器时间,等等。这并不是说他迂腐或者愚蠢,只是他需要明确的、与情境无关的指令,便于参照执行。而如果专家被强制遵从那些规则操作,他们的工作就会变得效率低下。

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

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

    早在20世纪70年代,德雷福斯兄弟(休伯恃和斯图尔特)就开始研究人类如何获取和掌握技能。

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

    德雷福斯兄弟考察了行业技术能手,包括商用客机飞行员和世界著名国际象棋大师(出自From Novice to Expert: Excellence and Power in Clinical Nursing Practice [Ben01])。他们的研究表明,从新手到专家要经历巨大的变化。在这个过程中,人们不只是“知道更多”或者获得了技术,而且还在如何认识世界,如何解决问题以及如何形成使用的思维模型等方面体验到根本性的区别。人们获取新技术的方式发生了变化,影响(促进或阻碍)人们工作业绩的外部因素也发生了变化。

    不同于对整个人进行划分的其他模型或评估体系,德雷福斯模型具体针对每项技能。换言之,这是一个情境模型,而不是个性或能力模型。

    对于所有的事情,你既不是“专家”也不是“新手”,你只是处于某个特定技能领域中的某个水平阶段,虽然你可能只是烹饪新手,但却可能是跳伞专家。大多数非残障成人在直立行走方面都是专家——无需计划或者思考。这已经变成了本能。大多数人在税务规划方面都是新手。如果提供足够多的明确指令,我们就能够完成它,但是事实上我们不知道那是怎么回事(不明白为什么这些规则如此神奇)。

    让我们来看一看从新手到专家所经历的5个阶段。

2.2.1 阶段1:新手

    由定义可知,新手在该技能领域经验很少或者根本没有经验。这里提到的经验,指的是通过实施这项技术促进了思维的改变。举个反例,可能一个开发人员声称拥有十年的经验,但实际上只是一年的经验重复了九次,那么这就不算是经验。

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

    但是,如果给新手提供与情境无关的规则去参照,他们就会变得能干起来。也就是说,需要这种形式的规则:“当X发生时,执行Y。”换言之,需要一份指令清单。

2-2 玉米饼食谱,不过你知道需要烹饪多长时间吗(略)

    这就是呼叫中心的工作原理。你可以雇用一大批对当前技术没有很多经验的人,然后让他们按照一个决策树按部就班地执行下去。

    新手需要指令清单。Nevices need recipes

    一个大型计算机硬件公司可能使用下面这样的规则列表。

1.         询问用户计算机是否接上了电源。

2.         如果是,询问是否已供电。

3.         如果否,请用户接电源,然后等待。

4.         ……

    类似于上面这种乏味却固定的规则可以衡量新手的能力。当然,新手所面临的问题是,对于某种情境,不知道哪条规则是最相关的。当一些意想不到的事情发生时,他们就会不知所措。

    和大多数人一样,我对于纳税申报一直知之甚少。我没有太多经验,尽管我已经填写申报文件超过25年了,我还是没有学到任何东西,也没有改变思维方式。我也不想学习,我只想实现目标——处理完今年的税务问题。我不知道如何面对错误。当国税局给我寄来简短且冷冰冰的表格时,我通常不知道表中各项目是什么意思,也不知道怎么处理它(我总是希望把它和一张支票交给我的会计师来处理,他才是这方面的行家)。

    当然,总有解决办法。可以求助于一个与情境无关的规则!类似于下面列出的步骤。

    填写你去年赚的金额。

   寄给政府。

   简单而清楚。

    指令清单(包含情境无关的规则)的问题在于你不能一五一十地将所有事情解释清楚。例如,玉米饼食谱中提到烹饪“大约20分钟”,那么我什么时候需要延长或者缩短时间?我如何知道已经做好了?你可以设立更多的规则去解释,然后再用更多的规则去解释刚设立的规则,没有一个实际的界限约定你需要说得多明白。这种现象被称为无限递归(infinite regression)。因此,你必须明确中止反复解释。

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

2.2.2 阶段2:高级新手

    一旦经过新手的历练,人们开始以高级新手的角度看待问题。高级新手能够开始多多少少地摆脱固定的规则。他们可以独自尝试任务,但仍难以解决问题。

    他们想要快速获取信息。例如,当学习一门新语言或API时,你可能会感觉到这点,你发现自己会快速浏览文档以寻找一个方法定义或参数列表。你不想在此刻寻根究底,或者重新温习一遍基础知识。

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

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

    当公司CEO举行全体会议并展示销售预测图表和数据时,你可能会看到这样的反应。许多在这方面经验较少的员工对这些会不加理会,以为这与他们自己的工作不相关。

    当然,其实这是非常相关的,它可以帮助你判断明年你在这家公司是否还能继续干下去。但是,你看不到这种联系,因为你层次还不够,只处于较低的技能水平。

2.2.3 阶段3:胜任者

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

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

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

    你可能会看到,处于这一水平的人通常被认为有“主动性”和“足智多谋”。他们往往在团队中发挥领导作用(无论是否有正式的头衔)(参见Teaching and Learning Generic Skills for the Workplace [SMLR90])。他们是团队里的好人,既可以指导新手,也不会经常骚扰专家。

    在软件开发领域,我们达到了这个水平,但是即便在这一水平,人们仍然无法按照我们希望的方式来应用敏捷方法——大家还没有足够的能力反思和自我纠正。为此,我们需要取得突破,达到一个新的水平:精通。

2.2.4 阶段4:精通者

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

    例如,处于精通阶段的人拨打计算机的技术支持热线电话,被询问是否插上了电源的时候,不会作出良好反应。(比如我在这种情况下就会想顺着电话线摸到那一头,狠狠地惩罚那个说话的人。)

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

    但是,在德雷福斯模型中,处于精通水平的从业人员有一项重大突破:他们能够纠正以往不好的工作表现。他们会反思以前是如何做的,并修改其做法,期望下一次表现得更好。到这个阶段,自我改进才会出现。

    同时,他们会学习他人的经验。作为精通者,他能够阅读案例研究,倾听有关失败项目的流言蜚语,观察别人怎么做,从故事中认真学习,即使他没有亲自参与。

    伴随向他人学习的能力而来的,是理解和运用格言经验之谈(maxim)的能力,这些经验之谈犹如谚言或格言,是可以应用于当前情境的基本原理(参见Personal Knowledge [Pol5S])。经验之谈不是指令清单,它们必须在一定的情境下使用。

    务实的秘诀

    Dave Thomas和我刚开始写《程序员修炼之道》时,我们试图传达给读者一些与我们的专业最相关的建议。

    这些诀窍(经猃之谈)凝结了我们多年来的专业经验。从每年自我拓展学习一门新语言到“不要重复自己”和“不要打碎窗户”的原则,类似的经验之谈是传授专业技能的关键。

    举例来说,一个众所周知的极限编程方法的经验之谈是“测试一切可能出错的东西”。

    对于新手来说,这只是一个指令清单。测试什么?是所有的settergetter方法,还只是打印语句?他们最终会测试所有无关的东西。

    但是,处于精通水平的人员知道什么地方有可能出错,或者更确切地说,什么地方非常有可能出错。他们具有经验和判断力,能够理解这句格言在情境中意味着什么。事实证明,理解情境是成为专家的关键。

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

    同样,处于精通水平的人可以有效地运用软件模式(《设计模式:可复用面向对象的软件》[GHJV95]一书提出的),但是这不是较低技能水平所必须掌握的。

元器件数据手册、IC替代型号,打造电子元器件IC百科大全!

相关文章