1.用轮子
从java本身来说,涉及了包括jdk在内的各个jar和中间件,这些中间件对于一般程序开发人员来说,有些并不知道,有些是知道但不知道怎么用或者是只能用一部分通用的功能。如果能够用通用的功能,则可以简单的归纳为用轮子的阶段。
该阶段其实也可以分为几个小阶段
(1)所有方法都已经被dependence并且有示例可以进行参考,他们只有进行简单的ctrl+c和ctrl+d就可以完成业务功能;
(2)方法被dependence但是在项目中没有示例参考,他们必须从网上查找通用引用方式,然后结合业务进行适当的调整,以满足业务需求;
(3)方法没有被dependence,但是是一些通用逻辑,可以很容易的从各方面查询到,然后引用后回到第二阶段。
但是,在这整个过程中,并没有深入理解轮子内部的各个零部件,零部件的功能、性能,以及零部件的组成方式。如果到达了这一阶段,可以进入到找轮子的阶段了。
个人认为:处在第一、第二个小阶段可以归纳为初级工程师,第三个小阶段可以归纳为中级工程师。
2.找轮子并且用轮子
该阶段其实也可以分为几个阶段。
(1)对现有jar以及中间件都功能、性能能够深入了解,知道其使用边界,因此会清楚的知道现有的功能是否能够满足或者有效的满足业务需求,如果无法满足,则会去寻找新的轮子达到目的;
(2)对现有轮子不能满足业务需求,则能够有效的找到新的轮子满足业务需求。在这个阶段,首先是要知识面广,然后定位到满足需求的轮子后同时对轮子的内部构造和功能能够深入了解。
(3)通过各个轮子可以组装成一辆新的车型,而且这辆车还能够持续有效的扩展新的功能。
个人认为:能够达到第一个小阶段则可以归纳为高级工程师,而第二个阶段可以归纳为资深工程师,到达第三个小阶段,也就是架构师的入门门槛了,在一般的公司往往都能够成为技术领域的领头者。
我想,在国内能够达到第二、第三阶段的人已经不用担心失业问题了。
3.造轮子
这一阶段的核心是不会重复造轮子,而且到了这一范畴,工程师就可以完全脱离业务领域,也就是研究员的角色,比如新写一个中间件,或者对中间件进行包装等等,当然更核心的是能够对软件基础,包括软硬件有非常深入的了解,也就是我个人认为所谓的零部件,他们能够从硬件性能,软件性能等考虑,从核心领域对代码进行优化,这一典型的核心就是jdk,我个人认为jdk的发明者都处于这一角色。
在这一领域的人才在中国非常少,有的也大部分集中在AT等大型互联网公司内。平常人,一辈子也很难涉足这一领域。
4.造零部件
第四个领域已经可以称为科学家了,比如创造新的算法,新的硬件等等,该一领域我所知甚少,所以也就无法用笔墨去描述。