11

第01课:技术成长的三阶段模型

 3 years ago
source link: https://blog.csdn.net/foruok/article/details/108729504
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

第01课:技术成长的三阶段模型

foruok 2020-09-22 12:21:14 442

作为整个系统课程的第一部分,我想先跟大家分享的是如何选择技术方向,我将结合技术成长的三阶段模型,讨论在入行、构建技能树、技术转型、团队技术方案选型等常见场景中如何选择适合自己的技术。

努力只有在方向正确时才有价值。

开发者选择技术也是如此。假如你阴差阳错地选择了一门过时的技术或者普及度不高的技术,你在找工作时就会不断受挫,即便投入实际工作中后也会忧心自己的发展前景。

我们先设想如下的几个场景:

  • 你刚进入软件开发领域时,急需选择适合自己和市场的技术才能更好地就业;
  • 你做了一两年技术工作,开始构建自己的技能树(知识图谱),需要选择与你现有技术相互补充、1+1>2的技术来学习和提升;
  • 你的技术能力慢慢在团队里凸显出来,成了先锋官,有新的项目、新的产品时,你总是被赋予探索技术方案的角色,可是一招不慎,你选择的技术就可能导致整个项目的失败;
  • 你使用 C++ 语言做了5年开发工作,越来越觉得这门语言不适合自己,想要学习一种新技术作为自己以后的主要开发技术,很担心再选错——因为你做开发的黄金时间,加起来也不过三四个5年;
  • 你成为技术负责人或者研发经理,需要决定团队的技术图谱,需要为团队承接的新项目选择技术方案,要考虑哪些因素呢?

所有上述问题,我们都会在第一部分中讨论分析,我们会找到选择技术方向时要考虑的各种因素,然后结合特定的场景,看看你在选择时具体需要做哪些考量。

希望每一位读者都能掌握选择技术方向的方法,这会让你具备更强的竞争力和更高的身价;作为团队的一员,你会知道在为某个项目选择技术时该如何综合考虑,在风险、成长、代价之间进行权衡。

技术成长三阶段模型

为了更好地选择技术方向,我们先来介绍一个模型,我给它取了个名字叫“技术成长三阶段模型”,参照下图1-1所示。

enter image description here

图1-1 技术成长三阶段模型

我们在一个专业领域内的成长,基本上都会经历三个阶段:

  • 初级阶段:专项能力的提升
  • 中级阶段:技能体系的构建
  • 高级阶段:融合创新

1.初级阶段:专项能力的提升

专项能力提升阶段是初级阶段,针对某项具体任务你必须先具备某些基础能力,比如从事软件开发工作,你要学会某种语言、某个 IDE、某种技术框架……

如果你刚刚从学校毕业从事开发工作,或者刚刚从别的跑道转换到开发领域,那么你就处在这个阶段。这个阶段最重要的目标就是提升专项能力,让自己能够迅速搞定一些别人安排给你的事情,体现出你的价值。

这个阶段持续的时间长短因人而异,可能会是1~3年。如果超过3年还没有进入下一个阶段,那么你的成长速度就需要提升了。

2.中级阶段:技能体系的构建

当你拥有了一组技能,围绕某个方向构建了自己的知识图谱,能够用自己的方式来解决问题时,代表你已经进入了中级阶段。比如你使用 Java 语言做后台方面的开发,你的技能体系可能由 Java、MyBatis、Spring、SpringMVC、Netty、MySQL、Python、Linux 等组成。此时你在团队中,应该已经可以独立负责某个模块,能够完成模块的设计和开发工作,也能够指导初级阶段的同事进行开发。

你可能需要2~3年,经历2~3个项目才能慢慢构建起自己的技能树,然后还会在这个阶段再待上1~2年,不断练习你的技能体系中的各项技能。所以当你能够拥有一棵强大的技能树时,距离你刚从事开发工作可能有5~8年了。

假如你超过这个年限,用过的技术还是散乱的,东一榔头西一棒槌,不能有机组合在一起,那么你的开发经验和能力,肯定大大落后于你的工作年限。换句话说,你可能把一年工作经验学到的知识、技能机械地重复了几年,没有获得应有的成长。

3.高级阶段:融合创新

这是高手阶段,你拥有了丰富的实践经验,具备了 T 型知识结构,形成了自己的思维框架和解决问题的框架,能够融合不同领域的知识,组合各种资源,创造性地解决各种问题。

进入这个阶段非常重要的一个标志就是当你遇到问题时,不再从下而上去思考(即从技术实现细节来考虑问题好不好实现、拿技术去裁剪问题或重定义问题),而是从实现细节跳脱出来,站到更高的层面,自顶向下去思考、去分析,先运用框架、逻辑去分析真正的问题是什么、问题的目的、问题的现状、如何去解决。搞明白这些之后,你才会沉降到技术层面去考虑实现的选择,而且实现时,你也不会拘泥于某种技术,而是什么技术合适就用什么技术(你的目的不是“用 Java 或 Redis 解决问题”,而是“解决问题”)。简单说,就是你走出了被技术束缚和塑造的过程(前两个阶段),可以反过来回到问题本源来思考了。

在这三个阶段中,我们都会遇到选择技术方向的问题。比如在初级阶段,入门时要选择,发现某种技术不适合自己时要重新选择;在中级阶段,我们要选择某些技术来构造我们的技能树,或者要做技术转型,需要重新选择技术方向;再比如在高级阶段,我们往往会负责产品的技术方案探索与选型,免不了要选择技术方向,甚至在这个时候,我们个人也可能会在技术方向上转型,必须有所选择。

所以,我们根据技术成长的三阶段模型,挑选了下面几个可能需要选择技术方向的时机,分开来讲在这些时机下如何选择技术方向。

  • 入行的技术选择
  • 构建技能树的技术选择
  • 技术转型的选择
  • 方案选型的选择

最后,你可以思考一下现在自己处于技术成长的哪个阶段?你认为选择技术方向都需要考虑哪些因素?我会在下一期具体讲述。如果你在选择技术方向上有什么心得、疑惑或者建议,也欢迎留言与我探讨。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK