大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压根不知道自己不知道,还以为自己懂很多,现在想起自己以前就好笑,那个时候还算不上程序员,顶多只能算是个业余编程爱好者。
表现:假自信、过度承诺、满口我能行没问题、看不起其他程序员….
阶段二:知道自己不知道(Conscious incompetence)
工作后,发现自己在项目中工作时遇到困难不知道怎么解决,和身边人一比发现自己知识很欠缺,这时候知道自己技不如人,很多地方都不足,需要大补才行,这个时候就是大家所说的初级程序员阶段,这个阶段必须依靠别人指导。
表现:有点心虚、虚心学习、偷偷努力、羡慕牛人…
阶段三:知道自己知道(Conscious competence)
工作三四年后,自己的技能逐步提高,成为了项目组的技术大拿,这时候也很自信,知道自己能够解决遇到的所有问题,这时候就是高级程序员阶段了。
表现:自信、比较客观、真正承诺、有点自我…
阶段四:不知道自己知道(Unconscious competence)
工作多年后,随着自己知识的深度和广度的提高,越学发现越不懂,有时好觉得自己以前真是浪费了太多时间。虽然觉得自己还有很多需要提高,但是对工作中遇到的问题基本没有解决不了的,这个时候很多知识都自成体系,解决问题也有了自己的潜意识,有时连自己都不知道自己知道,这时候属于架构师级别了。
表现:开放、主动、好学、谦虚…
程序员需要 不断的学习不仅仅是学习 新技术 ,还包括应用的 问题域 ,用户的奇思妙想,同事的古怪习惯,行业的八卦 新闻 和项目演进的重要特征
我们必须学习学习再学习,持续不断的学习,然后把学习成果 应用到解决 日常遇到的一切新旧问题上
新手在该技能领域经验很少或者 根本没有经验 ,这里提到的经验,指的是通过实施这项技术促进了 思维的改变
举个反例:
可能一个开发人员声称拥有 十年经验 ,但实际上只是一年的经验 重复了九次 ,那么这不算是经验
引申问题:
一年有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.针对你的行业,细分阶级,比如十个阶级?哪十个阶级?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)