如何成为一个Java高薪架构师?

从心里讲我真的不想回答架构具体须要作什么,架构师应该具体负责什么。由于从实际状况看,在不一样的系统层级,不一样的需求下架构师的职责也会不一样;从不一样的技术角度看,架构师又是个变色龙——一时是技术的大拿,一时是技术的规划者,一时是技术团队的指挥者。java

那么,该如何回答“什么是架构,什么是架构师”这个问题呢?这或许须要先搞清楚另一个问题——一名程序员是如何走上架构师之路的?我从许多朋友那里了解到了不少实际案例,程序员走上架构师之路,总结起来最多的缘由是由于他早前代码写的好。程序员

那么,代码写的好就是架构吗?显然不是。代码写的好只是表象,作全部事情都须要规划,尤为是一个复杂的软件系统,这更须要规划,不然可能连一行代码都写不出。复杂的软件系统必定会须要作不少抽象设计、对象规划、接口规划等准备动做。也就是“上一辈程序员”口中所说的:详细设计。作架构主要的事情也依旧如此,须要对整个系统进行系统的规划:模块、通信、边界、扩展、技术下沉等工做。这样的规划完成以后项目方能正常跑起来。web

固然,架构也不只仅是规划,还要作的另外一件大事就是技术识别。识别出系统中技术的难易区域,并分解复杂技术,使之成为一个个技术的黑盒子,在此之上再进行新的技术规划,使整个系统从技术角度来看是分层次的,从难到易,从大到小,但各层之间又是互相的黑盒。这也常说的让系统模块间达到“鸡犬相闻老死不相往来“的状态。spring

一个架构师须要足够的技术的宽度。从软件到硬件,从开发到测试,从运维到安全等都须要面面俱到的了解。固然你可能不是这单方面领域里面最深刻的人,可是你须要知道它们是怎么作的(不只仅是皮毛,要深刻原理),而且要知道它们组合起来是个什么样的东西。技术面也足够宽了以后,是否是就会成为完美架构师呢?安全

答案是不会,由于还有新的问题要过来。此次的问题诸如“系统在将来的运行过程当中运维须要作什么?”“系统在将来的功能迭代中如何更方便的扩展?”“系统应该怎么修改?”“系统应该被怎么样升级?”这时的你是不时很困惑?是否是感受这个架构的世界好长啊,怎么像保姆同样什么都要管。但仔细想一想这是应该的,由于一个系统初次开发并交付只是它生命周期中的一小部分而已。后面的维护、改造、升级才占了整个软件生命周期的绝大部分时间。你是它的架构设计者,是它灵魂之所在,你固然应该设计好它的将来。这也是架构师作好的最后一件事情:系统将来的设计。mybatis

架构师的定义?架构

我的以为架构师须要具备如下几特色:并发

知识广度:须要知道主流技术为何诞生,能解决什么问题?若是同一种业务用不用的技术来实现,会有什么哪些优缺点?好比:流行的ORM框架Mybatis 和 hibernate ,他们之间的优缺点是什么?要有清晰的认识会能在技术造型时作出正确的决定。mvc

抽象能力:对业务和技术进行抽象。业务抽象就是对需求进行分析后,可以创建完美的实体类以及他们之间的联系。技术抽象是对总体架构进行一个分层,各层之间的交互。这相当重要,若是技术抽象能力不足,这会致使整个系统的架构不灵活,难以维护和扩展。框架

知识的深度:至少是某个领域的专家,好比消息队列,activeMQ熟悉其源码,知道其实现。

优秀的学习能力:对新的技术和前沿性的技术进行学习,使用它来解决工做中的业务问题。

那么你该如何去作呢?我以为能够从如下几个步骤开始:

1: 扎实的JAVA 基础,Think in java上介绍的内容都能理解,作到这一步恭喜成为了程序员。

2:熟练使用主流框架,如:mybatis,spring 等。

3:研究过至少一种以web框架的源码,如spring mvc ,struts 等。

4:架构过或者参与太高并发系统设计,知道如何应对突发状况。

5:对本身所处的业务可以根据本身的知识维度,提出优化建议或者预测其风险点。

以上是我想分享给你们的,也许说的不够好,不够全面,可是但愿对大家有所帮助。

哦对了,喜欢就别忘了关注一下哦~

相关文章
相关标签/搜索