颠覆平庸:在技术上持续精进

?本文很长,约 9200 字,需要认真阅读 30 分钟,赶时间的朋友,看看下面的导图也会有一些帮助。

转载请联系订阅号“程序视界”获得授权,并在文章开始处声明作者信息:安晓辉(foruok),公众号“程序视界”创建者,《Qt Quick核心编程》和《你好哇,程序员》作者,CSDN博客之星,职业规划师,在行行家,知乎Live讲者。

你肯定想要颠覆平庸,保持技术精进,但这是一件极其困难的事。正因其困难,本文才有存在的意义——因为它描述一般性方法和原理,你可以从中找出适合自己的地方,付诸实践,获得你个人化的精进策略。

本文的结构导图,方便后面的阅读:

颠覆平庸:在技术上持续精进

模型中有三个要素:

  • 现状
  • 目标
  • 执行计划

每个人都可以评估自己的现状,我在做什么、用什么技术、技术达到了什么程度、拿多少薪水、什么职级、是否被领导认可、与人协作是否顺畅……有很多维度,静下心来思考一下,在纸上列一列,就能自己得出当下的状态。

而目标则很可能随着旧目标的达成而消失,或者随着日复一日的编码、Debug、交付而褪色,或者随着每个月的薪水蒸发掉。一旦我们失去了目标,就会陷入迷茫,被动工作,进而,慢慢失去竞争力。

所以,要想日有寸进,必须要在日常的开发工作中找到努力的目标。这非常关键——很多人就是因为没有目标而放任自己随波逐流被动工作最终变得庸常而被他人淹没或者被组织淘汰。

因此我们引入原本用于企业的对标管理法,帮助自己在日常工作中找到贴合自己的目标。一旦我们找到目标,对比现状,就可以找到差距和前进方向,有了方向,就可以制定计划,稳步前进,获得提升。

下图是实践对标管理法指导个人成长的基本过程:

颠覆平庸:在技术上持续精进

在技术领域内的成长,基本上都会经历三个阶段:

  1. 专项能力的提升,这是初级阶段,你为了做事情,必须先具备某些基础能力,比如你要学会 Python、Visual Studio、Vue、TensorFlow 、Mybatis 等。
  2. 技能体系的构建,这是中级阶段,你拥有了一组技能,围绕某个方向构建了自己的知识图谱,能够用自己的方式来解决问题。比如在C++这个方向上,你用 C++、Qt、OpenGL、libevent、ffmpeg、WebRTC 等组成了自己的知识图谱,可以胜任流媒体方面的产品开发。
  3. 融合创新,这是高手阶段,你具有了丰富的实践经验,具备了 T 型知识结构,形成了自己的思维框架和解决问题的框架,能够融合不同领域的知识,组合各种资源,创造性的解决各种问题。此时你跳出了具体的技术束缚,站在了更高的层面,用底层认知和思维来指导你的工作。

对开发者来讲,一年左右经验,多数人处在第一个阶段——专项能力提升的阶段,熟悉某种编程语言,可以完成别人安排的一个小模块的开发。

三年及以上的经验,就应该进入到第二个阶段了。当你在某个技术方向上构建了技能体系,就可以完成相对复杂的工作,可以独立的做一些事情,甚至可以辅导初级开发者来完成工作。这个时候,你往往已经是团队里富有生产力的成员了。

五年往上的开发经验,应该进入到融合创新阶段,能够独当一面,可以独立的完成特定项目的评估、设计、技术方案选择等事情。此时你往往是团队里的技术领袖或者技术管理者,具有比较大的影响力。

假如一个开发者干上八年十年,还到不了第 3 个阶段,可能就需要考虑通过其他方式来提升自己的竞争力,保住自己在团队中的位置。

这个模型更适合应用开发人员,对于做基础研究的开发者,比如音频算法、图像处理算法等,第三个阶段,可能是在他所在的领域内钻得更深,成为专家。

我们了解了技术成长的三个阶段,就可以结合自己的工作情况,判断自己当下处于哪个阶段,该做什么事情。

比如你做了 2 年 PHP 开发,可能你处于从第 1 阶段向第 2 阶段转型的过程中,此时提升的方向,就可以考虑和PHP相关的技术栈,比如了解 HTTP 服务器如何和PHP整合在一起,比如了解数据库,比如了解操作系统,这样你就可能会定下掌握 LAMP (Linux/Apache/MySQL/PHP)或者 LNMP(Linux/Nginx/MySQL/PHP) 技术栈的目标。

技术本身的知识层次

一门编程语言、一个技术框架,其本身的知识层次,也会有深浅,在学习时,也存在先后顺序和一般性规律。从这个角度上讲,技术本身的深浅层次,也可以用于个人对标管理。

一般来讲,学习一门技术时,有三个阶段:

  1. 基础开发,了解 API,基 于API 开发应用
  2. 熟悉内核及原理,主要是了解框架的设计原理,阅读源码,洞悉内在机理
  3. 优化框架,主要是针对框架的已有功能的不足进行完善、优化,或者使用框架提供的机制扩展框架功能,或者对框架进行定制,让它适合特定情境

我比较熟悉 Qt ,Qt 这个应用开发框架,三阶段的划分可能是这样:

颠覆平庸:在技术上持续精进

一旦我们养成了刻意练习的习惯,你就可能在很多领域内成为高手。

4) 复盘

参考陈中所著的《复盘:对过去的事情做思维演练》和成甲的《好好学习:个人知识管理精进指南》,订阅号“程序视界”的每周一书栏目推荐过这两本书。

所谓复盘,就是在头脑中对过去所做的事情重新“过”一遍。它通过对过去的思维和行为进行回顾、反思和探究,实现能力的提升。

复盘分两种:

  • 事件触发型复盘,比如项目抵达里程碑节点(或重大状态改变)
  • 周期性复盘,比如周、月度、年度、每五年

下面这个清单,可以作为我们复盘的框架:

  • 项目(事情)预期的目标是什么
  • 现状如何
  • 执行过程分析
  • 决定是如何做出的,有没有其他可能

通过复盘,我们可以知道,事情结果比预期好还是坏,在执行过程中,有哪些环节做得好,哪些环节做得差,好的总结经验指导下次行动,差的反思原因制定提升策略,这样我们就可以获得成长。

很多开发者忙于做项目,往往是赶工、交付、开始新项目,很少去思考做过的项目做得怎么样,什么好什么坏,原因在哪里,怎么改进和提升,陷入马不停蹄做项目一年经验用十年的怪圈,多年之后才发现自己的经验对不起工作的年限。

要告别这种状况,做项目时可以这样:

  • 使用对标管理法为自己找到提升目标
  • 通过刻意练习来提升
  • 三个问题让你每天有目标,实现日有寸进
  • 运用复盘来成长

开始行动!

我们在前面用很长很长的篇幅讲了怎样判断要不要继续做开发,介绍了如何使用个人对标管理法找到提升的方向,还剖析了如何设定有效目标,通过找到立刻可以执行的下一步行动来推动精进计划落地,最后还提出了四个有利于我们长期精进的好习惯,可是,所有这些,没有你的努力和行动,都没卵用!

知道和做到之间,有一道鸿沟,你只有积极行动跨越它,才可能收获更好的职场,成长为你想要的样子。

所以,开始吧!立刻!


其实这篇文章,是我知乎Live专题——“程序员的成长课:如何拥有你想要的职场”——的第二期“如何在技术上持续精进”的一次迭代,如果你对整个专题感兴趣,可以点击这里参与:程序员的成长课:如何拥有你想要的职场。

来源:foruok

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年6月16日
下一篇 2017年6月17日

相关推荐