zoukankan      html  css  js  c++  java
  • 不要停滞在平庸的阶段,不要成为别人眼中的“专家级新手”!很惨!

    专家级新手

    1980 年,德雷福斯兄弟提出一个模型,将一个技能的学习程度类比成阶梯式的模型,由上而下分成:专家(Expert)、精通者(Proficient)、胜任者(Competent)、高级新手(Advanced Beginner)、新手(Novice)五个等级。

    这就是德雷福斯模型(Dreyfus model of skill acquisition)。

    基于这个模型德雷福斯兄弟写了一本书,  显然它有很多内容,但它的要点是,技能学习者需要从“教条主义地遵循规则和缺乏大局”转向“直觉超越规则和完全理解大局”——也就是说愈往上,愈具有大局观。


     

    德雷福斯模型往往只是一个美好的愿景,也就是每个人都会随着更多的练习,改善自己的技能,从而往上进步。

    然而技能的提升并不是线性的,现实中,我们常常可以看见一些“经验和能力不相称”的人,用一句话概括:

    十年经验,不是一个经验用十年。

    资料显示,多数人落在“高级新手”这一阶层,“高级新手”不愿意全盘思考,当管理阶层分配工作给“高级新手”,他们认为每项工作一样重要,不明了优先层度,意味着他们无法认知每件工作的相关性。


     

    停留在“高级新手”的人常常停滞发展,在学习技能的角度上,一个人的技术水平停止发展常常由于以下两个原因:天赋 or 不再有继续改进的意愿。

    在本文,我们放弃考虑第一种可能性(绝大多数程序员在达到胜任标准之前都不会用尽天赋),并且考虑一个“不再有继续改进的意愿”的可能:由于自信已达到专家地位而自愿停止改进,因此不可能进一步改进。

    不知道你有没有过这样的经历,看一本书看到一半就放回书架,再也没有拿出来过;一门课程学了三分之一然后半途而废,之后再也想不起这门课到底讲了些什么。

    这种停滞在平庸的阶段,称之为“专家级新手(Expert Beginner)”。


     

     

    软件专家级新手

    人类学习一件事物,必须要有现实世界的反馈!

    例如:学打羽毛球,要习惯挥拍,要学习阅读球的落点,才能逐渐改善自己的技术;学习驾驶,一样要学会阅读与障碍物的距离,转弯时是否有充足的空间。编程呢?

    编程的反馈周期很长,它不像日常生活的技能或体育运动,反馈周期是以分钟计算的,在软件中,反馈周期往往是几个月,软件行业很容易诞生“专家级新手”。

    你可能会说,编译、运行或单元测试,不就是不到几分钟甚至几秒的时间吗?

    那只是开发,而这里说的是整个项目的生命周期,开发人员从获得需求、编写代码、源代码控制、修改代码、测试代码以及维护阶段重构以前的设计和架构,这些往往需要好几个月,有一些项目周期甚至一两年。

    所以,可以遇到有的软件开发工程师工作了两三年,依然没有完整完成一个项目的经验。


     

    超长的反馈周期,导致软件开发工程师难以得到充足的反馈,去判断自己的技能程度。

    想象一下,一个普通的羽毛球爱好者,和一个羽毛球世界冠军比赛,他肯定不会觉得自己能赢;一个驾驶员,无论他驾驶技术多么的好,也不会自以为自己是舒马赫级别。因为这些反馈都很明显,再自视过高,在真正的高手面前,也会认识到不足。

    但编程不同,编程缺乏准确的反馈机制,很容易使一个本身技术不高的人,误以为自己是高手。

    在现今的开发环境中,甚至不少还打着“专家”、“架构师”和“负责人”到处招摇撞骗,就像“摇滚明星”一样。

    这种人类自视过高,无法准确判断自己的能力高下的现象,美国康乃尔大学的社会心理学家大卫·邓宁和贾斯汀·克鲁格将其归咎于元认知上的缺陷,能力欠缺的人无法认识到自身的无能,不能准确评估自身的能力。

    这就是邓宁-克鲁格效应(Dunning-Kruger effect),或简称达克效应(DK effect)。简言之即:庸人容易因欠缺自知之明而自我膨胀。


     

    他们的研究还表明,反之,非常能干的人会低估自己的能力,错误地假定他们自己能够很容易完成的任务,别人也能够很容易地完成。

    避免成为专家级新手

    既然“专家级新手”是“新手”,那么与真正的专家多交流,是否就可以使其明白自己的不足呢?

    这也许是可行的,问题是,“专家级新手”往往成长在一个缺乏专家的环境造就的,例如一家非互联网公司只有两三个懂编程知识的员工,就很容易变成“专家级新手”。

    避免成为“专家级新手”,首先需要避免:

        ◐ 缺乏自动化测试

        ◐ 巨大、冗长的方法或类

        ◐ 大量的复制粘贴的代码

        ◐ 使用过时或者糟糕的工具/流程

    但是,这些都是一个个点,这些问题共同的线索指向,你的团队有一个处于权威地位的人,他放任软件崩坏,不推崇健康的开发流程,不重视测试,不重视软件质量,放任有毒的环境蔓延——这将迫使有才华或有抱负的人要么离开,要么顺应平庸。


     

    这时候需要创造一种进取的文化,而不是停滞不前的文化。

    首先,为了防止自己落入“专家级新手”的陷阱,最重要的是不要相信自己的炒作。

    适当为自己的成就感到自豪,但无论你的头衔、年限、奖项和成就,或者其他任何不是理论证明的东西,都不要认为你的学习已经结束了,也不要认为你的观点高于质疑。保持健康的谦逊度,不断努力提高,重视客观指标高于主观考虑,这将大大防止自己成为“专家初学者”。

    在防止这种现象败坏一个软件组方面,以下是一些可以帮助的事情:

        ㉿ 给予团队成员尽可能多的创作自由,让他们展示自己的解决方法(记住,你从失败中学习的东西比成功更多);

        ㉿ 为学习新的语言、方法、框架、模式、风格等提供激励或奖励;

        ㉿ 避免以在该领域或在公司工作的年限作为偏爱;

        ㉿ 制定政策,迫使外部观点进入公司(每月培训等);

        ㉿ 在可能的情况下,用客观的措施来解决争议/分歧,而不是资历或民主投票等主观因素;

        ㉿ 创造一种 "证据文化"--除非有独立的说法、数据统计、事实等支持,否则观点并不重要;

        ㉿ 定期对员工进行民意调查,无论是初级员工还是高级员工,请他们列出自己的一些优势和同等数量的不了解或想了解的知识。

    这个清单更多的是针对团队的管理者和领导者,但作为一个简单的团队成员,也可以影响这些变化。

    唯一不同的是,你可能要向管理层寻求帮助,或者是劝说而不是强制执行。如果可能的话,要以身作则。如果这一切都不可能,而且这份工作看起来像一个失败的事业,可能需要去寻找更健康的发展环境。

    一般来说,重要的是创造或拥有一种文化,在这种文化中,“我不知道”是一个可以接受的答案(这点以后可以展开谈谈),即使是对团队中资历最深、任期最长的领导者来说也是如此。

    辨认专家级新手

    根据布鲁斯·韦伯斯特的“死海效应”,最有才华的开发人员往往最有市场,因此当他们受到一点委屈时,是最容易另谋高就的。我们当然要及早辨认“专家级新手”,以下是一些常见的特征:

        ✄ 相信自己所熟练的语言、框架是“银弹”,能解决所有问题;

    比如一个 MySQL DBA 还没有用过 NoSQL 就对它嗤之以鼻,这并不是说不喜欢某项技术或者没有使用过某项技术就成了“专家初学者”,而是说“如果它不在我的工具箱里,或者它不是我有过经验的东西,那就不值得去做”这种隐隐约约的独断心态。

        ✄ 没有兴趣学习新事物,或不理解新趋势发展的背后原因;

    对于新技术嗤之以鼻,不去了解新技术诞生的背后原因,前些年 Docker 刚起步的时候,我就听过不少“不就是个虚拟机”这样的声音。对于前后端分离不理解,对于微服务不理解等等。

        ✄ 倾向以“辈份”来判断技术问题。

    “专家级新手”判断技术问题的方法,常常以提出意见者的职位、title、经验甚至年纪去判断,正好就是将十个一年的经验当成十年经验的坏例子。

    结语

    “专家级新手”是人类认知偏差造成的结果,对公司尤其是科技型公司有着决定性的影响。


     

    最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

    【值得关注】我的 C/C++编程学习交流俱乐部【点击进入】

    问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

  • 相关阅读:
    linux 内核升级
    maven 热部署至tomcat
    Executor多线程框架使用
    数据库中的一些连接
    Ajax传统操作
    第三篇、简单的图片下载器
    第二篇、通过蓝牙连接外设
    第一篇、实现上拉和下拉刷新
    解决Git报错:The current branch is not configured for pull No value for key branch.master.merge found in configuration
    Spark核心概念
  • 原文地址:https://www.cnblogs.com/huya-edu/p/14207069.html
Copyright © 2011-2022 走看看