我希望用一篇文章完全让大家正确的理解从程序员到架构师、技术经理、技术总监、CTO的完整区别以及进阶要领。
只有客观去认识,才会更加合理的找到自己的擅长点,从而更好的发展自己。


<img src="https://s2.51cto.com/images/blog/202305/06204108_64564ae455fde48614.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="364" width="640" data-original="https://pic1.zhimg.com/v2-b5bbda3e1a7a32366b481096f371e1b8_r.jpg">

产品经理和架构师 产品架构师和产品总监_商业


上图是典型的薪资结构图,我们先从高级程序员谈起。

高级程序员

一般是至少三年以上的工作经验,有些地方是五年以上,很多小公司或者创业公司,高级程序员覆盖工作职责比较广,基本包含部分产品经理、项目经理的工作职责以外,最主要负责核心代码编程,基本技术难点都自己解决为主。


<img src="https://s2.51cto.com/images/blog/202305/06204108_64564ae4e6c4f68201.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="294" width="640" data-original="https://pic2.zhimg.com/v2-dd038ce12ac03d6d19b64da14a0bd0b5_r.jpg">

产品经理和架构师 产品架构师和产品总监_商业_02


在公司大一点的都有非常明确的职责和级别定义,以阿里外代表,P5-P6代表高级软件工程师这个级别,基本能独立负责设计和编码阶段。


<img src="https://s2.51cto.com/images/blog/202305/06204109_64564ae519fbd91899.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="258" width="640" data-original="https://pic2.zhimg.com/v2-01fc7b1f340107e2ebdb08fce8de5855_r.jpg">

产品经理和架构师 产品架构师和产品总监_架构师_03


其实,在国外例如google、facebook等公司,很多牛人的title都是Senior Level engineer,这一点不像在中国。

在国内,一般一个高级程序员的准确定义:

负责核心复杂功能的实现方案设计、编码实现。详细描述:能独立设计一个业务模块的能力,并且独立设计数据库表以及UML画图,利用部分设计模式以及懂得算法和效率的高质量代码。

架构师

一般能做到架构师这个称谓,工作年限至少都在5年-8年以上,具体还看每个人的学习能力和领悟能力,也有时间短的,但大部分都是个例。

之所以有架构师这个称谓,主要还是公司发展以及大了的需要,需要专注于技术的人,你也可以理解为技术专家,攻克公司技术难题为主,例如淘宝的双11的挑战,以及公司发展需要考虑独立拆分,数据库压力太大,需要分布式缓存以及CDN的配合,怎么选择,怎么结合自己公司的情况攻克当前技术难题。

如果一定要准备定义,我用一句话:


<img src="https://s2.51cto.com/images/blog/202305/06204109_64564ae54112b69149.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="294" width="640" data-original="https://pic2.zhimg.com/v2-02fff393f0426680d0bea5c6645c434d_r.jpg">

产品经理和架构师 产品架构师和产品总监_架构师_04


架构师的职责应该是立足于技术和业务之间的中间角色或者平衡点, 在针对业务深刻理解的基础上,针对业务中存在诸多变数,挑选适合的技术架构和技术方案。

技术经理

技术经理坦率的讲,就是从高级程序员开始分化而来,一部分同学选择继续专研技术,往纵向发展,一部分同学打算觉得未来管理这条路很好,主动选择开始转型管理这个方向,于是才有里技术主管或者经理经理这个称谓。

我还是以阿里为参考,阿里的M代表管理方向,你可以通过下图可以清晰的看见P系列和T系列对应的级别。


<img src="https://s2.51cto.com/images/blog/202305/06204109_64564ae5665ab93048.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="301" width="640" data-original="https://pic1.zhimg.com/v2-448bae68df2e23ec1ffed3b2de3a40d4_r.jpg">

产品经理和架构师 产品架构师和产品总监_架构师_05


P6和M1,从技术的角度,如果你打算往管理M发展,M1对应的至少你也能胜任资深工程师。

所以,这个时候你就非常清晰了,技术经理本身就是从资深工程师发展而来,很多公司的技术经理根本没有从一线研发做起,大部分就是一个项目经理,带带项目为主,根本无法胜任刚才我讲到的技术经理的工作。

最后,我稍微总结下部分技术经理的要领:


<img src="https://s2.51cto.com/images/blog/202305/06204109_64564ae5dc5371183.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="294" width="640" data-original="https://pic3.zhimg.com/v2-452aa364cfadf025a31d96ed57fd2416_r.jpg">

产品经理和架构师 产品架构师和产品总监_商业_06


首先,具备核心模块代码编程的能力,从设计方案到核心编码,再到后期的代码review,这方面是能完全胜任的。

其次 ,才是团队任务管理,分配工作,工作量评估,以及帮助团队人员提升实力,以及推动更加合理的考核机制。

再次,协调的能力,与人打交道的能力,平级部门,产品、设计、测试、运营打交道的能力,这个还是要有的,不能一味盲干,也不能一味不发声,总之你要让你的团队在公司应该有一定的美誉,让大家能记住你们团队。

技术总监

技术总监一般工作8--10年以上,面技术经理的事你能做的非常好,再加上公司发展的需要,需要你同时带领多条业务线或者多个小团队的时候,基本就是技术总监了。

从管理的层级,技术总监同时管理多个技术经理,管理从业务线划分的团队。

从技术的层级,这里我补充一点,尽量你能胜任架构师这个级别,也就是说你至少也是一个技术专家最佳。当然,你会问?之前你提到高级程序员开始从技术专家和管理开始分化,这不是有点矛盾么。


<img src="https://s2.51cto.com/images/blog/202305/06204110_64564ae61bb6085950.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="294" width="640" data-original="https://pic4.zhimg.com/v2-376f755be719f59da2507300a1a1fd9b_r.jpg">

产品经理和架构师 产品架构师和产品总监_项目经理_07


其实,但你开始往技术经理发展的时候,其实就是多维度发展了,技术也是一个维度,并不是说你做纯管理脱离于技术,技术的积累你仍然需要继续专研。

最后,总结下技术总监的部分要领:

从业务线和团队的角度,你有能力组建研发部,搭建公共技术平台,管理各条业务线以及从技术经理、高级程序员、项目经理、还有架构师的能力。

CTO

首先澄清几个CTO的误区,CTO的要求是最高的,不是每一个人都胜任CTO,好的CTO在国内非常少,非常稀有。

很多同学的一个巨大的误区,认为CTO就专注于技术的,这是不对的,CTO如果只专注于技术,那你招一个架构师不就成了,为什么还需要找CTO呢。

还有一个误区,很多同学从大公司出来进入一家创业公司 or 小公司,挂名某某CTO,自认为自己已经一步登天,其实离CTO的能力差之甚远。

CTO是一个系统的成长轨迹,不是一朝一夕可以练成的,需要后天的巨大“自我改进”能力。如果用我自己的话总结,CTO的成长之路犹如“从蚕到蛾的蜕变”,整个蜕变过程缺一不可,最后都是要经历性格塑造的,不断的改变自己的性格。

我用一张图能稍微总结下CTO的要领,如果你有志于往CTO发展,至少你得知道,你尽量往这方面发展是OK的。


<img src="https://s2.51cto.com/images/blog/202305/06204110_64564ae63f8ea72572.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" data-captinotallow="" data-size="normal" data-rawwidth="640" data-rawheight="294" width="640" data-original="https://pic1.zhimg.com/v2-9f57f00828267cc162dab17ab8d5fe0c_r.jpg">

产品经理和架构师 产品架构师和产品总监_架构师_08


真正的CTO,是软件产品和技术是统一管理的,在通过后期的自己的努力,通过情商、逆商以及商业思维来辅助。

如果一定要总结下CTO的要领:

1.业绩达成:洞察客户需求,捕捉商业机会,规划技术产品,通过技术产品领导业务增长,有清晰的战略规划、主攻方向,带领团队实现组织目标

2、前沿与平台:到这个研发规模规模级别了,一定要有专门的团队做技术应用创新探索和前沿技术预研。而且要和技术平台团队、应用研发团队形成很好的联动作用,让创新原型试点能够很平滑的融入商业平台再让应用研发线规模化的使用起来。

3、研发过程管理:站在全局立场来端到端改进业务流程,为业务增长提供方便

4、组织与人才建设:公司文化和价值观的传承;研发专业族团队梯队建制建设、研发管理族团队梯队建制建设;创建创新激发机制,激发研发人创新向前发展,激发黑马人脱颖而出

CTO做的事情,是商业、产品、技术、管理、团队相平衡的综合统管。