zoukankan      html  css  js  c++  java
  • 读《程序员的思维修炼:开发认知潜能的九堂课》有感1&2章

    这几天闲着无聊,在实验室看起了Andy Hunt的《程序员的思维修炼:开发认知潜能的九堂课》,讲这本书之前我觉得有必要先讲讲本书的作者。

        Andy Hunt,敏捷开发权威人士,敏捷宣言首倡者之一,著名IT图书出版公司Pragmatic Programmers创始人。除本书外,他还与人合著有多本获奖图书,深受读者欢迎,包括《高效程序员的45个习惯——敏捷开发修炼之道》,《程序员修炼之道——从小工到专家》等。

        从简介中可以看出作者是敏捷开发的领军人物,上面介绍的两本书,我想学习软件工程或是研究敏捷开发的人士想必都知道吧。不说了,开始讲讲第一二章所学到的内容了。

        随着社会各个相关团体的复杂交互影响和社会的持续变化,有两项技能应是当前最重要的:

    1.沟通能力。

    2.学习和思考的能力。

        软件行业正在逐步提高沟通能力。特别是敏捷开发[1],强调了团队成员之间、最终客户和开发团队之间的沟通交流。现在越来越多的人也意识到简单、有效

    的沟通非常的重要。相比之下,提高学习和思考能力要更难一些。

        程序员需要不断地学习——不仅仅是学习新技术,还包括应用的问题域、用户社区的奇思妙想、同事的古怪习惯、行业的八卦新闻和项目演进的重要特征,我们必须学习学习再学习,持续不断地学习,然后把学习成果应用到解决日常遇到的一切新旧问题上。也许,这些听起来都相当的容易,但是学习能力、批判性的思考能力和创造力——所有这些扩展思维的能力,都取决于你自己。没有人教你这些东西,你必须学习。我们往往错误地看待老师和学生的关系:不光是老师在教,学生也要在学。学习完全取决于你自己。

        人们不断的学习学习,都希望自己能成为专家,技能获取邻域的德雷福斯模型是研究如何超越新手层次、如何不断精通技术的有效方法。我们将在下面的内容中探讨德雷福斯模型,并特别关注成为一名专家的关键要素:应用你自己的实践经验、理解情境和利用直觉。

        在德雷福斯模型中,从新手到专家要经历五个阶段(1.新手,2.高级新手,3.胜任者,4.精通者,5.专家)。

        阶段1:新手

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

        新手非常在乎他们能否成功。没有太多经验指导他们,他们不知道自己的行为是对是错。新手不是特别想要学习,他们只是想实现一个立竿见影的目标。他们不知道如何应付错误,所以出错的时候,他们非常容易慌乱。但是,如果给新手提供与情境(新手与专家的重要区别)无关的规则参照,他们就会变得能干起来。也就是说,需要这种形式的规则:“当X发生时,执行Y。”换言之,需要一份详细的指令清单。新手所面临的问题是,对于某种情境,不知道哪条规则是最相关的。当一些意想不到的事情发生时,他们就会不知所措。

        阶段2:高级新手

        一旦经过新手的历练,人们开始以高级新手的角度看待问题。高级新手能够开始多多少少地摆脱固定的规则。他们就可以独自尝试任务,但仍难以解决问题。他们想要快速获取信息,他们不想某个问题上寻根究底,或者重新温习一遍基础知识。

        阶段3:胜任者

        在第三阶段,从业者现在能够建立问题域的概念模型,并有效地使用它们。他们可以独立解决自己遇到的问题,并开始考虑如何解决新的问题——那些他们之前没遇到的问题。他们开始寻求和运用专家的意见,并有效利用。与更高水平者追随下意识不同,胜任者会探寻和解决问题,他们的工作更多是基于谨慎的计划和过去的经验。如果没有更多的经验,在解决问题时,他们将难以确定关注哪些细节。

        阶段4:精通者

        精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常的沮丧。在德雷福斯模型中,处于精通水平的从业人员有一项重大的突破:他们能够纠正以往不好的工作表现。他们会反思以前是如何做的,并修改其做法,期望下一次表现得更好。到了这一阶段,自我改进才会出现。同时,他们会学习他人的经验。作为精通者,他能够阅读案例研究,倾听有关失败项目的流言蜚语,观察别人怎么做,从故事中认真学习,即使他们没有亲自参与。

        阶段5:专家

        专家是各个邻域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式做事。他们有丰富的经验,可以在恰当的情境中选取和应用这些经验。他们著书、写文章、做巡回演讲。专家知道哪些是无关紧要的细节,哪些是非常重要的细节。也许不是有意识的,但是专家知道应该关注哪些细节,可以放心地忽略哪些细节。专家非常擅长做有针对性的特征匹配。

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

        1.从依赖规则向依赖直觉转变。

        2.观念的改变,问题已不再是一个相关度等同的所有单元的集合体,而是一个完整和独特的整体,其中只有某些单元是相关的。

        3.最后,从问题的旁观者转变为问题涉及的系统本身的一部分。

                                                                                          image

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

        此外,元认知能力,或者自我认知的能力,往往在较高的技能层次中才会具有。不幸的是,这意味着处于较低技能层次的从业者会明显高估他们自己的能力——有研究表明高出50%。正确自我评估的唯一办法就是提高个人技能层次,这反过来又会提高元认知能力。你可以把这种现象称为二阶不胜任:不知道自己不知道多少。新手尽管能力差但是信心十足,而专家在情况异常时会变得愈发谨慎。专家会更多的自我怀疑。

        那么,你想成为专家吗?你需要大约投入大约十年的努力,不论哪个邻域。研究人员已经研究了下棋、音乐作曲、绘画、钢琴演奏、游泳、网球和其他技能。几乎在每种情况下,从莫扎特到甲壳虫乐队,你会明显发现在成为世界级的专家之前至少需要十年的辛勤工作。而且需要辛勤工作——只是在某个邻域工作十年是不够的。你需要实践,积极实践需要四个条件。

        1.需要一个明确定义的任务。

        2.任务需要有适当难度——有挑战性但可行。

        3.任务环境可以提供大量反馈,以便于你采取行动。

        4.提供犯错误和纠正错误的机会。

        但是,有一些好消息。一旦你成了某个邻域的专家,在别的邻域成为专家就会变得更容易。至少你已经有了现成的获取知识的技能和模型构建的能力。

        从德雷福斯模型学到的最重要的收获之一就是,认识到新手需要与情境无关的规则,而专家使用与情境相关的直觉。在系统思维中,如面向对象的编程,往往是事物之间的联系最让人感兴趣,而不是事物的本身。这些联系有助于形成情境,而正是情境让这些事物各不相同。在日常的德雷福斯模型的应用中,首先,请记住,无论是对你自己或对他人,一种规则并非处处适用。正如从模型中看到的,你的需求取决于你所处的技能水平。随着时间推移,你的个人学习和成长所需的东西会改变。新手需要快速成功和情境无关的规则。你无法指望他们能独自处理新的情况。

        所学习到的诀窍:

        1.始终关注情境。

        2.新手使用规则,专家使用直觉。

        3.知道你不知道什么。

        4.人们往往是通过观察和模仿来学习的,实时上,如果你有孩子,你可能已经注意到他们很少照你所说的去做,却总是模仿你的所作所为。

        5.对于形式模型的过度依赖往往会鼓励羊群行为[2]而贬低个人创造力。

    [1]敏捷方法:敏捷方法在很多重要的方面都与传统的基于计划的方法不同,最显著的就是摆脱了死板的规则,丢弃了陈旧的日程表,注重实时的反馈。在本书中会经常提到敏捷方法,因为很多敏捷思想和实践都是与良好的认知习惯相融合。

    [2]羊群行为:也称“羊群效应”或“从众心理”,指人们具有与他人保持一致,和他人做相同事情的本性。

  • 相关阅读:
    unexpected inconsistency;run fsck manually esxi断电后虚拟机启动故障
    centos 安装mysql 5.7
    centos 7 卸载mysql
    centos7 在线安装mysql5.6,客户端远程连接mysql
    ubuntu 14.04配置ip和dns
    centos7 上搭建mqtt服务
    windows eclipse IDE打开当前类所在文件路径
    git 在非空文件夹clone新项目
    eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
    Eclipse Kepler中配置JadClipse
  • 原文地址:https://www.cnblogs.com/shuanghong/p/2105302.html
Copyright © 2011-2022 走看看