程序员思维修炼:如何从新手成为专家

来自:程序视界(微信号:programmer_sight),作者:《程序员的成长课》作者,安晓辉 

在“职场跃迁工具:德雷福斯模型及应用2例”中,给大家分享了“德雷福斯模型”:



这个模型,来自《程序员思维修炼》这本书:



《程序员思维修炼》的作者是 Andy Hunt ,敏捷开发专家,敏捷宣言首倡者之一,除《程序员思维修炼》这本书外,他还与人合著有多本获奖图书,包括《高效程序员的45个习惯——敏捷开发修炼之道》、《程序员修炼之道:从小工到专家》等,深受读者欢迎。


今天我会分6部分摘要介绍这本书:


  1. 德雷福斯模型

  2. 大脑的L型和R型处理模式

  3. 如何利用R型

  4. 主动学习的方法

  5. 内在诀窍

  6. 超越专家


注意我是有选择的哦,略过了一些章节。


(1)德雷福斯模型


德雷福斯模型将人对技能的掌握水平分为 5 个层级:

  1. 新手

  2. 高级新手

  3. 胜任者

  4. 精通者

  5. 专家


对某一项技能来讲,大部分的人都处于新手或高级新手这个层级,合计比例占到65~70% 。有大约 15% 的人是胜任者,大约10%的人是精通者,2~5%的人是专家。


这个模型我已经在公众号“程序视界”的4篇文章中介绍,具体请参考职场跃迁工具:德雷福斯模型及应用2例”。模型的细节,这里不再赘述,但有两点,需要指出:


  • 专家可以有效识别模式,高效运用模式

  • 专家靠直觉解决问题


大部分人做不到这两点,无法成为专家。


这其中的关键在于:我们不了解自己的大脑,无法有效训练自己。


所以,Andy Hunt 在书中分享了他对大脑工作类型的认知。


(2)L型和R型处理模式


Andy Hunt 结合他对认知科学和神经系统科学的了解,拿大脑和我们熟悉的电脑做了一个类比:大脑的配置为双CPU,单主机总线设计。如下图所示:


1号CPU主要负责线性、逻辑思维和语言处理。它的特点是线性的、按部就班地处理指令,相对缓慢。


2号CPU不再是线性、按步执行的方式,而更像是一个神奇的数字信号处理器,它负责处理搜索和模式匹配。


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


Andy Hunt把1号CPU的线性处理风格称为线性模式,简称L模式,把2号CPU的异步、综合处理风格称为富模式,简称R模式。


L型提供以下9种能力:

  1. 语言能力:使用词语来命名、描述和定义。

  2. 分析能力:有理有据分析事情。

  3. 符号能力:用符号表示事物。

  4. 抽象能力:抽取小部分信息(本质),并用其表示事物整体。

  5. 时间能力:遵时循序。

  6. 推理能力:基于理智和事实得到结论。

  7. 数字能力:使用数字计数。

  8. 逻辑能力:基于逻辑(定理、明确的论点)得出结论。

  9. 线性思维能力:按照关联、依序推演问题和思考,经常会得出收敛性结论。


这 9 种能力,是白领们、信息工作者和工程师们最渴望的本领。但这些本领,只能用来解题。


R型提供下面8种能力:

  1. 非语言

  2. 非理性

  3. 综合

  4. 空间性

  5. 具体

  6. 直觉

  7. 分析

  8. 全面


我们这些技术人员,在学校里学习、测试的都是L型能力,在工作中运用的也多是L型能力。


但是,德雷福斯模型强调专家需要直觉,依赖隐性知识,而这些,都属于R型的范畴。专家还依赖观察和区分模式,R型里也有模式匹配。


所以,我们需要更多地使用R型。


(3)如何利用R型


Andy Hunt从五个层面阐述了如何利用R型。


3.1 启动感官输入


多一种输入模式,就可以激活大脑的更多区域,也就启用了更多处理能力。比如被困在乏味的电话会议中时把玩一下回形针。


3.2 用右脑画画


书里提供了一种用右脑画画的方法,我拍了照片:



昨天上午我在医院候诊时,按照要求画了一遍,翻转过来后,是这样的:



哈哈,看起来比我正着画要好一些。你也可以试试。


3.3 促成R型到L型的转换


这部分又提供了好几种方式。


先是讲了一个学习攀岩的故事,教练直接让学员系好安全带爬30分钟,再讲解如何爬,这种方式,先利用了R型,然后是带着R型的感觉接着利用L型能力来学习。


然后介绍了罗扎诺夫教学法。


然后是“酒醉写作,酒醒修改


再然后举了结对编程的例子。在IDE中写代码的程序员(驾驶员)利用L型能力,坐在旁边或后面提供建议和点子的程序员(领航员)利用R型能力。结对编程中的两个程序员的关系,与《飞驰人生》中赛车手和领航眼的关系类似。


接下来又讲了L型和R型之间可以通过隐喻相通、并列参照系、系统隐喻、讲笑话等。


3.4 收获R型线索


我们的大脑会存储一切输入(看到、听到、闻到、感觉到等等),但这些输入不一定被索引。所以我们会遇到这种情况:一直伏案工作但解决不了的问题,忽然在散步或洗澡时灵光一闪,找到了答案。这是因为我们苦思冥想时用的是L型能力,R型抢不到内存总线,没办法工作。而当散步或洗澡时,L型暂退,R型才有机会检索模式匹配问题。


然后又讲了伊莱亚斯·豪的奇遇。1845年,伊莱亚斯·豪尝试发明一种实用缝纫机,进展不顺。在经过了漫长、艰苦、一无所获的一天之后,晚上他做了一个非常可怕的噩梦:他身处非洲,被饥饿的食人族绑架,猎手们用一种看起来非常可笑的长矛戳向他。在尖叫中惊醒后,他的注意力集中在“可笑的长矛”上——这些长矛前端钩子上有洞。伊莱亚斯·豪因为这点,将缝纫机针的洞反转,解决了难题。


这个例子想说明,R型思维是非语言的,不能直接交给L型处理,于是通过记忆深刻的怪梦来呈现。


再接下来,讲了可以利用R型的图像流、自由日记、晨写、自由书写、散步等方法。


3.5 收获模式


这一小节讲了几个R型搜索引擎依据最少的模式片段实施模式匹配的例子及方法。


  • 代码中的模式,讲的是代码排版的模式,比如花括号、缩进、字体、头部说明等。

  • 换换脑子。具体有逆向思维、夸大想法、组合完美异类的想法、角色扮演等。

  • 神谕冲击的魔力

  • 莎士比亚的谜语。改变习惯和日常做事顺序,引发R型。


具体请研读《程序员思维修炼》。


(4)主动学习的方法


Andy Hunt在《程序员修炼之道》中提到过“知识投资”的概念,讲的是要把学习、积累知识作为对自己的投资。关键在于,要主动投资学习,而不是采用“有空时再学”的方式。因为你不可能有空了就去学习,你永远不会有空学习,一旦准备“有空时再学”,必然失败。所以,要把学习排入日程表,作为对自己的价值投资。


Andy Hunt讲了用SMART原则设定目标,还讲了怎么建立知识投资计划。


这部分提到了3类学习方式,值得推荐给大家。


4.1 识别并使用原生学习模式


人的学习模式大概可以分为听觉型、视觉型和动觉型三类。


视觉型学习者需要看到学习资料和老师。图片和图表对视觉型学习者都很有效,他们对肢体语言和面部表情也很敏感。


听觉型学习者必须听到学习材料。讲座、研讨会和播客都很有效。他们对语气、语速和其他细节都很敏感。


动觉型学习者通过活动和触摸来学习。他们需要亲身感受学习材料。特别是对运动、艺术和工艺等领域,你都需要通过动手来学习。


找到你的学习风格,采用与你的风格匹配的方式来学习,效率会大大提升。


4.2 学习小组


一起工作,一起学习。


4.3 使用增强的学习方法


Andy Hunt 介绍了学习一本书或其它印刷品的SQ3R主动阅读法:

  • 调查(Survey):扫描目录和每章总结,得出总体看法。

  • 问题(Question):记录所有问题。

  • 阅读(Read):阅读全部内容。

  • 复述(Recite):总结、做笔记,用自己的话来描述。

  • 回顾(Review):重读,扩展笔记,与同事讨论。


还介绍了思维导图、以教代学等方法。


(5)内在诀窍


内在诀窍指的是:通过探索可以学得更好,而不是指令。


这个方法来自1974年的畅销书《网球的内在诀窍》。在那本书里有一个例子,作者提摩西·葛维在二十分钟内教会一个从未打过网球的五十岁左右的女士打网球。


首先,女士在旁边看葛维击球,并大声地喊“弹起”和“击球”。大约一分钟后,轮到她上场了,但她只是说“弹起”和“击球”,不去击球,而是在合适的时刻喊出相应的动作,并挥臂模仿。接下来是倾听球触及球拍的声音。如果你从未玩过,会感觉球准确击中球拍的位置时发出悦耳、清晰的声音。葛维只是告诉这位女士要仔细听,并没有明确地说出这些感觉。


下一步,该练习发球了。首先,她只是在观看葛维发球的时候哼出一个词组以获得动作的节奏。不要描述动作,只是看和哼。接下来,她尝试自己发球,同样是哼着词语,只关注节奏,而不是动作。这样过了二十分钟后,该打球了。她得到了比赛的第一份,截击动作非常地规范。


通过说教很难传授技能,通过探索可以学得更好。


运用内在诀窍的关键要素:不要把精力放在纠正一个一个的细节上,只需要具有意识。接受事实是第一步,只要意识到它即可。不要做出判断,不要急于拿出方案,不要指责。


你需要尝试培养非判断性的意识:不要想着来纠正,但是在出错时要知道,然后再采取行动纠正。


(6)超越专家


这部分是全书最后一部分。


首先,Andy Hunt给出了管理有效改变的几点建议:


  • 制定计划

  • “不作为”是敌人,而“错误”不是

  • 给新习惯适应的时间

  • 信念是真实的

  • 采取步步为营的细小步骤


然后提出,对于新的尝试,都会有一定的惯性阻碍它。此时关键是先开始。比如,决定明天上午做什么,开始做。


接下来讨论了比专家更高的境界是什么。答案出乎意料又在情理之中:保持一个新手的头脑,看见各种可能性


(0)开始的地方


推荐到这里就结束了,不过,你的事情才开始哦。

来自:程序视界(微信号:programmer_sight)

推荐↓↓↓
程序员书库
上一篇:2019年,最好的6本函数式编程书籍 下一篇:Clojure 书单 | Stack Overflow 最新调查告诉你,提升这项技能最有用!