程序员的思维修炼读书笔记(一)

来源:互联网 发布:db2数据库创建用户 编辑:程序博客网 时间:2024/05/01 10:10

制造问题的思维方式无法用来解决问题。
–爱因斯坦

德雷福斯技能获得模型

  1. 新手

    新手在该技能领域经验很少或者根本没有经验。这里的经验是指,实施这项技术促进了思维的改变。
    有些人声称拥有10年经验,但实际上只是一年的经验重复了九次。

    新手需要一份指令清单去做事。当“X发生时,执行Y;当A发生时,执行B……”。

  2. 高级新手

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

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

  3. 胜任者

    能够建立问题域的概念模型,并有效地使用它们。他们可以独立解决自己遇到的问题,并开始考虑如何解决新的问题–那些他们之前没有遇到的问题。

    胜任者会探寻和解决问题,他们的工作更多是基于谨慎的计划和过去的经验。如果没有更多的经验,在解决问题时,他们将难以确定关注哪些细节。还没有足够的能力反思和自我纠正。

  4. 精通者

    需要有全局思维,他们将围绕这个技术,寻找并想了解更大的概念框架。他们能够纠正以往不好的工作表现。他们会反思以前是如何做的,并修改其做法,期望下一次表现得更好。
    处于精通水平的人员知道什么地方有可能出错,或者更确切地说,什么地方非常有可能出错。他们具有经验和判断力,能够理解这句格言:在情境中意味着什么
    理解情境是成为专家的关键。
    可以有效地运用设计模式。

  5. 专家
    凭直觉。
    会痛苦地意识到,自己知道的有多少。

大多数人都是高级新手。

执行他们需要做的任务并根据需求学习新任务,但是从来没有对任务环境获取更广泛的、概念上的理解。

证据:从复制-粘贴式编程的兴起(把Google作为IDE的一部分),到设计模式的普遍误用。

有效地使用德雷福斯模型

积极实践需要四个条件:

  • 需要一个明确定义的任务
  • 任务需要有适当的难度 – 有挑战性但可行
  • 任务环境可以提供大量反馈,便于采取行动
  • 提供重复犯错和纠正错误的机会

通过观察和模仿来学习,没有实践就没有技能

大脑的结构

双CPU模式:

  • 1号CPU,负责线性、逻辑思维和语言处理。如果1号CPU没有处理任何其他的指令,它就只会生成一个语言的内部流,这就是你大脑中的那个微弱的声音。
  • 2号CPU,像是大脑中的Google,把它想象成一个超级正则表达式的搜索引擎,负责处理搜索和模式匹配。当你“思考”其他事情时,它可以去寻找搜索,然后异步地返回结果集–可能是数天之后了。由于2号CPU不做任何语言处理,这意味着它的结果也不是言语可以表达的。

这两个CPU共享通往内存核心的总线,每次只有一个CPU可以访问内存。这意味着如果1号CPU占用总线,2号CPU则无法获取内存执行搜索。同样,如果2号CPU在进行一个高级优先的搜索,1号CPU也无法访问内存。它们互相干扰。

做个定义:我们把1号CPU的线性处理风格成为线性模式,简称L模式。把2号CPU的异步、综合处理风格成为富模式,简称R模式。

对于复杂的问题,R型搜索引擎不受你直接意识的控制。

tips:

你可能会认为脑子里的叙述声音受你的控制,是有意识的,是真的你。它不是。实际上,当这些词语在你的脑海中形成时,背后的想法已经存在多时了。而在用口说出这些词语之前,又经过了相当长的时间了。

从最初的想法到你明白它不仅有时间延迟,而且电脑中没有思想中心轨迹。各种想法层出不穷,互相竞争,不论何时,只有胜利者才会成为你的意识。

L型处理特点

L型处理令人感到、熟悉而轻松。L型提供以下九种能力。
- 语言能力

使用词语来命名、描述和定义。
  • 分析能力

    有理有节分析事情。

  • 符号能力

    用符号表示事物

  • 抽象能力

    抽取小部分信息(本质),并用其表示事物整体。

  • 时间能力

    遵时循序。

  • 推理能力

    基于理智和事实得到结论

  • 数字能力

    使用数字计数

  • 逻辑能力

    基于逻辑(定理、明确的论点)得出结论

  • 线性思维能力

    按照关联、依序推演问题和思考,经常会得出收敛性结论。

这种能力非常符合计算机系统。然而,毕加索说过一句话:

计算机一无是处,它们只能给你答案。

R型处理特点

  • 非语言
  • 非理性
  • 综合
  • 空间性
  • 具体
  • 直觉
  • 分析
  • 全面
  • 非线性

R型是非语言的,它可以获取语言但是不能创建语言。它喜欢综合学习:集合事物形成整体。它总是如实地反应事物,从这一点来说,它非常具体实在,至少目前是。它使用类比来评价事物之间的关系。它喜欢听好听的,而且不愿意为守时而费心。它不受理性的约束,因为它不需要基于原因或已知事实来处理输入–因而,它完全愿意暂时不作任何判断。

R型绝对是注重整体的,总是希望一次就能看到实物整体,感知整体的模式结构。它具有空间性,喜欢弄清楚事物之前的空间关系,部分如何形成整体。重要的是,它是直觉性的、跳跃性的思维,通常基友不完整的模式、直觉、感觉或者视觉影像来做判断。

面对复杂的设计问题或者难以修改的bug,优秀的程序员通常都有冲动去编码和构建,由此可以从中学习。这就是R型的综合,而不是L型的分析。这就是为什么我们喜欢原型和独立的单元测试。它们给我们综合学习的机会–通过构建。

他不是在谈论汽车,他在谈论美学。

有吸引力的用户界面要比不具吸引力的界面更易于使用。

积极的情感对学习和创造性思维非常关键。处于“高兴”的状态可以拓展你的思维过程,激活更多的大脑物质。

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

路易·康:

设计并不是创造美,美来自于选择、共鸣、同化和爱。

艺术并不是来自于创造本身,而是来自选择,从几乎无限的可选项中进行选择。

想成为一名更好的程序员吗?那就多编码,深思熟虑,专注实践。想学一门外语吗?那就投入进去,不停地说,用它思考。大脑会很快意识到并调整自己为这种新用途提供更多方便。

原创粉丝点击