程序员职业发展与规划:我要作一生的程序员吗 (转+个人建议)
程序员大致的成长路线:
初级程序员(薪资3k-5k)developer/software engineer
刚刚进入IT行业,做一些简单的项目,写一些简单的代码。写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱,也没有注释,他们只要求程序能够运行就好。
中级程序员(薪资6K~8K)developer/software engineer
到了这个阶段,已经掌握了较好的技术,可以靠自己去做一些项目了,不在需要靠复制粘贴别人的代码了,开始关注代码的质量,代码的规范,把该注释的地方,注释好,开始做很多实用的项目。并且在团队中担任重要的技术人员职位。
高级程序员(薪资9K~12K)Senior soft engineer/Senior Java developer/software architect/senior software architect
到了这个阶段,技术已经非常厉害了,很技术人员开始走设计路线,比如系统设计等等。公司会有很多的技术难题需要靠你去解决,这个时候是属于大神级别了。在公司会有非常重要的位置,受到领导的重视。
系统架构师(薪资10K~18K)Solution Architect/Application Architect/Platform Architect/Cloud solution Architect/Enterprise Solution architect
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
Engineering Manager (EM)(薪资12K~18K)
管理 6-12名的software engineers,个人发展, 被训, 招聘, 还有不同项目开发的进展控制。 EM大都由Team Lead发展上来, 技术上过硬, 同时又有people management experience。
Head of Engineering (薪资15K~20K)
管理数十名software engineers, 多个项目的resources management, 人员评估
CTO (薪资>20K)
掌管企业技术发展方向, 重大IT 项目管控
程序员的几个阶段:
第一阶段(2-3年):打基础
立足培养基本技术能力。刚入行的头三年对于一个程序员尤为重要。比如说Java,在三年内要对于增删改查掌握的非常熟练。可以应对大部分常规的项目开发,出色的完成公司布置的任务。要在自己的空余时间学习自己没有接触过的技术,找到口碑不错的技术性书籍去学习底层技术原理。
尊重老员工,低调做人高调做事,虚心的跟别人学习请教,主动承担不属于自己的工作任务,让人喜欢你。
推荐书籍《Java编程思想》《Java并发编程实战》《Java核心技术》
第二阶段(4-5年):全栈工程师方向
基本到了五年的工作年头,必须要向全栈工程师的方向发展了。有些人在之前的三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人基本已经被时代所淘汰。年纪大一些势必被更年轻的人给顶替;而有些人在三年里,除了完成基本的工作任务之外,阅读了很多号的技术书籍、记录自己的博客、逛Github学习新技术。如果你是做Java开发的,那一定要学习前端的知识体系,掌握前端的主流框架,如Vue、React。如果你是做前端开发的,一定要掌握一门后端编程语言,如Java、PHP、Python等。现在时代发展的都是需求全能型人才。对数据库设计架构和项目搭建具有基本的能力,对项目开发中的各种文档能够组织学习及阐述,能够拥有组织协调3-5人项目小组能力,对项目进度具有初步掌控能力,不断增强与上下级的沟通能力。
在提升技术的基础上增加一些除了技术之外的能力。从个人能力向团队组织能力转变。在沟通能力、协作能力和领导力上发力。
第三阶段(6-10年):不断强化领导力
技术做到了十年这个年头,基本可以成为大牛级别的人了。在十年的时间上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、以及对于互联网产品会有更深的体会。这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位。想要获得更多的回报,就一定要承受和付出的多,所以在管理方面要着重培养,强化自己的管理能力是非常重要的。
初级程序员(薪资3k-5k)developer/software engineer
刚刚进入IT行业,做一些简单的项目,写一些简单的代码。写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱,也没有注释,他们只要求程序能够运行就好。
中级程序员(薪资6K~8K)developer/software engineer
到了这个阶段,已经掌握了较好的技术,可以靠自己去做一些项目了,不在需要靠复制粘贴别人的代码了,开始关注代码的质量,代码的规范,把该注释的地方,注释好,开始做很多实用的项目。并且在团队中担任重要的技术人员职位。
高级程序员(薪资9K~12K)Senior soft engineer/Senior Java developer/software architect/senior software architect
到了这个阶段,技术已经非常厉害了,很技术人员开始走设计路线,比如系统设计等等。公司会有很多的技术难题需要靠你去解决,这个时候是属于大神级别了。在公司会有非常重要的位置,受到领导的重视。
系统架构师(薪资10K~18K)Solution Architect/Application Architect/Platform Architect/Cloud solution Architect/Enterprise Solution architect
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
Engineering Manager (EM)(薪资12K~18K)
管理 6-12名的software engineers,个人发展, 被训, 招聘, 还有不同项目开发的进展控制。 EM大都由Team Lead发展上来, 技术上过硬, 同时又有people management experience。
Head of Engineering (薪资15K~20K)
管理数十名software engineers, 多个项目的resources management, 人员评估
CTO (薪资>20K)
掌管企业技术发展方向, 重大IT 项目管控
程序员的几个阶段:
第一阶段(2-3年):打基础
立足培养基本技术能力。刚入行的头三年对于一个程序员尤为重要。比如说Java,在三年内要对于增删改查掌握的非常熟练。可以应对大部分常规的项目开发,出色的完成公司布置的任务。要在自己的空余时间学习自己没有接触过的技术,找到口碑不错的技术性书籍去学习底层技术原理。
尊重老员工,低调做人高调做事,虚心的跟别人学习请教,主动承担不属于自己的工作任务,让人喜欢你。
推荐书籍《Java编程思想》《Java并发编程实战》《Java核心技术》
第二阶段(4-5年):全栈工程师方向
基本到了五年的工作年头,必须要向全栈工程师的方向发展了。有些人在之前的三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人基本已经被时代所淘汰。年纪大一些势必被更年轻的人给顶替;而有些人在三年里,除了完成基本的工作任务之外,阅读了很多号的技术书籍、记录自己的博客、逛Github学习新技术。如果你是做Java开发的,那一定要学习前端的知识体系,掌握前端的主流框架,如Vue、React。如果你是做前端开发的,一定要掌握一门后端编程语言,如Java、PHP、Python等。现在时代发展的都是需求全能型人才。对数据库设计架构和项目搭建具有基本的能力,对项目开发中的各种文档能够组织学习及阐述,能够拥有组织协调3-5人项目小组能力,对项目进度具有初步掌控能力,不断增强与上下级的沟通能力。
在提升技术的基础上增加一些除了技术之外的能力。从个人能力向团队组织能力转变。在沟通能力、协作能力和领导力上发力。
第三阶段(6-10年):不断强化领导力
技术做到了十年这个年头,基本可以成为大牛级别的人了。在十年的时间上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、以及对于互联网产品会有更深的体会。这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位。想要获得更多的回报,就一定要承受和付出的多,所以在管理方面要着重培养,强化自己的管理能力是非常重要的。