开篇&《程序员的思维锻炼》

   近半年一直没有什么技术文章好写,倒不是没有学习,而且发现许多书上讲得已经足够精彩到位,比自己的蹩脚分析要系统精彩得多。现在各种编程书籍到处都是,电子版的也很多,国内一些培训机构如华清远见就出了大量的嵌入式培训书籍,质量很高。我想与其费时费力地写文章“误导”大家,不如把我发现的好书分享出来,供大家参考。

   可能有这样的看法:程序员编程就行了,不需要读书。我的经验告诉我,事实并非如此。读书可以开阔视野,增进见识,让我们了解到先进的思想和技术,避免了闭门造车和夜郎自大的尴尬。我从一篇文章中读到,一些人的工作习惯是每天编程4小时,学习5小时。在他们的意识中,学习要比编程重要地多。因为编程通过了入门熟练的阶段,剩下的主要是技术选型和设计的问题。再花大部分的时间去编程,给个人带来的提高就比较有限。我觉得多读书是个很不错的提高方法,在读书时做些笔记,写些心得,就更好了。另外,应该有意识地选择涉猎的范围,至少要能学以致用。比如,我喜欢读的书籍,大多是嵌入式和编程语言两个方面的,前者是我的专业,后者可以扩展我的“工具箱”。

   下面推荐第一本书,《程序员的思维锻炼》。

   这本书首先介绍了一种对专业技能评价的德雷福特模型,然后对程序员的职业特征进行了一些分析,并提出一些锻炼方法。对于锻炼方法,不外乎画画,锻炼右脑抽象思维能力,等等。我认为这本书最大的价值,就是让我们能更好地认识和评价自己,进而获得进步的欲望和动力。书中提到,程序员总是过高地估计自己,认识不到自己的缺点。我承认自己虽然了解这点,但仍不可避免地高估自己(更真实的评价方法是把自我感觉的评价除以2)。人都有惰性存在,没有前进的动力,也许是自己从没有看到更高处的风景有多美好,也许是从未发现自己在真正的专家面前是如此渺小,也许是从没有想过自己也会有站在更高处的那一天...... 不论是何种理由,都应该打起精神来,只要还没有转行的打算,每个人都会有成为专家的那一天。一句很流行的话是这么说的:能爬上金字塔尖的只有两种动物,一种是老鹰,一种是蜗牛。

   言归正传,这毕竟是一篇推荐图书的文章。我觉得其中对专业技能评价的德雷福特模型很不错,所以将其摘录下来。

 

德雷福特模型

德雷福特模型是一套评价行业技能的模型。从新手到专家,共分为五个阶段。研究表明,从新手到专家要经历巨大的变化。在这个过程中,人们不只是“知道更多”或者获得了技术,而且还在如何认识世界(技能相关的世界),如何解决问题以及如何形成使用的思维模型等方面体验到根本的区别。人们获取新技术的方式发生了变化,影响(促进或阻碍)人们工作业绩的外部因素也发生了变化。

德雷福特模型分为五个阶段:新手、高级新手、胜任者、精通者、专家。

新手

由定义可知,新手在该技能领域经验很少或者根本没有经验。这里提到的经验,指的是通过实施这项技术促进了思维的改变。

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

但是,如果给新手提供与情景无关的规则去参照,他们就会变得能干起来。也就是说,需要这种形式的规则:“当X发生时,执行Y。”换言之,需要一份指令清单。指令清单的问题在于你不能一五一十地将所有事情解释清楚。你可以设立更多的规则去解释,然后再用更多的规则去解释刚设立的规则,没有一个实际的界限约定你需要说得多明白。这种现象是无限递归的,因此你必须停止反复解释。

规则只能让新手启程,却不会让其走得更远。

新手需要指令清单。Novices need recipes.

高级新手

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

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

高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力。同时,他们能够开始形成一些总体原则,但不是“全貌”。他们没有全面的理解,而且的确不想有。如果你试图把一个更大的情境强加给高级新手,他们可能会认为该情境与那些规则不相关而忽略掉。当然,其实是非常相关的,但是你看不到这种联系,因为你层次还不够,只是处于较低的技能水平。

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

胜任者

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

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

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

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

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

精通者

精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常沮丧。例如,处于精通阶段的人拨打计算机的技术支持热线电话,被询问是否插上了电源的时候,不会作出良好反应。

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

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

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

举例来说,一个众所周知的极限编程方法的经验之谈是“测试一切可能出错的东西”。对于新手来说,这只是一个指令清单。测试什么?是所有的settergetter方法,还只是打印语句?他们最终会测试所有无关的东西。但是,处于精通水平的人员知道什么地方可能出错,或者更确切地说,什么地方非常可能出错。他们具有经验和判断力,能够理解这句格言在情境中意味着什么。事实证明,理解情境是成为专家的关键。

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

同时,处于精通水平的人可以有效地运用软件模式(设计模式),但是这不是较低技能水平所必须掌握的。

精通者可以充分利用思考和反馈,这些都是敏捷方法的核心。相对早期阶段,这是一个巨大的飞跃。处于精通阶段的人更像初级专家,而不是高级胜任者。

精通者能自我纠正。Proficient practitioners can self-correct.

专家

专家是各个领域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式去做事。他们有丰富的经验,可以在恰当的情境中选取和应用这些经验。他们著书、写文章、做循环演讲。他们是当代的巫师。

根据统计,专家的数量很少,大概只占总人数的1%~5%

专家根据直觉工作,而不需要理由。这带来一些非常有趣的影响,并提出一些重大的问题—到底什么是直觉?

虽然专家非常有直觉—这一点对我们其他人来说非常神奇,他们可能会对如何得到结论完全说不清楚。他们的确不知道,只是“觉得是正确的”。

专家知道哪些是无关紧要的细节,哪些是非常重要的细节。也许不是有意识的,但是专家知道应该关注哪些细节,可以放心地忽略哪些细节。专家非常擅长做有针对性的特征匹配。

专家凭直觉工作。Experts work from intuition.

 

现实中的德雷福特模型

达尔文说过:“无知往往来自于自信而不是知识。”我们往往意识不到有更好地方法和实践存在,从来没有怀疑过自己。反过来也是对的。一旦你真的成为了一名专家,你会痛苦地意识到你知道的是多么少。

规则断送专家。Rules ruin experts.

对开发指定严格规则的方法或企业文化,往往会拖累专家的表现。直觉是专家的工具,但公司往往轻视它,因为他们错误地认为,直觉“不科学”或者“不可重复”。因此,我们往往本末倒置,不倾听薪酬高昂的专家们的意见。

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

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

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

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

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

大多数人都是高级新手。Most People are advanced beginners.

此外,元认知能力,或者自我认知的能力,往往在较高技能层次中才会具有。不幸的是,这意味着处于较低技能层次的从业者会明显高估他们自己的能力—有研究表明高出50%。根据一项研究,正确自我评估的唯一办法就是提高个人技能层次,这反过来又会提高元认知能力。

这种现象称为二阶不胜任:不知道自己不知道多少。新手尽管能力差但信心十足,而专家在情况异常时会变得愈发谨慎。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值