你与架构师相比差距在哪儿?如何提升?程序员从开发做起,工作前3-5年可以是中级开发,但随着年限的上升还停留在开发上那么淘汰是迟早的事。在IT互联网行业除了保持不断学习,还要规划好自己的职业生涯。
你与架构师相比差距在哪我们一起来找找~
一、开发几年后职业该如何规划?
1.1要title还是要能力?
title相对较虚,尤其是毕业前几年还是要注重发展能力。个人技术水平上去,为后面几年打好了底子,后期要得到高的title和薪资基本上就是水到渠成的事情。
1.2大厂还是小厂?
侧重点不同,大厂背书比较好,对后面你的职业发展履历上增光添彩。所以大厂里主要在潜移默化里学习他软件管理和团队协作上的流程,以及打好底层的基础知识,比如jdk,算法等这些可以带走的东西。
小厂会快速提升你的能力,因为小厂里技术接触面比较广。大厂里你所做的东西可能相对比较单一,甚至待了几年来来回回就做那点东西,并且用的很多技术栈都是大厂内部自己定制的,拿到外面并不实用。小厂则不一样,小厂往往选择开源通用的技术栈,是可以在下一次找工作时复用上的。
所以不必太纠结大小厂的问题。关键是在这些企业里学到你该学的东西并在将来要换工作时能用上它。
1.2技术经理还是架构师?
工作前3-5年可以从开发做起,但是随着年限的上升,还停留在开发上,那么淘汰是迟早的事。
所以必须转型,走向管理或架构,那么研发经理vs架构师,有什么区别呢?下面来给大家分析
大家可以自己到招聘网站检索,来看实际企业设置的岗位情况
毕业3年,技术经理和架构师都有招聘,技术经理岗稍多,薪资基本持平
毕业5年,同样都有招聘,岗位数量基本持平,薪资架构师要高出一截。
所以结论很明朗:架构师发展起来稍微滞后,但是后劲足。单纯的管理会逐渐走向瓶颈。
二、成为架构师机会更多吗?
2.1架构师的分类
实际上,各种架构师没有严格意义上的规定,往往各个公司根据自己业务的领域接合架构师所做的事情来划分:
从互联网开发领域来看,各个软件分层上,大致区分为:
业务架构:业务系统,和本公司业务息息相关,为业务系统的最终上线结果负责,一般跟着业务线团队走
中间件架构:一般是有独立的架构师组,提供给多业务线使用的公共服务
系统架构:底层、机房、系统、云、容器化、基础设施
根据行业催生出一些面向专职技术方向的架构师:
大数据架构:从事大数据方向
前端架构:从事前端方向
……
2.2一些实际招聘的案例
业务架构师:
JAVA架构师40-70K·15薪
职位描述
1、参与相关产品需求讨论,评审和软件设计;
2、按照项目计划,按时提交高质量代码,完成开发任务;
3、规范文档的编写、维护,以及其他与项目相关工作;
4、参与个人征信、企业征信以及数据类核心业务系统架构设计及优化。
任职资格:
1、本科以上学历,计算机或相关专业;3年以上java实际项目开发以及架构设计经验;
2、有扎实的Java基础,Java多线程、并发;熟悉主流开源应用框架,如Spring、iBatis、XML、JSON、Maven等开发技术;
3、熟悉设计模式、OOA/OOD;熟悉关系型数据库MySQLOracle等,SQL优化;熟悉Memcached、MongoDB、Redis等;
4、熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息、负载均衡等机制和实现;
5、有风控产品类/数据采集类系统架构设计以及开发经验者优先。
中间件架构师:
中间件架构师30-60K·16薪
职位描述
负责云中间件(API网关,服务框架、MQ等)的设计,核心代码开发,系统稳定性开发,性能优化等工作;
根据云计算平台的业务需求,完成云中间件产品的架构设计和优化工作;
帮忙业务方解决技术难题,用技术推动业务发展。
熟练掌握c++或者java/go并发编程,熟悉高并发,分布式通信,存储等相关技术;
任职资格:
本科以上学历,3年以上相关工作经验;
熟悉Linux操作系统、熟悉开源的中间件软件;
熟悉消息中间件,RPC框架,API网关,数据层,性能优化等相关技术经验者优先;
具有高并发相关工作经验优先;
熟悉SpringCloud,有springcloud相关开发及优化经验者优先;
熟悉servicemesh,有istio和envoy开发经验者优先;
熟悉gRPC/thrift框架,有gRPC/thrift框架相关开发及优化经验者优先;
熟悉开源消息队列RabbitMQ/RocketMQ框架,有相关开发经验者优先。
备注:有容器k8s背景的优先,但是要求还是熟悉微服务,servicemesh,springcloud,消息队列这些中间件方向的
系统架构师:
直播PaaS系统架构师20-40K·15薪
职位描述
1、负责直播CDNPaaS集成的开发,包括需求分析、架构设计、部署设计等工作;
2、负责头部客户业务架构梳理工作,针对客户整体的平台建设提供咨询、规划;
3、需在工作中具备咨询架构师能力,掌握但不限于网络、计算、存储、IaaS、PaaS等领域咨询能力;
4、跨团队整合资源,联同前台业务、职能部门和中后台产品/研发团队,高质量推进项目管理工作,共同达到项目目标。
职位要求
1、熟悉直播CDN基本原理及部署架构;
2、有扎实的编程能力,有优秀的设计和代码品位;
3、有很好的系统分析设计能力,能够根据客户需以及系统架构,设计合理的技术方案并落地执行;
4、有较强的客户服务意识,良好的沟通和协调能力能力,具备较强的大项目管理能力;
5、具备较强的学习能力和自驱力,具备创新性思维和深度思考能力;
6、了解容器/VM虚拟化技术、Kubernetes、Mesos、Yarn、Docker等项目。
三、程序员该怎么布局?
3.1理清楚自己的技术栈
•按java生态圈理清大纲体系-横向维度
•按时间维度理解技术演进的过程-纵向维度
•要亲自动手梳理,找到自己的个体差异,融会贯通,知己知彼
3.2掌握必要的工具
•语言本身:集合、线程、甚至其他语言lua,shell,python
•框架:spring、springboot、dubbo、netty
•设计工具:pd,uml
•版本管理:git
•项目管理:maven,gradle
•中间件:redis,mq,mongo
•……
3.3提升自己的设计能力
•设计模式-简单直白,但不要脱离应用
•来自常用框架的设计-艰苦而漫长
•自己尝试思索和改进-费脑细胞
3.4勤思索,逐渐构建起架构思维
日常的经验积累和总结
•知行合一,做之前,先考虑意义
•原生优于定制,约定大于配置
•什么都是,最后会沦落到什么都不是
•控制技术欲,不要瞎折腾
•留下扩展,但不要想到100年后
•没有最好的,只有最合适的
•够用就好,玩的越花,风险越大
•大巧不工,简约最美
3.5培养自己的圈子
人脉很重要!尤其是随着工作年限的增多职位的提升。
你的背书、内推、举荐和朋友圈子变得越来越重要!
3.6迈出第一步
先从0-1,再考虑100
如果有架构师的岗位和机会,抓住它,勇敢的迈出第一步,而不要总怯懦的认为自己技术不够。