程序员需要不断的学习
不仅仅是学习新技术,还包括应用的问题域,用户的奇思妙想,同事的古怪习惯,行业的八卦新闻和项目演进的重要特征
我们必须学习学习再学习,持续不断的学习,然后把学习成果应用到解决日常遇到的一切新旧问题上
阶段一:新手
新手在该技能领域经验很少或者根本没有经验,这里提到的经验,指的是通过实施这项技术促进了思维的改变
举个反例:
可能一个开发人员声称拥有十年经验,但实际上只是一年的经验重复了九次,那么这不算是经验
引申问题:
一年有365天,你是过了365天!还是只过了一天,重复了365遍?
1.新手非常在乎他们能否成功,没有太多经验指导他们,他们不知道自己的行为是对是错
2.新手不是特别的想要学习,他们只是想实现一个立杆见影的目标
3.他们不知道如何应对错误,所以出错的时候,他们非常容易慌乱
以上是新手的明显特征,所以跨越新手有以下几个步骤
1.渴望成功,但是不要太过于执着,急功近利往往是失败的前兆,不急不躁的心态最好
2.没有经验就去寻找经验,一个好的老师和一些优质的资源能够迅速把有用的经验传递给你
在亲身累计经验之前,逆向思考,寻找经验才是核心和紧急目标
3.进行能力测试,可以利用第三方的题库和测试流程,标准而大众化的测试,同时也需要自我测评,比如完成一个项目,自己统计整体时间,自己撰写时间轴日志,自己判断自己的词汇量和熟练度等
自我测评是第三方无法完成的,这点尤其重要,简单来说,也可以称为自我认知,并且把数据可视化
4.兴趣是最好的老师,没有兴趣也是可以培养的
想要一个立竿见影的目标其实并没有错,新手恰恰需要酷炫有趣有用的目标才培养自己的兴趣,一个完整的小案例能够把所学的知识点融会贯通
新手要做的,是一边需要沉下心来学习零碎的知识点,一边整合知识点做出一个完整的效果案例,两相结合才能迅速进步
反之,一味的学习零散的知识点不去做案例,学的太多也只是空背概念而已,一味的追求项目效果而不去深入内容,那么永远不会进步,碰到一点改动就毫无办法了
5.不知道如何应对错误没关系,心态要冷静,并且及时的把错误整理下来,学会处理错误的方法尤为重要,比如如何正确提问,比如高效引擎检索,比如官方帮助手册等,遇到错误并不可怕,可怕的是找到解决错误的办法
阶段二:高级新手
高级新手能够多多少少摆脱固定的规则
1.他们可以独自尝试任务,但仍难以解决问题
2.他们想要快速的获取信息例如,当学习一门新语言或者API时,你可能会感觉到这点,你发现自己会快速浏览文档以寻找一个方法或参数列表,你不想在此寻根究底,或者重温一遍基础知识
3.高级新手能够根据过往的经验,逐步在正确的情境中采纳建议,但比较吃力,同时,他们能够形成一些总体原则,但不是全貌,他们没有全面的理解,而且的确不想有
以上是高级新手的明显特征,所以跨越高级新手有以下几个步骤
1.思考难以解决问题的原因所在,是哪个地方限制了你解决问题的能力?
这一点与你个人的现状有关,你正在学习的技术栈,你所做的项目,你的综合能力和资源
简单的说具体问题具体讨论,你必须对问题有深刻的认知并且对自己有足够的了解
2.在这个追求效率的时代,要去思考和学习底层原理,是一件很难的事情,因为时间不允许
事实上绝大多数事物的不成功,就是没有足够的时间
在时间的维度上,再无知的新手也有一个宽泛的坐标,那就是寻找一个参数方法的时间和解析一个参数方式的时间都大致明确的
比如找到并使用某个参数方法大概需要2分钟-10分钟,正常情况是5分钟,而解析一个方法原理,需要的时间是不确定的,确定的是大于等于10分钟,可能是30分钟,也可能是几个小时,这与效率不符,从利益上看也不划算
寻根究底是需要的,但它的重要等级排列在熟练了解全局内容之后
重温知识点也是如此
3.高级新手在一个熟练的框架里有所经验,有所作为,但是换了一个框架,复用原来的知识,就显得生涩了
在学习的过程中,要不断的举一反三,一个例子刻意练习三遍以上,一个例子做出不同的三种效果,一个例子应用在三种不同的情境等等等,学会触类旁通
阶段三:胜任者
在第三阶段,从业者现在能够建立问题的概念模型,并有效的使用它们
他们可以独立的解决自己遇到的问题,并开始考虑如何解决新的问题——那些他们之前没有遇到的问题
你可能会看到,处在这一水平的人通常被认为有主动性和足智多谋
他们往往在团队中发挥领导作用(无论是否有正式的头衔),他们是团队里的好人,既可以指导新手,也不会经常骚扰专家
以上是胜任者的明显特征,所以跨越胜任者有以下几个步骤
1.教是最好的学,当你可以胜任工作,可以独自解决大部分问题,已经比较完善了
这个时候要追求知识的深度,想要进一步提升,就需要整合以前所有学习的内容,资源以及学习方法,在底层原理上,还有很多需要融汇贯通的地方,通过教授新人和他人,能够完善自己的知识体系,找到自己的薄弱点,以另一个层面的角度来重新调整视野
2.学习与之相关的领域,这些内容你不一定会用到,或者不是在你的职责范围之内,但是学习之后会让你的本职做的更好,让你的知识更加全面
前端胜任之后,可以适当学习后端,也可以适当学习UI,往全栈的方向,学了python之后,也可以学学java,了解不同语言之间的优点和缺点,运用不同的内容适当的解决问题
对比思维,左右辩证,看似把时间花费在精通之外,实际上效果一样会反馈到核心事物上
广度和深度是一个选择题,在时间上,只能二选一,适度就行
阶段四:精通者
精通者有足够的经验,他们知道下一步会发生什么,如果没有发生又需要什么
他们非常明确哪些计划需要取消,而应该采取什么行动
处于精通者的人更像是初级专家,而不是高级胜任者
1.精通者一定是身经百战,给一个项目,他能在一开始就判断出这个项目需要多长时间,分为那几个步骤,需要什么人员
从一开始就是了然于胸,排除可能出现的错误,剩下的只是按部就班的走正确的流程就好,达到高效,高质量,少错误的效果
这个阶段的人,已然有了质的变化,想要如何往上跃迁,还需要另外的质的改变
阶段五:专家
终于我们来到第5个也是最后一个阶段:专家
专家是各个领域知识和信息的主要来源
他们总是不断的寻找更好的方法和方式去做事
他们有丰富的经验,可以在恰当的情境中选取和应用这些经验
他们著书,写文章,做巡回演讲,他们是当代的巫师
思考:
1.自我测评,你处在哪一个阶段?
2.如何做才能提升到下一个阶段?
3.针对你的行业,细分阶级,比如十个阶级?哪十个阶级?