《程序员的思维修炼 开发认知潜能的九堂课》 Part 01

第一章 绪论

1、巨大的软件工程一旦失败后果是可怕的,且往往极具新闻价值,比如宇宙飞船偏离轨道,昂贵的火箭爆炸,给用户寄去索要0美元的催款信。
2、软件产品处于应用、用户、规则和硬件的合力之下,这些因素不断地变化,迫使软件产品随之而变,《没有银弹》。
3、敏捷方法在很多重要的方面与传统的基于计划的方式不同,最显著的就是摆脱了死板的规则,丢掉了陈旧的日程表,注重实时的反馈。
4、湿件(wetware):指人脑细胞或思维过程,与计算机系统相对应,也就是说,利用计算机模型类比人类的思维过程。
5、关注情景,使用系统思维(Systems Thinking),是一种观察世界的方法,将一个事物看做几个系统的连接点,而不是一个独立的个体。
6、技能领域的 德雷福斯模型 (Dreyfus Model)是研究如何超越新手层次,不断精通技术的有效方法。

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

1、德雷福斯技能获取模型:概括了从新手到专家必须经历的5个阶段,他本身是一个 构建理论 (theory construction),是一种 抽象。
2、理论分为两种:
①事件理论:可以被测量,可以被验证或者证明。
②构建理论:抽象无法被证明,是通过它的用处来衡量的,无法判断某个构建理论准确与否,比如思维是一种抽象,事实上没有这种客观事物,只是一个概念。
3、德雷福斯模型描述我们的能力、态度、素质和视角在不同技术水平下是如何变化的,以及为什么会发生变化。新手与专家,专家的印象:眯起双眼,指尖一缕尘埃,口念咒语,“噗”的一声,一切问题解决了,虽然带有神秘色彩,但是我们印象中的特定领域的专家都是这个形象。
他们很多的行为是如此的熟练以至于已经变成无意识的了。他们的大量经验都是通过大脑的非语言,无意识区域存储的,让我们难以观察,而专家则难以表述。
当我们甚至还不完全认识问题的时候,专家就已经凭借一种不可思议的能力知道了正确的答案,新手和专家有着根本的区别,他们看待世界的方式不同,反应也不同。
4、德雷福斯模型的五个阶段:
研究表明,从新手到专家要经历巨大的变化,在这个过程中,人们不只是“知道更多”或者获得了技术,而且还在如何认识世界,如何解决问题以及如何形成使用的思维模型等方面体验到根本性的区别。
不同于对整个人进行划分的其他模型或者评价体系:德雷福斯模型具体针对每项技能,换言之,这是一个情景模型,而不是个性或能力模型。
①新手 Novice
新手在该技能领域经验很少或者根本没有经验(经验:通过实施这项技术促进了思维的改变),没有经验指导,不知道自己是对是错,不是特别想学习,为了实现一个立竿见影的目标,不知道如何应对错误,且出现错误时易慌乱。
给新手提供情景无关的规则去参照,他们就会变的能干起来,比如呼叫中心,可以雇佣一大批对当前技术没有很多经验的人,然后让他们按照一个决策树按部就班地执行下去。
规则让你启程,不会让你走的更远。
新手需要指令清单(Novices need recipes)
②高级新手 Advanced Beginner
高级新手能够开始多多少少地摆脱固定的规则,他们可以独自尝试任务,但仍难以解决问题,根据过去的经验,逐步在正确的情境下采纳建议,能够开始形成一些总体原则,但不是“全貌”。
高级新手不想要全局思维(Advanced Beginners don’t want the big picture)
③胜任者 Competent
从业者现在能够建立问题域的概念模型,并有效的使用它们。与更高水平的追随下意识的反应不同,胜任者会探寻和解决问题,他们的工作更多是基于谨慎的计划和过去的经验。
他们是团队里的好人,既可以指导新手,也不会经常骚扰专家。在这个水平,人们仍然无法按照我们希望的方式来应用敏捷方法——大家还没有足够的能力反思和自我纠正。
胜任者能够解决问题 (competents can troubleshoot)
④精通者 Proficient
这一级别有了重大突破:他们能够纠正以往不好的工作表现,他们会反思以前是如何做的,并修改其方法,期望下一次表现的更好,到了这一个阶段,自我改进 才会出现。
他们会学习别人的经验,能够阅读案例研究,观察别人怎么做,从故事中认真学习,能够理解和运用格言经验之谈(不是具体的指令清单),理解情景是成为专家的关键。
精通者有足够的经验,他们知道下一步会发生什么,如果没有发生又需要改变什么,他们非常明确哪些计划需要取消,而应该采取什么行动。精通者可以充分利用思考和反馈,这些都是敏捷方法的核心。
精通者能够自我纠正(Proficient practitioners can self-correct)
⑤专家 Expert
专家是各个领域知识和信息的主要来源,他们总是不断的寻找更好的方法和方式去做事,专家的数量很少,占人群的1%~5%,专家靠直觉工作,且不需要理由。
专家知道哪些是无关紧要的细节,哪些是非常重要的细节。也许不是有意识的,但是专家知道应该关注哪些细节,可以放心的忽略哪些细节。专家非常擅长做有针对性的特征匹配。
5、现实中的德雷福斯模型:
①专家并非圣人,他们会像其他人任何人一样犯错误,会有同样的认知偏见和其他的种种偏见。
② 不知道自己不知道:当你在某个领域不是很擅长的时候,你很可能认为自己是这方面的专家,缺少准确的自我评价被称为 二阶不胜任(second-order incompetence),也就是不知道自己不知道。很多的程序员和经理都意识不到有更好的方法和实践存在;无知往往源于自信而不是知识,一旦你成为专家,你会痛苦的意识到你知道的是那么少。
③任何对开发指定严格规则的方法或企业文化,会对团队里的专家造成影响,这将拖累其业绩表现,下降到新手的水平。
④直觉是专家的工具,企业往往忽略它,因为直觉“不科学”或者“不可重复”。
⑤敏捷开发是非常有效地工具,但是不适合完全由新手和高级新手组成的团队。
⑥怠工:如果不允许全面的**,那么消极的工作通常是一种示威的手段;消极怠工和恶意服从,结果是大量的延误和混乱。
⑦开发人员之间存在着20~40:1的生产力差距,这个和传统行业是不同的,因此过度的照顾新手会大大降低效率。
⑧新手使用规则,专家使用直觉。
⑨新手到专家的转变,脱离独立和绝对化的规则,进入直觉的境界并成为系统的一部分。
6、技能分布的糟糕现实
德雷福斯模型并不符合标准的正态分布,大部分人的大多数技能,在他们生命的大多数时间里,从来没有高于第二阶段的高级新手; 元认知(metacognitive)能力,或者自我认知能力,往往在较高的技能层次中才会具有,不幸的是,这就意味着处于较低技能层次的从业者会明显的高估自己的能力,正确自我评价的唯一方法就是提高个人技能层次,这反过来又会提高元认知能力。
不知道自己不知道的新手往往信心十足,专家会更多的自我怀疑,同时专家并不总是好的老师,教学是一门技能,你在某个领域是专家,并不代表你可以把它教给别人。
专家的直觉和识别模式已经超越了他们显性的知识。
7、有效地使用德雷福斯模型
世界级的专家往往需要至少十年的辛勤工作,一旦你成为某个领域的专家,在别的领域成为专家就会变得容易,至少你已经有了现成的获取知识的技能和模型构建的能力。
8、勇于承担责任
在程序员和其项目经理或者项目构架师的身上可以看到非常类似的问题(护士听话,医师承担责任,并且护士不反馈的问题),程序员对负责构架,需求甚至业务流程的相关人员的反馈要么根本没有,要么被严词拒绝,程序员经常实现一些他们明知道是错误的东西,忽略警告等问题。
程序员也要承担责任,以便在特定情境下动态变化做出现场决定。“我只是执行命令”这样的说辞在纽伦堡审判中无益于摆脱二战期间所犯的罪行。
为了实现工作态度上的转变,我们确实需要提高技能。高级新手无法自己做出这类决定,因此我们必须培养高级新手,使他们把技能水平提高到胜任者的水平。
9、警惕工具陷阱
模型是一个工具,不是一面镜子;规则无法告诉你在某种情况下应该采取的最合适的行为或者正确的模型,它们充其量也就是“自行车的辅助轮”——可以帮助启动,但是却限制并大大妨碍了以后的表现。

第三章 认识你的大脑

1、大脑的配置为双CPU,单总线共享的总线的设计:

左脑主要负责线性,逻辑思维和语言处理,相对缓慢的处理过程,使用很少的部分资源;
右脑:可以理解成一个超级正则表达式的搜索引擎,负责处理搜索和模式匹配。当你“思考”其他事情的时候,它可以去寻找线索,然后异步的返回结果,因为R处理器不带有语言处理能力,这意味着它的结果也不是语言可以表达的。

R型对直觉、问题解决和创造性非常重要,L型让你细致工作并实现目标;

2、记忆是全息存储的,每一半仍具有完整的信息和图像,只是保真度和分辨率低了一些而已;人类具有超强的感知能力,其中很多无法用语言有效地表达出来。比如你可以立即认出大量的熟悉的人的面孔,但是当你尝试描述亲爱人的脸庞,你会感觉有心无力。

人们认为记忆有些类似闪存,是通过具体实体暂留性的神经元来录制,记忆由一个执行循环体主动维护着。大脑没有静态RAM,RAM需要不断的刷新,否则数据就会消失。

R型搜索引擎不受你的直接意识的控制,R型在做存储的时候非常的卖力,可能你的每一次经历,不论多么的平淡乏味,都会被存储。但是它不一定会被索引。大脑把它存储起来(比如存储到硬盘中),但是不会建立一个指向他的索引或者指针。

3、随时记录想法
每周7天每天24小时需要随时准备好记录任何灵感和想法,如果你不记录伟大的想法,你就不会意识到拥有过它们;拥有好想法的人们里面,只有少数人在努力追踪它们。而其中,又只有更少数的人会努力付诸实践行动,随后,仅有少之又少的人有能力将好的想法成功实现。

4、L型和R型的特征
①最快的处理方式是甚至没有到达大脑皮层的肌肉记忆类反应,本能的刹车或者躲避自行车的过程都没有CPU的参与,这些都是在“外设”中完成的。由于飞速的键盘输入和类似的物理技能对程序员来说意义不大,这里不会多讨论无CPU的模式和反应。
② 大脑因此被分成d模式(deliberate)和潜意识,潜意识某事则强调R的CPU在无意识下运行的。

L型提供如下的能力:
语言、分析、符号、抽象(提取小部分信息【本质】,并用其表示事物的整体)、时间、推理【基于理智和事实得到结论】、数字、逻辑、线性思维【依照关联、依序推演问题和思考,得出收敛性的结论】
这是白领们,信息工作者和工程师渴望的本领。

R型:
是非语言的,它可以获得语言但是不能创建语言,他喜欢综合学习集合事物形成整体,总是如实的反应事物。它不受理性的约束,因为它不需要基于原因或者已知的事实来处理输入,因此它愿意暂时不做任何判断。
R型对对是注意整体的,总是希望以此就能看到事物整体,感知整体的模式和结构。

5、为何强调R型
我们需要更多的使用R型,因为R型能够提供直觉,这是成为一名专家迫切需要的,没有它,我们就不能成为专家。专家依赖观察和区分模式,这里也有模式匹配。
面对复杂的设计问题或者难以修改的bug,游戏的程序员通常都有冲动去编码和构建,由此可以从中学习,这就是R型的综合。而不是L型的分析。这就是为什么我们喜欢原型和独立的单元测试。它们给我们综合学习的机会——通过构建。
综合是一项非常伟大的学习技术,比如如果需要了解一只青蛙,传统的解剖不是办法,更好的方式是构造一只青蛙。

可以做很多的事情来提高大脑解决问题的能力,比如适当的同时利用两种思维模式——简单的技巧,边打电话边想着涂鸦,同时随手把玩这些小东西。

6、设计胜于功能
既然无法在价格上有竞争力,你必须在美学品味上赢得竞争;
①具有吸引力的用户界面要比不具有吸引力的(丑陋的)界面更易于使用,即使流程和功能都是完全一样的;
②审美因素可以影响到认知过程。
积极的情感对学习和创造性思维非常重要。处于“高兴”的状态可以扩展你的思维过程,激活更多的大脑物质。
反之同样成立,当你害怕或者生气(充满消极的情绪),你的大脑开始停止提供多余的资源,处于明显破坏的环境中的事物也可能导致更大的灾难,我们看到了 破窗理论(Broken Windows Theory)。已知的问题(比如代码的bug、糟糕的组织流程,欠缺的用户界面或者混乱的管理)如果不加以改正会产生病毒一样的影响,最终造成重大危害。

设计不是创造美,美来自于选择、共鸣、同化和爱。(Beauty emerges from selection)。

7、如果你想发现全局、整体的模式,你需要R型,如果你需要分析本分和细节,你需要L型。对于我们大多数人来说,这种层次的专长就是这样区别的。R型看深林,L型看树木。

8、神经可塑性:
大脑的可塑本质,意味着你能够学习的最大容量或者你可以获得的技能数量不是固定的。没有上限,你只要相信这一点就好了。

9、大脑皮层的竞争
你持续使用和实践的技能会逐渐的占据统治地位,较少使用的技能会失去阵地。“不使用就会失去”,大脑会把更多的资源用於你做的最多的事情。

猜你喜欢

转载自blog.csdn.net/yyjava/article/details/82349149