《程序员的思维修炼》的笔记-第1页
- 页码:第1页 2013-07-04 10:34:40
【第1章 绪论】 程序设计其实就是解决问题,它需要发明、创造和灵感。不论你从事什么职业,可能都需要创造性地去解决问题。然而,对于程序员来说,既要受到数字计算机系统的严格约束,又要展开丰富而灵活的人类思考,这就会展示二者的强大力量,又会深深地暴露二者的缺陷。 考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是: 沟通能力 学习和思考能力 【2.1 新手与专家】 清晰表述专业技能十分困难。 It's hard to articulate expertise. 新手和专家有着根本区别,他们看待世界的方式不同,反应也不同。 【2.2 德雷福斯模型的5个阶段】 德雷福斯模型针对每项技能。 Dreyfus is applicable per skill. 【2.3 现实中的德雷福斯模型:赛马和赛羊】 诀窍2:新手使用规则,专家使用直觉。 从新手到专家的过程涉及的不仅仅是规则和直觉。在你提升技能水平的过程中,有许多方面会发生改变。最重要的三个变化如下。 从依赖规则向依赖直觉转变。 观念的改变,问题已不再是一个相关度等同的所有单元的集合体,而是一个完整和独特的整体,其中只有某些单元是相关的。 最后,从问题的旁观者转变为问题涉及的系统本身的一部分。 这是从新手到专家的转变,脱离独立和绝对化的规则,进入直觉的境界并(记得系统思考吗?)最终成为系统本身的一部分(参见图2-3)。 大多数人都是高级新手。 Most people are advanced beginners. 专家并不总是最好的老师。教学是一门技能,你在某个领域是专家,这并不能保证你可以把它教给别人。 【2.4 有效地使用德雷福斯模型】 而且需要辛勤工作——只是在某领域工作十年是不够的。你需要实践。根据著名认知科学家Dr. K. Anderson Ericsson的说法,积极的实践需要四个条件。 需要一个明确定义的任务。 任务需要有适当难度——有挑战性但可行。 任务环境可以提供大量反馈,以便于你采取行动。 提供重复犯错和纠正错误的机会。 稳步做这种实践十年,你就会达到目标。正 一旦你成了某个领域的专家,在别的领域成为专家就会变得更容易。至少你已经有了现成的获取知识的技能和模型构建的能力。 诀窍4:通过观察和模仿来学习。 小号手Clark Terry曾经告诉学生们学习音乐的秘密是经历三个阶段: 模仿 吸收 创新 也就是说,首先模仿现有的做法,然后慢慢地吸收内在的知识和经验,最终将超越模仿阶段并能自主创新。这和被称为Shu Ha Ri的武术训练周期有异曲同工之妙。 在Shu阶段,学生模仿老师教授的技术,原模原样。在Ha阶段,学生必须思考其中的意义和目的,以达到更深的理解。Ri意味着超越,不再是一名学生,已经具有了自己的创新。 【2.5 警惕工具陷阱】 诀窍6:如果你需要创造力、直觉或者独创能力,避免使用形式方法。 不要屈服于工具或者模型的虚假权威。没有什么可以替代思考。 【2.7 日常的德雷福斯模型】 诀窍7:学习如何学习的技能。 要获取专业技能,需要做到如下几项: 培养更多的直觉。 认识到情境和观察情境模式的重要性。 更好地利用我们自己的经验。 【3.2 随时(24×7)记录想法】 诀窍8:捕获所有的想法以从中获益更多。 如果你不记录这些伟大的想法,你就不会意识到拥有过它们。 每个人——不论教育背景、经济状况如何,不论日常工作是什么,不论年龄大小——都有好想法。但是在这么多拥有好想法的人里面,只有少数人在努力跟踪它们。而其中,又只有更少数人会努力付诸行动。随后,仅有少之又少的人有能力将好想法成功实现。要想达到图3-3中金字塔的最顶层,必须跟踪好想法,这是最基本的要求。 【3.3 L型和R型的特征】 L型处理特点 L型处理令人感到舒适、熟悉而轻松。L型提供以下9种能力。 语言能力:使用词语来命名、描述和定义。 分析能力:有理有节分析事情。 符号能力:用符号表示事物。 抽象能力:抽取小部分信息(本质),并用其表示事物整体。 时间能力:遵时循序。 推理能力:基于理智和事实得到结论。 数字能力:使用数字计数。 逻辑能力:基于逻辑(定理、明确的论点)得出结论。 线性思维能力:按照关联、依序推演问题和思考,经常会得出收敛性结论。 R型是非语言的,它可以获取语言但是不能创建语言。它喜欢综合学习:集合事物形成整体。它总是如实地反应事物,从这一点来说,它非常具体实在,至少目前是。它使用类比来评价事物之间的关系。它喜欢听好听的,而且不愿意为守时而费心。它不受理性的约束,因为它不需要基于原因或者已知事实来处理输入——因而,它完全愿意暂时不作任何判断。 R型绝对是注重整体的,总是希望一次就能看到事物整体,感知整体的模式和结构。它具有空间性,喜欢弄清楚事物之间的空间关系,部分如何形成整体。最重要的是,它是直觉性的、跳越性的思维,通常基于不完整的模式、直觉、感觉或者视觉影像来做判断。 “非理性”没有什么不对,思维过程是非理性或者不可重复的并不意味着它是不科学的、不负责任的、不合适的。 我们需要更多地使用R型,因为R型能够提供直觉,这是成为一名专家所迫切需要的。没有它,我们就不能成为专家。德雷福斯模型强调专家对隐性知识的依赖,这也属于R型的范畴。专家依赖观察和区分模式,这里也有模式匹配。 R型的类比和整体思考方式对软件架构和设计非常有价值,好的设计就是由这些组成的。 综合是一项非常强大的学习技术,以至于麻省理工学院媒体实验室的尼葛洛庞蒂在Don't Dissect the Frog, Build It [Neg94]中建议,真正想要了解一只青蛙,传统的解剖不是办法,更好的方式是构造一只青蛙。 诀窍9:综合学习与分析学习并重。 【3.4 R型的崛起】 诀窍10:争取好的设计,它真的很有效。 【3.5 R型看森林,L型看树木】 这项实验说明了一个事实:如果你想发现全局、整体的模式,你需要R型;如果你需要分析部分和细节,你需要L型。对于我们大多数人来说,这种层次的专长就是这样区别的。R型看森林,L型看树木。 【3.6 DIY脑部手术和神经可塑性】 诀窍11:重新连线大脑,坚信这一点并不断实践。 【第4章 利用右脑】 人应该努力学习洞察和培养自己内心深处的灵光一现,这远远胜于外面流光溢彩的整个世界。然而,人总会下意识地抛弃自己特有的想法,仅仅因为那是他自己的想法。 ——拉尔夫·瓦尔多·爱默生(1803—1882), 美国散文家、思想家、诗人 我们容易忽略不寻常的或者感觉不舒服的想法,而这恰恰是很糟糕的事情。你丢弃的可能是一生中最有价值的想法。因此,你需要重视头脑中的所有想法。 【4.1 启动感观输入】 诀窍12:增加感观体验以促进大脑的使用。 【5.3 了解个性倾向】 百分之七十五的人偏于外向型,剩下百分之二十五的人则希望单独呆着。 感觉(S)与直觉(N) 你如何获取信息?在所有人格特质中,这条轴线可能最容易产生误传和误解。感觉型的人强调可行性和事实,完全基于当时的细节。直觉型的人非常富有想象力,喜欢比喻,创新力强,能够看到多种可能性——生活总是在下一个拐角等着我们。直 百分之七十五的人是感觉型的。 思考(T)与情感(F) 你如何做决定?思考型的人基于规则。情感型的人除了考虑适当的规则之外,还会评估个人和情感的影响。 判断(J)与知觉(P) 你的决定是封闭的还是开放的?即,你是快速做出判断还是持续感知?如果你非常喜欢早下定论,你就是J型。J型直到做出结论才会感觉舒服。P型则是会在做出决定后感到不安。两种类型在人口中大约各占一半。 性格类型的研究在考虑到人们之间的关系时最为有趣。强N型和强S型在一起工作时会产生摩擦。强J型和强P型或许就不应该一起来敲定一份时间表。事实如此。 人交往时请记住一个重要的背景信息: 别人的性格缺陷肯定与你不同。 诀窍22:尊重不同人的不同性格。 当你想与人争辩时,请想一想这点。 【5.5 现在我不知道该思考什么】 我们通过逻辑来证明,通过直觉去发现。 ——庞加莱 【6.1 学习是什么……不是什么】 教育(Education)来自于拉丁文educare,字面意思是“被引出”,即引导出某样东西。我发现一件非常有趣的事情,当我们想到教育时,通常并不考虑它这个词源的含义——从学习者那里引导出一些东西。 【6.2 瞄准SMART目标】 使用SMART方法实现你的目标。 在这里,SMART代表具体的、可度量的、可实现的、相关的和时间可控的(Specific, Measurable, Achievable, Relevant, and Time-boxed)。对于任何目标(减肥、炒老板鱿鱼、征服世界等),你都需要制定一个计划,定出一系列帮助你实现目标的任务(objective)。每一个任务都应该具有SMART特性。 目标任务使你更靠近目标。 Objectives move you to your goal. 我们往往对于这两个词目标(goal)和目标任务(objective)的意思有一些模糊。明确地说:目标是一种理想状态,通常是短期的,是你努力要达到的状态。目标任务是一种帮你接近目标的事物。 相关的 这个目标真的与你有关吗——对你重要吗?你对此有热情吗?是在你控制之下的事情吗? 如果不是,这个目标就是不相关的。 目标需要相关,需要在你掌控之中。 时间可控的 这可能是目标最重要的一个特性。这意味着你需要设定一个最后期限。没有期限,目标会逐步衰退,永远被每天更紧急的事情所排挤。这样它永远都不会实现。 再强调一遍,稳扎稳打。采取循序渐进、比较细小的里程碑。当实现它们后,你会更有动力去实现下一个里程碑。 诀窍25:建立SMART任务实现你的目标。 【6.3 建立一个务实的投资计划】 知识投资和金融投资的一个主要区别是所有知识投资都有些价值。即使你从来不会在工作中使用某项技术,它也会影响你思考和解决问题的方式。因此,你学习的任何东西都有价值,只是有可能不是直接的、有物质回报的或和当前工作相关的价值。也许它会有助于开发R型思维或者改善R型到L型的切换。 【6.5 一起工作,一起学习】 成人教育的关键 成人学习者和儿童或大学生不同。马尔科姆·诺尔斯(Malcolm Knowles)在The Adult Learner: a Neglected Species [Kno90]一书中指出了成人的学习特点和学习环境。 如果学习能够满足成年人的兴趣和需求,他们就会主动学习。 学习的对象应该是与现实生活相关,而不是孤立的个体。 学习者主要使用经验分析法。 成年人需要自我引导,老师应该帮助他们互相交流。 老师必须允许风格、时间、地点和节奏的差异。 有多种选择来设立学习小组,既可以是非正式的也可以是正式的。对于非正式的,可以是大家共同选定阅读一本书,然后轮流让成员在wiki或者邮件列表里总结每章内容,或者聚在一起边吃午饭边讨论。 对于正式的,你可以采取下面几项谨慎的步骤。 寻求建议:看看大家的想法。获取足够的提议,每个提议都要有拥护者。寻求广泛的主题:技术方面的、软技能方面的,包括还没有使用的技术或者希望使用的技术。 选择一项提议和一个负责人:需要有人领导这个学习小组就某个专题进行学习。他们不需要擅长这个主题,但是必须对这个主题和学习充满热情。 买书:公司为所有参与者买书。大多数出版商(包括Pragmatic Bookshelf)提供团购折扣,所以请务必注意。 安排午餐会议:公司提供午餐或者大家自带午餐。应该用自己个人的时间来完成阅读,不过要安排午饭会议,准备一顿九十分钟的超长午餐。在会议上,安排前半个小时吃饭、社交和非正式的交谈。然后,正式开会。请一个人总结大家读完的一章。按不同主题或章节轮流总结,不要总是一个人。然后开始讨论这章:提出问题,提供意见。要想寻求灵感,你可以参考每章结尾的问题、任何明确的学习指导问题或者像本书里的实践单元。 诀窍28:组织学习小组学习和辅导。 尽量保持每一个小组不超过八到十个人。如果团队很大,可以将其分成多个更小的组织来讨论。 除了对学习本身有惊人的帮助,这还是增强团队凝聚力的一个好办法。大家一起学习,也可以互相学习,而且学得更有效。 【6.6 使用增强的学习法】 主动阅读和总结书面材料的更好方式 使用思维导图探索和发现模式和关系 以教代学 【6.7 使用SQ3R法主动阅读】 此时此刻,你正在阅读本书。一生中,你所读的书可能比听的讲座多很多。但是相比于任何由经验式的学习方法,阅读是一种效率最低的学习方法。 使阅读更有效的办法是更主动一点,而不是随便捡起一本书来开始埋头苦读。广为使用的好方法为数不少,我们来仔细研究其中一个,但是与其功效类似的方法还有很多。 这项学习一本书或其他印刷品的方法称为SQ3R,是该方法具体步骤的首字母缩写。 调查(Survey):扫描目录和每章总结,得出总体看法。 问题(Question):记录所有问题。 阅读(Read):阅读全部内容。 复述(Recite):总结,做笔记,用自己的话来描述。 回顾(Review):重读,扩展笔记,与同事讨论。 你需要的不仅仅是笔记,你需要思维导图。 【6.8 使用思维导图】 现代思维导图是一种二维的、有机的整体大纲。建立思维导图的规则是松散的,但是大致步骤如下。 准备一张很大的无格白纸。 在纸中间写上标题,用圆圈框起来。 对于每一个主要的子标题,从圆圈引出线,添加标题。 重复执行其他层次的节点。 对于其他的单独事实或者想法,从合适的标题引出线,写上标题。 当你打算添加一条新信息、一个新想法或者领悟到思维导图时,你要面对这样一个问题:这属于哪一块?你必须评估想法之间的关系,不仅仅是想法本身,这是一项非常具有启迪作用的活动。 虽然很多不错的公司都制作了思维导图软件,但我认为软件工具只是更有利于协作和文档——而不是头脑风暴、学习和探索性思维。对于这些活动,我建议手动绘制思维导图。 无论是笔记还是思维导图,手写是关键。例如,听讲座时做笔记真的能帮助我记忆讲座内容——即使我再也没有看过这些笔记。 【7.1 为了学习而玩耍】 头脑风暴:儿童、计算机及充满活力的创意》(Mindstorms: Children, Computers, and Powerful Ideas)[Pap93]命名。 【7.2 利用现有知识】 波利亚写过一本非常具有影响力的书,详细介绍了解决问题的若干经典技术,并描述了具体步骤(How to Solve It: A New Aspect of Mathematical Method [PC85],参见下面的概要)。 波利亚的解题方法 解决问题时,先提问自己。 未知量是什么? 已知量是什么? 条件是什么? 然后制定一个计划,执行之,回顾结果。波利亚建议的一些技巧(如下所示)听起来非常熟悉。 努力回想拥有相同或类似未知量的常见问题。 画一张图。 解决一个相关的或者更简单的问题,放宽限制,或者使用已知量的子集。 所有已知量和条件都用上了吗?如果没有,为什么? 尝试重新叙述这个问题。 尝试从未知量推到已知量。 波利亚的一个关键建议是寻找以前类似的解决方案:如果你解决不了这个问题,你知道如何解决类似的问题吗?也许相似点是完全一致的(比如“这就像我上周看到的bug”),或者是一种隐喻关系(比如“数据库的工作情况就像是一滩水”)。 诀窍34:从相似点中学习,从差异中忘却。 【7.3 正确对待实践中的失败】 探索就是在陌生的环境中“玩”。你需要自由地探索才能学习。但是,这种探索应该相对没有风险,因为你肯定不想因担心害怕而止住探索的脚步。你需要探索,即使你不知道走向何处。同样,你需要自由地创造——不介意自己的创造没有成果。最后,你需要在日常实践中应用你学到的东西。一种高效有益的学习环境应该允许你安全地做三件事情:探索、创造和应用。 诀窍35:在你的环境中安全地探索、创造和应用。 【8.1 提高注意力】 冥想的训练可以提高人的注意力。 如果你想在一天中更有效地支配你的“注意力资源”,那么就需要学习一些基本的冥想技巧。 寻找一个安静的地方,摆脱干扰或中断。这个可能是最难的一步。 舒适、清醒地坐着,挺直背。让你的身体放松下来,就像一个玩具娃娃。花点时间感受体内的任何紧张情绪,将其释放。 闭上眼睛,将注意力集中在呼吸——空气进入和离开你身体的这一点上。 注意呼吸节奏,吸气的长短和质量,吸气后屏气的短暂间歇,呼气的质量,呼气后屏气的短暂间歇。不要试图去改变它,只是感受。 将思维集中于呼吸。不要说话。不要描述你的呼吸或其他任何想法。不要与自己交谈。这是另一个困难的部分。 你可能会发现自己在思考一些问题或在与自己交谈。每当你注意力游荡开去,就要抛弃这些想法,轻轻将注意力回到呼吸上。 即使你的思维经常游荡,这个练习能使你发现自己的注意力在游荡,并且每次都能使自己回来,这对你是很有帮助的。 经过一段时间的练习后,你可以主动尝试控制自己的呼吸。分段呼吸的方法是,将呼吸看作空气经过三个独立的仓库: 腹部 胸部和胸腔 胸部的最上部和锁骨(但不包括喉咙) 【8.3 管理知识】 一旦你读过一次,记得去什么地方找到对应的细节就足够了。 爱因斯坦也深谙此道。据称他曾被问到一英里有多少英尺,他回答说,他不会在头脑中填满能轻易找到的东西。这就是参考书籍的用处,这是一种有效使用资源的方式。 将wiki作为基于文本的思维导图来使用。 Use a wiki as a text-based mind map. 可登录http://en.wikipedia. org/wiki/Personal_Wiki 查看最新的列表。 诀窍41:使用wiki来管理信息和知识。 有了wiki,当你有一个随意的想法后,可以把它写下来放在你的主页上,因为这时你不知道还能对它做些什么。一段时间以后,你有了第二个相关的想法,而现在你可以将这两个想法放在一起,存储在新的一页中。现在突然更多的相关想法出现了,因为你有一个地方来存放它,而你的思维也会非常乐意帮忙。 一旦你有了地方来存放某类想法,你就会得到更多这类想法。无论是wiki还是在纸上写的日志,也无论是便签还是鞋盒,对于特定主题领域或项目的相关想法,有一个地方来存放它们就是外部信息系统的主要优点。 将一些笔记从原来的形式抄写到wiki中(或整理到同一个wiki上),这有助于大脑吸收这些资料。就如同抄写会议或课堂上的笔记,这样做提供了第二次深入接触材料的机会,并能使大脑神经更强烈地感受这些信息。你越是接触它,越可能会发现原来你没有注意到的材料间的关系和模型。再次,你可以对一些较有意思的信息重构思维导图,以获得更深入的理解,并将其写回wiki。 你会更积极地寻找模式。 【9.3 超越专家】 在你变成专家之后,你最想追求的事情是……新手的思维。 新手的大脑有很多可能性,但是专家心里只有很少。 ——铃木俊隆禅师 对于专家来说最致命的弱点是像专家一样行动。一旦你相信自己的专业水平,你就会对其他的可能性视而不见。你停止了好奇心。你可能开始抵制所属领域的改变,担心在你花费了很多努力才得以精通的主题上失去权威。你自己的判断和看法不再支持你,而是囚禁你。 要总是保持一个新手的头脑。你需要像小孩一样拥有无穷的好奇心,充满问题和惊讶。 处理学习方面的事情,不要先入为主,不要存在事先的判断或者固定的看法。要像小孩子一样看待事物的真实面貌。
4人阅读
说明 · · · · · ·
表示其中内容是对原文的摘抄