广度和深度,是两个顾此失彼的极端。对于程序员来说,从一个初学者演化成一个终极形态,无不是这两种力量的拉锯。
当被这两种力量撕扯,无所适从的时候,我们把它叫做对未来的迷茫。
程序员很容易达到职业的天花板(大多数)。十年成架构。这不是炫耀,而是悲哀的现实。所以成为一个架构师并不难,难的是以后的路。
企业需要钉子。如何做一枚价值更大的钉子,正是很多人追求的。本文将介绍一个比较常见的程序员进化之路。每个公司的路线都不太一样,所以我的这张图,会有偏差,您就参考一下就得了。
发展路线
有三种发展路线,一种是侧重于技术的,一条路走到底;一种专注于业务,成为行业专家;另外一条路,是成为一个管理者。
初级程序员
初级程序员,通常自己都有一股错觉,觉得自己无所不能。什么都懂,聊什么都能头头是道的说上两句。
在这个阶段,往往会对其中一门开发语言情有独钟,会追求一些非常细的知识点(这是对的),并尝试去搜罗流传于网络上的N手资料。
作为一个缺乏工作经验的初级码农,面试时甚至会有笔试。考察方面多限于基础知识,以及算法方面的内容。
入职后,多负责一些后台页面的开发任务,或者处理一些日常事务,会经常发出一种”面试造火箭,入职拧螺丝“的感叹。
客户端开发
出于热爱,或者有一定的审美能力,部分同学在入门基本开发之后,会选择类似android的客户端开发。
此部分工作集中在app开发,H5,或者游戏开发上。这属于另一个分支,我们不做过多介绍。
客户端开发的工作很辛苦,倒不在于工作本身。客户端开发框架,较之于后端,变化更快,让人疲于奔命;由于成果能够直接被眼睛看到,遇到不靠谱的需求,就需要经常返工:)。
但其中的创新的快感和成就感,是很多后端开发无法体验到的。
Web开发
很多入坑java的,就是从web开发开始的。比如开发一个小博客,或者管理系统。
web开发接触最多的就是SSM,也是培训的重灾区。
很多人对技术的修炼,就到此为止了。十年工龄,两年经验,就是说的这里。通常挂在嘴边的话就是:“总共就那么点访问量,学些高级的技术,干什么用?”
所以一直做web开发的同学,一定要选一个可以深耕的业务,加深对产品的理解;或者走技术路线,多接触一些复杂的系统。
全栈开发
现在的小公司太多,为了节省成本,程序员从前端到后端到运维,什么都干。样样行,样样怂。
但可惜的是,随着公司成长,全栈,要么进化为元老,要么被淘汰,去进行下一轮全栈。
全栈多用于敏捷开发,能够快速对产品进行验证,实时调整策略。
听起来很美好,但不要高兴的太早,除非在其他方面有杰出的贡献,大多数全栈开发会沦为炮灰,因为太容易被替代。
当然,全栈的选择会更多,包括让人羡慕的自由职业者。也可以适时吹点牛X。
项目经理
一些能言善辩,喜欢和人打交道的,会选择这条路子。
大多数工作就是开会,统计、协调进度,更像是一个干杂活的,区别就是手里有一点点权利。
项目经理喜欢考证,许多公司去拿项目的时候,会用得着。
有很多结构优雅的公司,不需要项目经理,这种活有人兼职去做了。所以项目经理,在一些人员复杂,客户刁钻的公司,或者外包公司,还比较吃香。
喜欢埋头苦干的码农,会比较排斥此发展路线,所以这也算各得其所。
以前是人人都是项目经理,现在是人人都是产品经理。
你已经get到点了。
业务专家
选择了这条路,就往产品上靠的比较近了,但它又与产品有本质上的不同。
业务专家不是设计产品的,而是指在某个垂直行业,有多年的工作经验和深刻的见解,辅助决策。
业务专家能够了解业务系统中关键的要点和风险点,在技术设计的时候,兼顾业务属性,并能做微创新。
业务专家通常存在于比较稳定的行业,比如银行、保险、电信等。跳槽机会更少一些,但有一个步步高升的期望。但不要被伪业务
耽误终生,并不是所有的业务都有深耕的价值。
如果你是空气币老板,有P2P业务专家和IM系统业务专家两个人选,你肯定会优先选择搞P2P的。也就是说,很多业务的壁垒很高,对于业务专家来说,跨行的成本也很高。
技术专家
对某项技术有非常专业的见解,能够维护一个到多个复杂的技术中间件系统,比如,编写、维护一个MQ。
这也是大部分研发希望达到的技术高度。但可惜的是,随着云环境的推广,这部分的需求也越来越少,在可以预见的未来,需求会更加萎靡。
但在一些大公司内部,机会和缺口还是很大。从IAAS、PAAS、SAAS,到现在的Serverless、中台概念,都是技术专家们不甘寂寞的自我升级,技术群体的整体路线也越走越窄。
技术专家带有强烈的技术光环,使用的技术“四海皆准”,不需要关注太多业务,几乎能适应任何公司。
业务架构师
我见过两种业务架构师。其中一种,是入驻在业务部门,专门与技术架构进行配合的,其实还是技术架构。另外一种业务架构师,对技术了解较少,但对行业有很敏锐的洞察力。
中小型公司,纯粹的业务架构师很少见,还是需要具体的技术实施,我们可以认为业务架构师是业务专家的升级版本,能够权衡得失,出解决方案的那种。
你是业务专家,同时也是技术专家,可公司不会给你两份工资。所以你会得到一个技术属性的业务架构师称号。
技术架构师
可能大多数人,认为技术架构师做的工作,就是搭建一个开发框架,写一些公共类。这只是一小部分。
技术架构师同样是一个进行权衡的职业,在小型公司很难见到,因为没有那么多的需求。
技术架构师通常会对多个技术产品进行深入比较,并选择最合适的。影响因素有很多,比如公司技术栈、产品类型、管理、成本、工期等。
架构师与高级开发的区别是:开发能够实现某种方案,而架构师能够在多种方案上进行权衡。
无论是业务架构师,还是技术架构师,都需要从大量冲突的资源中,找到一种最优的协调方式,以解决问题为主,不会再拘泥于某种语言或个人喜好。
CTO
作为见过n个CTO跑的人,我一直在思考架构师与CTO的区别,作为这个会有专门的文章进行剖析,在这里写一下主要的点。
1、需要考虑公司的整体发展战略,明确技术团队的演化方向。有战略思维。
2、对上能够用“人话”与CEO进行沟通,对下能够保证系统的稳定,产品的进度。有沟通能力。
3、打造有竞争力的团队,会涉及大量管理工作。有管理经验。
4、有行业影响力,自带光环,对企业有附加价值。
End
每一条路,都荆棘密布。等你达到你想要的高度,会突然发现:已经35岁了。
共同学习,写下你的评论
评论加载中...
作者其他优质文章