IT行业入行必看史上最全程序员发展路线

北京中科白癜风医院医生 https://myyk.familydoctor.com.cn/doctor/287519/

中国有句古话,“男怕入错行,女怕嫁错郎”,可见行业的选择对于一个人来说具有多么深远的意义。如果说有哪些行业既符合普遍高薪收入,又符合长远的发展前景,还要拥有不可替代的重要地位,那么IT互联网可以说是完全匹配。

近些年来越来越多的大学生选择了这个行业,即便是非相关专业的毕业生为了进入这个行业不惜放弃专业转行,那么大家真的了解IT互联网这个行业吗?对于这个行业内的岗位是怎样选择的呢?

首先,我们看一下这个行业各个岗位的薪资分布是什么样的,以年二季度为例:

从上图可以看出,IT互联网行业薪资最高的岗位以技术岗为主。既然如此,我们就来深度剖析一下技术开发相关岗位的发展路线。

从上面两张图可以看得出,如果你懂技术,那么你在这个行业的发展路线可谓是多种多样,不做技术开发,也可以选择销售方、产品方向、培训方向、管理方向,创业等等。

如果你坚持技术开发,那么我想这条路线才最适合你:

初级程序员(工程师)---中/高级/资深程序员(工程师)---系统架构师---初级/高级技术经理----技术(研发)总监---CTO

那么作为一名技术开发人员,从初级到最后的CTO需要具备哪些条件呢?

(内容较多,耐心看完会发现对你的职业规划有很大帮助)

初级程序员

工作内容:

参与需求分析、设计、评审工作;

执行上级主管安排的工作任务,对负责模块进行数据库表设计、接口文档设计与开发、核心功能开发、冒烟测试d等;

对自己负责的工作质量进行把关,主动进行技术与业务知识总结;责项目的日常开发维护工作等;

对线上产品出现的较为重大的故障进行分析、排查并且解决或协助解决问题,使产品恢复正常使用;

完成上级安排的其他工作。

技术要求(以Java为例):

Java基础扎实,熟悉JSP/Servlet、Spring、Springmvc等;

熟悉HTML、CSS、jQuery、AJAX、JavaScript等前端技术;

熟悉SQL语法、Oracle数据库;熟悉SQL语法、Oracle数据库;

此阶段大概要经历3年,主要是打基础的为主,积累自己的开发经验,掌握开发技巧,熟悉开发流程,也同步锻炼自己的综合素质,比如:总结汇报、演讲、资源协调等等。

在这个阶段,如果你发现自己不适合做开发,可以转向技术之外的岗位:测试、产品、售前等。

中/高级/资深程序员

工作内容:

核心技术方案设计、封装组件、核心功能/逻辑代码开发、技术评审等工作;

负责后端的模块设计和开发,并负责完成核心代码;

完成模块的设计、编码、测试工作,编写各类技术文档等;

支持解决各项目中提出的定制需求,协调人员及进度控制,把控产品的研发质量;

配合前端开发人员进行程序调试测试,最好也能掌握基本的前端开发技巧;

能够按照负责人的要求进行系统程序设计和数据库设计;

指导中初级软件工程师完成工作任务。

技术要求(以Java为例):

掌握Java语言,熟练使用servlet、JDBC、多线程、网络、IO等技术,熟悉常见算法及数据结构,有良好的编码习惯;

熟练使用Spring,SpringCloud等开源主流框架,了解框架设计思想及其实现原理;

熟悉Linux/Unix系统,熟悉Oracle、SQLServer、MySQL等关系型数据库,SQL功底扎实;

熟悉Reids、MongoDB等NoSQL数据库;

具备良好的识别和设计通用框架及模块的能力。

到了这个阶段,你不仅可以完成任务,开始注重代码的质量,能够写出工业级的代码。

你的经验可胜任模块级的系统设计,承担完成较为复杂的技术,能有效的自我管理,有帮助别人快速解决问题(troubleshooting)的能力。

此阶段你需要经历到7、8年左右的体验,中间要经历一段深刻自我历练的过程。如果在此期间你不再喜欢开发,可尝试转为其它角色,如产品经理,售前售后支持等岗位。

当你做到中高级程序员,基本上组织也会让你当个小组长/主管之类的岗位,让你管理几个小组员,你的思维就要从个人思维转向团队思维了,要多思考团队何去何从。

系统架构师

工作内容:

需求分析管理。技术支持,风险预判,工期等解决方案;

架构设计。列出功能树,分层管理。达成高扩展,高可用,高性能,高安全,易运维,易部署,易接入等能力;

功能设计与实现。对架构设计的底层代码级别实现;

负责核心系统的架构设计,重构、优化现有的技术架构,及关键架构设计的落地实现;

重点难点技术攻坚,主导核心编码和上线;

项目售前支持,在技术方面配合客户立项及标书规范的制定、规划设计方案、商务报价、合同相关条款等事宜;

不断优化架构设计的全局性和前瞻性,推动周边系统和相关团队完成系统架构落地,解决业务发展遇到的架构问题,持续提升系统平台能力。

技术要求(以Java为例):

本科或以上学历,6年以上工作经验,3年以上系统架构设计经验;

掌握微服务框架、分布式架构、缓存、日志、消息等大规模集群技术;

熟悉虚拟化以及Docker、kubernetes等容器技术;

熟悉掌握Nginx/ElasticSearch/Redis/RabbitMQ等中间件;

主导并参与过大型项目的系统设计与研发;

深刻理解大数据处理(流计算、分布式计算、分布式文件系统、分布式存储等相关技术和实现方法,有架构和设计实践经验;

熟悉大数据解决方案包括Hadoop、Spark、Storm、机器学习、深度学习等大数据解决方案;

精通Java、scala、python中的一种或多种语言;

成为架构师至少要6~8年,经历大大小小的项目。架构下一步可以继续往技术方向深度发展,也可以往技术管理岗发展。

技术经理

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

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

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

技术总监

如果一个研发团队超过20人,有多条产品线或业务量很大,这时已经有多个技术经理在负责每个业务,这时需要一位技术总监进行整体的业务管理。这个岗位不仅要求有过硬的技术功底,同时也需要熟练团队管理能力。

CTO

首席技术官,英文名ChiefTechnologyOfficer。是与CEO、COO、CFO同级的领导者,是技术和业务融合的领袖。

在国内,CTO大部分则偏重于研发管理,相当于技术总监的Plus版。大部分CTO的是领导技术团队开发各类产品,解决技术问题,管理不同的项目,排期交付。还有一部分的职能类似于架构师或总工程师,作为技术侧的权威,为下一步的发展方向做研究探讨,为CEO提供建设型决定参考。

以上就是对程序员这一岗位的深度刨析,并着重介绍的了一下技术发展路线,如果是你,你会选择纯技术路线,还是其他路线呢?

部分内容来自“bug随身行,less亦可期”原文网址:

bugless.site/articles//08/03/2.html




转载请注明:http://www.aierlanlan.com/cyrz/4635.html