《程序员的思维训练》1| 小白到专家,你在第几级?

《程序员的思维训练》1| 小白到专家,你在第几级?

原创 精进学思行 精进学思行 今天

在做汽车声音设计的时候,和音响系统有一定的关联性,也接触了一些顶级的音效公司,主要是通过软件来提升整车音响系统的表现。在这个过程当中,非常重要的过程就是调音,而核心是需要所谓的“金耳朵”,这种金耳朵非常稀缺。

在汽车的NVH中,我也听过有类似的专家,普通工程师可能需要花费大量测试和分析才能识别的问题,他可以通过听一下,就知道是哪个部件出了问题,他们貌似不需要经过显性的逻辑推理分析,仅凭直觉就能给出答案,而他们的判断也常常是对的。

我很好奇这样的“耳朵”是怎么样训训训练出来的?在更广泛的领域,我也有类似的感受,面对一个事情的时候,开始是两眼一抹黑,完全不不知道如何下手;通过学习,慢慢了解到这里面有些套路和方法,感觉通过这些套路,的确思路清晰很多;但是,当面对复杂情形的时候,感觉套路有些时候也会无力,开始有些怀疑这些方法;有的时候会感觉有些无力;最后,经过很多次摸爬滚打后,发现套路还是有用,但更多要具体情况具体分析,最后慢慢忘记了套路,因为它已经成为本能和直觉。

最后一个境界,我没有达到过,但是我感觉有这样的一个境界,我理解这就是专家的境界,而这种专家能力是如何训练出来的呢?

本周阅读了一本回答这个问题的书,书名叫《程序员的思维:训练开发认知潜能的9堂课》,看书名以为写给程序员的,但当翻开后,你会发现它适合大部分需要靠脑力劳动来创造价值的人。作者叫做Andy Hunt,他是敏捷开发权威人士,敏捷宣言首倡者之一,除本书外,他还与人合著有多本获奖图书,深受读者欢迎,包括《高效程序员的45个习惯——敏捷开发修炼之道》、《程序员修炼之道——从小工到专家》等,他和我们之前分享的《敏捷革命》的作者杰夫·萨瑟兰一样,也是敏捷宣言的17个人之一。

作者为什么要写这样一本书?帮助大家训练学习和思考能力,实现从小白到专家的的进阶。

基于在软件开发领域的经历,作者认为,对于知识性工作者来讲,有两个最重要的能力,一个是沟通的能力,一个是学习和思考能力,而这两个能力会越来越重要。

为什么沟通的能力重要?从软件的角度来,作者任务软件并不是在集成的开发环境,或者是其它工具当中设计出来的,而是从我们的大脑当中想象和创造出来的,而这种想象和概念是需要在团队当中进行分享和交流的,所以,沟通就显得特别重要。在《敏捷革命》中分享过一个重要的做法就是开晨会,通过实践,我发现这个动作的最大价值就是加强了团队的信息沟通,大幅提高了团队的效率。

在做声音设计的时候,我有类似的感受,为了设计汽车的声音,我们聘请了一个英国的音乐家,而我的一个重要工作就是尽量把需求清晰地传递给他,他结合我们的信息沟通,来设计相应的声音。这个过程,让我很庆幸的是,他的理解能力非常的强,因为语言的原因,我不确定自己是否表达清楚了,但我感觉他总能很快理解我的意图,所以我们的合作和交付都比较顺利。

关于学习和思考能力,我很重视,这也是我运营“精进学思行”这个微信公号的重要原因。可能是因为在软件行业感觉更加明显,作者认为技术和知识是不断变化的,“只有死鱼才会随波逐流”,所以需要保持持续的学习和思考的能力,不断提升。

这本书的核心就是围绕第个重要能力展开,分享如何提高学习和思考能力,实现从新手到专家的进阶。全书主要围绕如下几个问题展开:

新手到专家的5个阶段是什么?

我们如何认识,使用和调试我们的大脑?

如何通过积极学习,积累经验和控制注意力实现进阶?

本文重点分享第一个问题。

1 Dreyfus模型:从新手到专家的5级

作者在介绍从新手到专家这个部分时,引用了Hubert Dreyfus和Stuart Dreyfus两兄弟,于1986年提出的经典的Dreyfus模型,该模型描述了从新手到专家的5个阶段:新手—高级新手—胜任者—精通者—专家。

1.1 新手( Novice )

新手最大的特点是按照非常清晰的指令来做事情,比如做饭时放盐5克,等待15分钟。面对事情和问题,新手通常很难自己作出判断,需要别人非常细致的指导。

面对一些比较复杂的情形,如果无人指导或者形式规则不明确,很容易手足无措。在看待事情的时候,比较容易从孤立的视角去看,很难关注到周边和上下游,做事情时常常不太会关心为什么要去做,做完之后的结果会是什么,只是去执行。

新手如果缺乏积极性的话,通常会有两个典型的特征:第1个是不愿意承担责任,"因为是你让我这么做的,所以出错了不愿意承担责任";第2个特征是希望详细的指导,甚至用它来推卸责任,“我不做,是因为你没有解释清楚”。从行动的结果来看,如果没有详细的指导,新手的交付常常很难达到预期。

1.2 高级新手( Advanced Beginner )

相对于新手,高级新手会尝试着去解决问题,他们会主动去寻找解决问题的一些信息,但通常不会对根源进行挖掘。能够意识到自己所做的事情和全局的关系,能够解决一个复杂问题当中的一部分,但是无法独立解决整个问题。

1.3胜任者( Competent )

胜任者对自己从事的领域的知识有比较好的了解,能够基于问题建立概念模型,并且有效的使用它们,可以独立解决自己所遇到的问题。和高级新手不同,胜任者能够看到更大的局面,并且基于详细的计划和过去的经验解决常规问题。如果面对一个全新的问题,或者说是超出自己经验范围的事情,常常难以确定应该重点关注哪些细节,这时需要专家的建议,他们交付的结果常常能够满足要求,但还不够出色。

1.4精通者( Proficient )

精通者对自己从事的领域的原则和方法有非常深刻的认识,具有全局思维和更大的概念框架,对全局中各个要素的影响,有比较深刻的认识。和胜任者不同的是,精通者可以充分利用思考和反馈,来进行持续改进,很类似于我们在《精益工作法》:去掉不创造价值环节中分享的,用标准化和PDCA不断改进自己工作方法,他们常常能产出比较高水准的结果。

1.5专家( Expert )

专家是各个领域知识和信息的主要来源,他们总是不断的寻找更好的解决问题的方法,而且能够很恰当的根据情境选择最适合的方法,他们中不乏喜欢通过写书,写文章和做演讲来分享经验的人。

和前面四种不同用的是,专家更擅长用直觉去做判断,不会为规则所束缚。这并不说他们不需要分析,而是说在面对一个复杂的情形的时候,他们能够整体把握,并且在直觉和分析这两种不同的手段之间灵活切换,洞察到解决问题的更多可能性。

有一点容易让人们产生怀疑,那就是专家有的时候看上去像是在"拍脑袋",但是跟初级的"拍脑袋"不同,专家的准确率非常高,就像前面提到过的“金耳朵”,他们也是通过主观去评价,但是和一般的人主观评价不同,他们的评价结果常常非常精准,我理解这是经过刻意训练的直觉。

此外,他们也不是面对所有情形都靠直觉,他们只在自己非常的熟悉的领域靠直觉,而面对新的情况,他们还是会通过自己的头脑进行分析来寻找解决方案。

而且,专家有个重要特征,知道哪些是无关紧要的细节,哪些是非常重要的细节,他们懂得该忽略什么。

就像我们做NVH分析,当面对一个问题,会发现有很多的影响因素,通常的做法就是画出问题的结构树,逐步验证和排查,比如我们专业的TPA(传递路径)分析。

对于非专家,常常不知道哪些环节是可以被忽略的,而哪些又是不能被忽略的关键细节,所以只用均等的眼光去看待,通过实验或仿真,用地毯式的方式去排查,而专家则能够凭借他的直觉,快速定位问题症结所在。

所以,专家常常能够相对比较轻松地获得出色的结果和成就,因为他们是在利用直觉和本能,所以看上去比较轻松,而这种直觉又是经过大量的实践所训练的,所以结果常常会很不错。

以上就是从新手到专家的5个阶段,书中也总结了不同阶段在三个典型方面的不同,如下图所示。

2 如何利用Dreyfus模型?

如何从新手到专家?后续会介绍,这里重点分型书中提到的Dreyfus模型使用建议。

2.1 勇于承担责任

我很喜欢电影《蜘蛛侠》当中的一句台词,“能力越大,你的责任也就越大”。在上面的5个层次当中,随着能力的提升,能够掌控更大的局面,责任通常也会加大。但是,我想说的是,反过来也是一样的,当你愿意去承担更大责任的时候,你会反过来思考如何提升自己的能力。如果你不想承担责任,也非常的简单,只需要让自己保持在新手状态就好,你只需要让别人告诉你该干嘛就干嘛,而且是非常清晰的指令,这样的话即使结果不好,你也有充分理由说这是别人让你这么干的。

2.2 实践保持技能

作者特别强调了保持技能的重要性,或者说是要通过实践,不断去提升自己的技能,因为技能水平是从新手到专家非常重要的一环,而且需要持续不断的在实践当中打磨和保持,于程序员而言,就是编程技能,于作家而言,就是写作能力。

2.3 关注情境

这是本书特别强调的一点,甚至作者认为"情境"这个词应该以便利贴的方式,贴到你能看到的所有位置,新手常常需要的是一些和情境无关的原则和方法,而专家则常常非常的关注情境,甚至可以这么讲,专家的很多直觉也是在和情境的互动当中所习得的。

2.4 避免工具陷阱

有一句俗语说得好“手上拿着锤子看什么都像钉子”,可能是出于懒惰,人们常常寄希望于"包治百病的妙方"和“放之四海而皆准的真理”,但现实情况往往是,很多的工具和方法都有它的适应条件。

反思自己的文章,也介绍了很多的工具和方法,但如果这些方法或工具没有结合具体的场景,是比较容易掉入陷阱的。因为这些方法论,是经过抽象和处理的,看上去很完美和标准,但常常忽略了世界的一些真实性。它们并不一定反应真实,只是帮助我们更好去理解和改变现实的扶手。

所以,当你咨询一个"专家"的时候,如果他不了解你的任何背景,就给出非常明确清晰的建议,很可能是伪专家,而真正的专家通常会说“具体情况具体分析”。

总结

在知识和技术不断快速变化的年代,持续学习和思考的能力越发重要。按照Dreyfus模型,从新手到专家要经历5个阶段:新手-高级新手-胜任者-精通者和专家,他们之间的主要区别除了技能外,还包全局视野,对情景的洞察以及对直觉能力的打磨。

你可能感兴趣的:(《程序员的思维训练》1| 小白到专家,你在第几级?)