快捷搜索:

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

引言

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

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

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

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

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

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

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

技术成长三阶段模型

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

图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 解决问题”,而是“解决问题”)。简单说,就是你走出了被技术束缚和塑造的过程(前两个阶段),可以反过来回到问题本源来思考了。

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

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

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

思考题

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

经验分享 程序员 职场和发展