工做这么些年了,看到了各类各样的程序员,也看到了各类各样的成长路线,说说本身的一些观点吧。程序员
做为技术人员,在刚起步阶段时,首先须要拓宽本身的技术宽度,对本身所作的项目/产品所涉及的方方面面的技术都应该有所了解,另外对于就是学习工程化,让本身真正具有开发商业软件的能力。架构
在工程化和知识宽度达到必定阶段后,须要开始根据本身的兴趣和工做内容有所选择,主要是增强在某一领域的技术深度。学习
在技术深度达到了必定阶段后,须要对本身作出一个选择,就是偏业务方向,仍是偏基础技术方向。架构设计
偏业务方向的技术人员,我认为作的好的表现是:设计
对业务发展的将来有必定的预判,有商业敏感意识;blog
能对复杂的业务进行合理的抽象;资源
在系统的设计上能对将来业务的变化有必定的预留处理。开发
偏基础方向的技术人员,我认为作的好的表现是:get
能结合业务的发展趋势对基础技术的方向有必定的预判,避免业务发展受到基础技术的拖累;产品
对业界的技术发展方向有本身的认知和判断;
在对应的基础技术领域有不错的技术深度。
结合本身的特质以及当前的一些情况,作出一个选择,重点发展。
而再往更高阶走的同窗,一般就会出现一种新的角色,就是成为团队leader,作为一个技术团队的leader,不管是业务的仍是基础技术的,在技术能力上仍是不能差的,尤为是判断力上,另外,做为一个团队leader,就意味着承担了团队方向的判断的职责,一个团队的方向基本会直接影响到团队全部成员的将来,以及所支持的业务的发展情况,因此对于一个团队leader,我以为最重要的能力就在方向的判断上,而后是根据方向的判断的组织建设(团队搭建,人才识别、培养、招募等)能力。
若是不是往leader方向呢,那基本就是往架构师方向为多,架构师的话,在至少一两个领域的深度外,对广度的要求很是高,还有一样就是判断能力,不管是业务架构师,仍是基础方向的架构师,领域的知识宽度是很是重要的,意味着能作多大范围的事,判断能力会体现出一个架构师在作一个架构设计时重点是怎么判断的,在有限的资源和时间状况下取舍是怎么作的,对将来是怎么作铺垫的,以及TA对事情的技术控制能力,一个好的架构师在技术风险的控制能力上必须是很是强的,例如一个强大的基础领域的架构师,应该是能够很好的控制跨多个专业技术领域的技术演进。
还有一种是往专业技术深度领域方向走,例如内核、JVM等,这些领域是真正的须要很是深的技术功底才能hold的住的。
还会有其余例如转型往业务产品方向等发展的就不在这说了。
总而言之,言而总之,我以为在整个成长过程当中,兴趣是最为关键的,因此follow your heart很是重要,只有在有足够的兴趣或梦想的状况下才能产生很强的自驱,没有足够的自驱我以为在技术领域基本上是不可能走到高阶的,除了兴趣外,本身的优点也要判断清楚,每一个不一样的方向,我本身认为仍是须要必定的天分的,而所谓的天分我以为就是对我的优点的判断。
原文连接本文为云栖社区原创内容,未经容许不得转载。