人文艺术 > 如何从程序员到架构师?

如何从程序员到架构师?

2020-10-30 18:36阅读(60)

如何从程序员到架构师?:Java程序员如何(怎样)才能成为一名合格的架构师,需要经过哪些路径、具备哪些技术知识体系?这是程序员们经常问到的问题,:-架构师,

1

Java程序员如何(怎样)才能成为一名合格的架构师,需要经过哪些路径、具备哪些技术知识体系?这是程序员们经常问到的问题,本篇我将通过程序员进阶之路程序员薪酬待遇架构师必备技术进行详解,文末有程序员进阶架构师详细学习内容

一、程序员进阶之路

架构师也是从初级程序员起步的,程序员从初级、中级、高级再到架构师,职级不同,技术能力要求不同,这是一个不断经验积累的过程,后面会讲到。

二、程序员薪酬待遇

程序员在不同的职业发展阶段,薪酬待遇差别大,初级程序员与初级架构师的收入差距能达到几十万,架构师岗位可谓是名利双收(技术牛人+团队核心+丰厚收入),这也是程序员们期望往架构师方向发展的主要原因,关于薪酬待遇下图以阿里为例,供大家对比参考。

三、架构师必备技术能力

架构师是团队中的技术权威,需同时具备技术的深度和广度,哪些技术是架构师必须具备的呢?我总结了十七点,先简单罗列几点。

1、大数据

  • Hadoop

  • Hbase

  • Spark

  • Storm/JStorm

2、算法与数据结构

  • 数组

  • 链表


  • 队列


  • 二叉树

  • B Tree/B+ Tree

  • 红黑树

  • 哈希

3、排序

  • 内部排序

  • 插入排序

  • 直接插入排序

  • 希尔排序

  • 选择排序

  • 简单选择排序

  • 堆排序

  • 交换排序

  • 冒泡排序

  • 快速排序

  • 归并排序

  • 基数排序

  • 桶排序

  • 外部排序

4、分布式系统

  • 从集中到分布式

  • 分布式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

由于字数限制,未能完整列举,若需要程序员进阶架构师的完整学习资料,将关键词【架构】私信给优知学院,即可秒收,已有超过3万+程序员成功领取啦~。

都划到这儿了,点个赞呗~

都划到这儿了,点个赞呗~

2

架构师从程序员中来,但不是每个程序员都能成为架构师,要想成为架构师,不仅要有一定的基础代码能力,也要对业务有所了解,更重要的是从思维的广度和高度进行提升。

1.基础能力

基础能力是一个程序员必备的能力,如基础代码开发、XML/JSON操作、数据库、常用框架、工具等,深入一些的还有算法、设计模式、高并发、线程等内容。如果要成为架构师,这些内容是必须要了解和掌握的,所以在平时要多分析源码分析底层的架构和算法,不断积累自己的基础能力。

2.业务能力

架构都是为系统服务的,为系统服务就是为实际业务服务的,所以对于一个合格的架构师,一定要了解业务,可以根据不同业务设计出最优化的技术方案来满足实际的业务场景,并且能充分考虑到高并发、稳定性和安全性等性能要求。这就要求我们在平时工作的过程中,注意了解业务、积累经验,将实际业务与产品开发相融合,提升业务能力。

3.思维能力

成为一名架构师,不仅是一名优秀的程序员,更要在思维的高度上超过程序员,加强思维的广度,能从分析、设计、开发、使用等多种角色的角度去看待项目和设计架构,同时要具备思维的严谨性和开放性,把握细节的同时也要接纳更多的技术方案,能够协调好各种方案的处理方式和使用范围,实现最优化的设计。

数通畅联专注于企业IT架构、SOA综合集成、数据治理分析领域,感谢您的阅读与关注。

3

个人认为,有的时候不用太相信和在意这些头衔,什么XX总、技术负责人、首席架构师...头衔一个比一个唬人;

我也见过不少PPT架构师,PPT写的非常漂亮,各种架构规划的非常高大上,但是一问到具体实现,又变得支支吾吾起来,嘴里永远是一些大话、套话、虚话。

宰相必起于州郡,猛将必发于卒伍,在我看来,架构师一定是要技术出身。

架构师的工作职责

有些人认为架构师的工作只有架构设计,其余的工作让项目经理和开发人员做就可以了,我认为这种说法是有问题的;在我看来,架构师的工作是要贯穿于整个项目的。

  • 了解和把控需求:我认为架构师从需求阶段就要介入,保证自己可以完整的理解和把握客户需求;任何架构和代码都是服务于需求的;

  • 架构设计和技术选型:如果是一个新的项目,架构师需要对项目进行分解和抽象,最终形成项目架构,并结合项目的实际情况(程序员的开发能力和技术栈),完成技术选型;如果是一个老项目,通常是比较大需求或改版,架构师需要考虑这次的需求做在什么地方,是在现有技术上就能实现,还是需要引入新的技术。

  • 制定规范、把握方向:架构师就是项目的技术权威,他应该时刻与开发人员进行沟通,让开发人员理解架构意图,实现业务功能;有一些技术难点,都需要架构师冲在前面解决;甚至当项目遇到一个“坑”时,架构师是要“真刀真枪”的写代码、“填坑”的。

想要成为架构师,需要培养哪些能力

知道了架构师的工作职责,那么也就不难了解需要培养哪些方面的知识和技能,才能成长为架构师了。

  • 技术深度和广度:虽然有些人PPT写的好、会忽悠,也能成为“架构师”,但是我还是希望自己能成为一个有着真材实料、可以解决实际问题的架构师;所以作为架构师,技术储备一定要丰富;有些软件和框架不一定要了解的非常细致,但是也一定要知道其优缺点、试用场景、可以解决哪些问题、同时也会带来什么问题;

  • 业务知识的积累:架构和技术都是为业务服务的,脱离了业务的架构设计,都是不切实际的;所以想要成为一个架构师,一定要在业务领域有深厚的积累;

  • 抽象思维、模块化思维:这是进行系统分析和需求分解的基本素质,具备抽象思维的能力,才能把一个大的需求,分解成一个一个小的功能,但是分解后依然可以掌控全局;

  • 沟通能力:和需求人员沟通,和业务人员沟通,和领导沟通,和项目成员沟通,和周边项目组沟通...这些都是必不可少的;

  • 领导能力:推动整个项目的发展,需要架构师的领导能力,这里说的领导力和项目经理所需的领导力还不太一样,这里的领导能力,更多的是指技术能力的影响,甚至是个人魅力,也就是【可以服众】,让开发人员心里想:“这个架构这牛,跟着他我学到了很多东西”。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

4

要回答这个问题,要从架构师所具备的素质谈起,然后才能有针对性的寻找方法。

架构师的素质

架构师的素质体现在技术的广度、技术的深度、业务域知识的掌握,以及辅助的文档能力、表达能力、团队领导能力。

  • 技术的广度:一个架构师至少要掌握当前软件系统必备的技能,如下图。注意是掌握而非认知;
  • 技术的深度:对于当前软件系统必备的技能,不能仅仅停留在会用,而且能够明晰其机理,可以按需进行一定的扩展。比如:清晰地知道Spring Boot自动配置的原理,当特殊的注入需求出现时,知道该如何实现;
  • 业务域知识:一个合理的架构设计一定是基于对业务了解的基础之上的。实际上,架构设计是从业务功能需求、质量属性需求(如:并发能力要求)“推导”出来的,架构师要承担业务和技术之间的桥梁;
  • 文档能力:架构师是否应该写代码有争议,但需要写文档是明确的。所以这部分的能力是必须的;
  • 表达能力:架构师需要将自己的设计传递给团队成员、组织技术问题的解决,这些事情都需要大量的交流讨论,需要非常好的表达能力才能够胜任。
  • 团队领导能力:架构师不一定要负责团队的管理,但会是技术的第一责任人,不可避免需要承担一定的团队领导任务,同时也往往会作问题攻坚临时团队的负责人,因此必须具备一定的团队领导能力

如何从程序员到架构师

从程序员到架构师的成长过程,实际上就是上述六大能力的补齐过程。

  • 提升技术广度:要有进行技术领域拓展的意识。最有效的方法是,从当前所承担的项目入手,去全面了解系统所使用的技术。这种方法的好处在于:与自己当前的工作有关联、有代码可看、有人可问,同时也会不断提升自己在团队内的被认可度(TA啥都知道…)、容易获得更多的机会(原架构师突然离职了…);
  • 加强技术深度:要有知其然也要知其所以然的意识。 在探究一项技术时,循着先认知、再动手实践、再往深研究的方法,至少保证透彻了解其内在机理。
  • 丰富业务域知识:要有重视学习业务域知识的意识。方法有二,一个是硬补。比如进入到证券交易系统的研发领域,那么就安排一些时间去学习证券相关的业务只是;另外一个方法用一句话来概括:可以换公司、但不要换行业,这样可以不断积累业务域知识,成为团队内的“业务专家”;
  • 提升文档能力:这个没有别的办法了,多琢磨多练多写多总结;
  • 增强表达能力:不要怕说话,要主动说话、主动沟通,养成说话前先在脑子里列提纲并评判提纲的条理性和逻辑性;
  • 提高团队领导力:其实架构师具备所需的领导力很简单:平等待人、客观理性、坦诚直率、注意方式。做到这几点,再加上程序员特有的“技术崇拜”心理,很容易具备所需的领导能力。

总结

用一句话来总结吧:有决心、有意识、采取合适的方法,是程序员到架构师之道!


欢迎关注我、欢迎评论!

5

架构师是程序员的发展方向之一,所以很多程序员对架构师的工作岗位和工作内容也比较关注。目前IT行业的很多架构师都是从程序员成长起来的,可以说程序员是架构师的一个重要基础。

从程序员成长到架构师大概需要经历四个阶段,分别是初级程序员、主力程序员、核心研发级程序员、架构师。每个解决都有不同的任务,也有不同的知识储备,如果能一步一步成长到架构师,对于程序员来说不仅要有较强的工作能力,还需要有较强的学习能力。

在初级程序员阶段,主要的工作是功能模块的实现,能够辅助主力程序员完成具体的功能实现,这个阶段会锻炼程序员的基础编码能力。在初级程序员阶段,主要需要学习软件开发的流程、技术实现以及软件部署和测试方面的内容。往往初级程序员阶段的成长速度是比较快的,工作能力强的初级程序员在1到2年就会成长为团队的主力程序员。

主力程序员要独立完成功能模块的设计和实现,对软件整体结构有清晰的认知,知道模块之间的逻辑关系,能完成初级研发任务,对技术边界有一定的认知。主力程序员的发展方向有两个,一个是走项目经理,再到咨询专家的路线,另一个就是走架构师,再到技术专家的路线。如果走项目经理的路线,则需要深入了解行业知识。而对于架构师方向来说,更应该了解各种技术方案的应用场景,以及相应的性能指标,尤其是技术关键点的解决方案,工作能力强的主力程序员经过2到3年的时间会成长为团队的核心研发人员。

核心开发人员的主要工作任务往往是产品的容器部分开发,这个过程能够对软件产品有深入的学习,核心研发人员往往要跟着产品线走,大部分核心研发人员未来都会成长为架构师或技术专家。

我从事软件开发工作多年,目前也在负责移动互联开发团队和大数据团队,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。

如果有大数据方面的问题,也可以咨询我。

谢谢!

6

相信很多程序员都想成为一名架构师,一个不想成为架构师的程序员他绝对不是一个好的程序员,为什么这样说呢?不管做什么得有梦想嘛。

程序员一般分为:初级、中级、高级,每个阶段都代表着不同的技术水平,每一个架构师都是从普通的程序员过来的,当然做IT这行业也会根据你的技术水平薪资待遇也会水涨船高,一般一名架构师薪资待遇25K+甚至可能高,随着很多程序员朋友通过不断学习跟努力达到架构师的要求,下面简单来说下怎么成为一名优秀的架构师。

1.技术水平

掌握这些有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点,不断的去学习新的技术才能跟上版本的迭代。

2.管理水平

一一名优秀的架构师肯定也是一个优秀的管理者,懂得如何分配给下面的小伙伴一些工作,发现别人的优点,成本意识,风险意识,沟通协调能力,自我管理能力等等这些都非常的重要。


欢迎大家进行补充,喜欢IT方面的想成为架构师的可以关注我,可以提供给你思路跟方向。

7

程序员满大街都是!但架构师凤毛麟角!

我是一名工作七年的老程序员,也主导参与过几个互联网项目架构设计与落地,但是还不敢以架构师自居。

我理解架构师要求应对当前需求能有一个架构设计从数据存储,通信,业务交互,数据整合到数据扩展,服务扩展再到分布式微服务架构,再到服务部署各种数据集群设计,负载均衡集群设计,并且保证这种设计具有技术前瞻性,支持业务横向扩展,快速开发,对项目中的风险点能够提前预估处理,核心技术难点攻克。有丰富的分布式事务实践经验,在项目中熟练使用缓存和队列,对虚拟机实现原理理解的基础上能够进行内存调优有解决项目中各种疑难杂症的能力等等!

所以我认为很多自诩的架构师都是假的架构师!

程序员进阶

下来回到主题,如何从程序员到架构师!我一直在北京工作,七年时间从传统软件到bs再到移动互联网走过很多弯路,荒废过不少宝贵的时间。首先给大家上一张java高开的技术图谱,不说所有都得精通,但是很多领域都要求深度广度并进。

可能东西有些多看不太清楚,横屏可能好一点,架构师是在掌握了上述java技能的技术之上并结合多年项目经验能对新的项目架构的有统筹设计的高级java开发工程师。所以持续不断的完善技能永远是你前进道路上的助力!简单梳理以下知识点,重点看图:

  1. java基础,集合以及部分实现原理+JVM;

  2. 设计模式,常见设计模式以及原理;

  3. 数据库知识,主从+热备+水平分表+nosql+缓存+大数据检索;

  4. 框架知识,springmvc+springboot+springcloud架构深层次理解;

  5. 常用中间件储备,队列+日志+数据加密;

  6. 集群+微服务+服务器负载均衡+客户端负载均衡+网关处理;

  7. 分布式架构架构图;

.

.

.

.

等等。

所以重点来了,童鞋,想要成为一名合格的架构师,需要自己付出不亚于其他人的努力,不单单是完成了日常工作,工作的同时多思考多积累沉淀,平时给自己定个计划,多读读技术方面数据。上下班路上就别玩手机了,认真看书吧,足够的广度+深度+多年的经验,你就是下一个架构师!!!

(地铁碎片时间手机码字,有误请谅解)

8

架构师是一个综合性的角色,需要熟练掌握架构设计方法和开发技术,同时具备良好的组织管理能力。在很多时候,我们也把架构师归为一种技术管理者角色。技术管理者的工作包括设计行业与解决方案、推进业务结构与产品化、架构设计和技术创新、开展软件项目管理和研发过程体系建设等。

视环境的不同,架构师也会在这些工作中发挥一定的推动作用。我们把这些推动能力统称为软能力,并从向上管理、向外管理和自我管理的角度出发简要讨论架构师所应具备的软能力。


一、技术及架构能

1、可以写出比较优秀的代码,能够基于设计原则及模式掌握代码演变的方向和节奏;具备技术攻坚的能力;

2、具备高复杂度的平台/框架/业务系统技术与架构设计能力,掌握常见的架构设计方法和模式,理解大型网站所需要用到的架构和技术;

3、熟悉业务的价值、特点及对系统的要求,掌握领域建模的方法,可以对业务进行必要的抽象,并推进技术实现;

4、能够负责复杂度高,平台级产品或跨团队的产品架构,系统设计和实现。

二、业务理解能力

1、行业开发:开发熟悉自己直接负责的及上下游相关的业务,关注业务发展相关的数据并能有效的分析解读;

2、平台开发:熟悉所在业务域,并且负责核心业务目标的分解&落地;能够把纵向行业需求落地为横向产品化形态;

3、在业务及产品规划方面有自己独立的思考,能够影响业务及产品的发展方向。

三、自我学习能力

架构师的成长一方面是通过岗位升级来完成的,更重要的是能通过自主学习来掌握更多的设计知识。

四、自我管理能力

自我管理也是一种管理,而且执行起来可能比上面几个管理都要困难。作为技术管理者,最重要的工作并不是冲到一线做各种技术研发,而是要处理技术以及一些非技术相关的各项事宜。所以处理事情是自我管理中除了个人风格外的又一个重要主题。处理事情需要做到对时间的合理利用以及对事情的管理和跟踪。

架构师是一个充满挑战的职业,知识面的宽窄往往决定着一个架构师的架构能力,要阅读大量的技术书籍和实践。


总之,想要成为架构师,需要有耐心,不断学习,拓宽自己的视野,不仅仅局限于自己眼前的项目,关注开源技术,关注热门技术社区的新动向。

9

程序员是一种比较耗脑力、比较辛苦的职业。在中国,年龄比较大的程序员是很尴尬的,你去投简历,人家一看三十几岁了,可能就把你往后排,看看有没有那种小年轻、能够加班的。

程序员一定要规划好自己的发展道路,到了某一天,你是继续做开发,还是做技术管理,还是做产品,还是做架构师,或者说去送外卖,跑滴滴。这些后续的发展一定要规划好,不然到时候可能会手忙脚乱。


今天聊聊如何成为架构师。

一般互联网公司程序员的发展之路为:

  1. 初级工程师
  2. 中级工程师
  3. 高级工程师
  4. 架构师


在中国软件领域,架构师是比较稀缺的,所以架构师的薪资水平也比较高。

要达到架构师这个职位水平,需要这些能力。

技术面广:在一方向水平要高,也要了解其它技术;

需要了解业务,设计出业务的实现方案;

沟通协调能力;

其它。

10

我们都知道,架构师都是从程序员一步一步成长起来的,那么这个成长的过程中,需要做哪些努力,增长哪些知识和技能呢?

1.提升技术能力

架构师是项目团队中的技术权威,所以想要成为架构师,首先,肯定是要提升自己的技术能力,可以精通1-2个技术,但是要尽可能多的了解更多的技术,拓宽自己的技术知识广度,只有这样,才可能综合各种技术,在带领团队做项目时,选择更加适合项目的解决方案。

2.提升沟通表达能力

通常一个产品会有多个部门合作,这时架构师在其中的沟通就显得尤为重要,甚至会直接影响产品的进度与质量。架构师不仅要与开发人员沟通,也要和产品经理、团队人员甚至用户沟通,而纯技术人员往往由于专注于技术研发比较容易忽略这点,但对于架构师来讲,不仅有技术方面的要求,还要求能够横向沟通,以求打造一款完美的产品。

3.提升领导和管理的能力

架构师的存在是为了推动整个团队的技术进展,需要能够在压力下作出关键性的决策,并将其贯彻到底。那么架构师靠什么保证这种执行力?这就需要架构师具备较强的领导能力,也可以称其为影响力,因为其中不仅包括管理组织团队成员,还包括个人魅力、技术能力、知识传递等等。

以上就是我所认为的,从程序员到架构师,必须要增长的能力,大家如果有不同意见,可以在评论区讨论或者补充。