从程序员到高级系统架构师该如何进阶?

一,从程序员到高级系统架构师该如何进阶?

首先要做的是打牢基础,在此基础上依次进行以下步骤:

1. 了解技术的底层实现

2. 了解常用基本框架

3. 对所在领悟的架构、业务熟悉

4. 对行业发展熟悉

以上都做到熟悉掌握后,加上5-10年工作经验,就有可能成为工程师。

二,程序员到架构师之路

对程序员来说,未来想要避开中年危机,那么你就有必要尽早做好自己的职业发展规划(越早越好)。架构师是技术团队的核心,薪酬高、技术牛。因此,很多程序员从刚进入这个行业起,就在心里深埋下了架构师的梦想,想起多年前我就曾在上海徐家汇美罗城的某快餐摊前,向女票立下了“要成为一名牛逼的架构师”的豪言。很幸运,牛皮变成了现实,一路坚持、一路坎坷,当年的女票成了LP,而我也实现了自己的架构师梦想,本篇我将通过梳理架构师职责与必备能力,给立志追逐梦想的程序员们分享一些学习方向。


一、架构师职责

曾有人这样形容架构师的重要性:架构师的工作就像是他打造一棵树的主干和枝干,然后程序员们让这棵树上长出树叶和果实。架构师,是一个既需要掌控整体又要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物,他需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。架构师职责简单来说有三点:


1、确认需求与拆分系统

在项目开发过程中,架构师需要依据用户需求,将完整的系统拆分为子系统和组件,形成不同的逻辑层或服务,确定各层的接口、层与层相互之间的关系,对整个系统分层进行“纵向”分解,对同一逻辑层分块进行“横向”分解。


2、技术选型

通过对系统的一系列的分解,最终形成了软件的整体架构,依据整体架构需要进行技术选型。


3、制作技术规格说明

在整个研发过程中始终保持与开发人员保持沟通,以保证开发者依照原定的架构意图去实现各项功能。



二、架构师需具备能力


1、架构师能力图谱

从初级程序员进阶到中级程序员、高级程序员,最终成为一名架构师,这是一个不断经验积累的过程,需同时兼具技术实力(技术广度与技术深度),除此之外,其它软实力也不容忽视,下图列举了一个架构师需具备的各项能力及占比。

架构师能力图谱就不一 一进行详解,感兴趣可以评论交流。


2、架构师技术能力

一个能担负起企业级应用、称得上资深的架构师,至少需要精通1-2门技术语言,同时具备一定的技术广度。粗略说来涉及技术范围如下:

1)、集合框架(源码)

  • List
  • ArrayList
  • LinkedList
  • Set:HashSet、TreeSet
  • Map:TreeMap、ConcurrentHashMap
  • Collection的synchronized等方法

2)、工具类

  • Google guava(推荐)
  • Apache common lang/BeanUtils/Collctions/IO
  • JSON
  • fastjson
  • gson
  • jackson

3)、框架

  • Spring:IOC、AOP、常用注解
  • SpringMVC
  • Mybatis
  • Shiro
  • Netty

4)、安全

  • 单项散列算法:MD5、SHA
  • 对称加密:DES
  • 非对称加密:RSA、HTTPS

5)、JVM

  • Java虚拟机(Hotspot实现)
  • 类加载机制
  • 内存模型
  • GC:回收算法、垃圾收集器
  • 调优
  • 工具:jstack、jmap、jconsole

6)、并发编程

  • Executor框架
  • Fork/join
  • happen-before
  • 数据结构:ConcurrentHashMap
  • 线程池:参数设置、原理、拒绝策略
  • 线程状态
  • Lock/synchronized
  • 原子操作类
  • 并发工具类:CountDownLatch、Semaphore、CyclicBarrier、Exchanger
  • IO、BIO、AIO、NIO

7)、数据

  • NoSQL:MongoDB

  • 分布式缓存:Memcached、Redis(推荐)

  • 关系数据库

  • MySQL
  • 引擎
  • InnoDB(支持事务)
  • 分库分表
  • Cobar
  • Mycat

8)、SQL优化

  • 索引
  • 主键索引
  • 组合索引
  • explain
  • 存储过程
  • SQL注入:使用#而不使用$

9)、事务隔离级别(ACID)

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

10)、锁

  • 表锁
  • 行锁
  • 悲观锁

11)、大数据

  • Hadoop
  • Hbase
  • Spark
  • Storm/JStorm

12)、算法与数据结构

  • 数组
  • 链表
  • 队列
  • 二叉树
  • B Tree/B+ Tree
  • 红黑树
  • 哈希

13)、分布式系统

  • 从集中到分布式
  • 分布式Session:Session复制、Session绑定、Session服务器(靠谱)
  • 分布式缓存:Redis、一致性Hash算法
  • 数据库:读写分离、主从热备、分库分表、一致性
  • 分布式事务、CAP、BASE、2PC/3PC
  • 分布式锁
  • Redisson
  • 负载均衡、硬件、F5、软件、LVS、Nginx
  • 消息队列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推荐)
  • 服务化:服务注册与发现、Zookeeper
  • 架构
  • 微服务
  • Spring Boot
  • Dubbo
  • RPC
  • SOA
  • 虚拟化
  • Docker

从程序员进阶成为高级架构师,并非一蹴而就,需要系统化、阶段性学习,并且在实战项目中融会贯通,这如同打怪通关,我们得一关一关突破,每攻破一个关口,技能值就增长一点,直至大获全胜。坚持学习加上点滴积累,最终成就梦想。原创码字不易,觉得不错请点赞支持,送你【分布式架构设计23期原创集合】,回复【架构】,立即领取。

三,程序员架构师工资大概多少

如题 四年移动开发,上下求索中

四,程序架构师年薪

由普通程序员进阶到高级架构师,是一个量变到质变的过程。除了公司内部晋升机制或职业跳槽机遇之外,最关键的是个人能力的成长。在软件行业干了十多年,下面我尝试给大家一些建议。



1.不断地丰富理论知识。从广度和深度两个维度,不断地拓展和深挖基础理论,领先技术,行业方案,最优方法。

2.不断地熟悉业务知识。离开业务,纯技术无法落地。比如写金融软件的就要有金融知识,写电子软件的就要有数电知识,写通信软件的就要有通信知识。

3.多总结多提炼。将经历转化成经验,进而转化为知识力量。项目经验不仅仅是经验,更是知识体系中重要的组成部分。



4.以全局的,瞻远的,扩展的,系统的角度去审视代码系统与模块,对框架,消息,协议,标准,方案都要熟悉,并常常试着不同的角度去审阅,理解,消化。

5.手中有码,心中无码。这是一种架构师高级境界,理论与代码互通,说论得码,见码知论。



愿各位程序员都能晋升到架构师,甚至专家,总工程师,CTO。谢谢大家。

五,程序员成为架构师难不难

多看书,少刷头条。。。


总结:以上内容就是 cba手游 提供的从程序员到高级系统架构师该如何进阶?(从程序员到架构师,你需要掌握什么能力?)详细介绍,大家可以参考一下。

相关攻略