03.06 java架构师主要是干什么的,要注意什么?

用户8528787028267


Java架构师当然是专注于Java开发架构设计的工程师。这里包含两层意思:

1、Java架构师限定了工程师的专业范围,专注于Java开发;

2、Java架构师明确了工作职责,主要从事Java架构设计。

如果往深一层探讨,则需要明白,什么是Java开发,Java架构师的主要职责是什么?

什么是Java

Java是一种程序设计语言以及该语言运行平台的总称。是1995年在印度一个生产咖啡的岛——爪哇岛上被JamesGosling等几位工程师编写的,因此命名为Java。Java可以编写跨平台应用软件以及面向对象的程序设计语言等。Java语言是目前比较主流的服务器端编程语言,其主要有面向对象、语法简单、平台无关性、支持多线程、安全性高等特点,因此,在复杂的业务服务对象编程中,大多选择Java语言为开发语言。

通过Java开发的程序,需要通过Java虚拟机(JVM)和Java API(一套独立于操作系统的应用程序标准接口)编译运行,Java程序的运行机制如下图:

因此,Java架构设计师就需要深刻理解Java程序语法规则、编译过程,才可能设计出性能优异的Java程序。


Java架构师的主要职责

一般Java架构设计师主要完成以下工作:

  1. 负责系统及相关产品架构设计(核心工作),对于部分没有产品经理、项目经理、或者需求分析师的企业,Java架构设计师一般还兼具系统需求分析的职责;

  2. 根据架构设计,做好Java开发整体开发计划及开发工作量评估;

  3. 对java开发工作在架构设计基础上开展技术指导;

  4. Java架构师还需要负责团队Java开发人才培养,对Java开发人员进行专题培训;

  5. 评估Java开发的过程风险,尤其是技术风险,对部分前沿技术进行攻关,保证开发质量;

从以上职责可以看出,Java架构师需要具有相当强的Java技术实战和攻关能力,在此基础上,具有进度控制、需求分析、培训讲解、风险把控等能力。因此,一般Java架构师至少工作满5年以上,独立作为开发骨干承担过项目开发工作,同时,技术视野宽广,具有很强的沟通协调能力。


作为Java架构师,需要注意的事项包括:

1、良好的文档化能力

任何想法如果只是口头沟通,不能形成书面文字,知识传递效果将大打折扣!Java架构师更需要将系统架构设计通过文档的方式图文并茂的展示出来;


2、Java架构师需要具有广度的前沿知识体系

只要是涉及到系统开发的技术体系(不局限于java),Java架构师都应该去了解(但不一定需要精通),同时需要捋清楚前沿知识的可用性、可靠性,并分析哪些新技术可以应用到架构设计中;


3、需要注意沟通协调

沟通能力和协调能力是架构师必备的主要能力之一,将架构设计形成文档之后,设计人员和开发人员对架构设计的理解是不尽相同的,需要架构师在项目开发过程中不断的修正,并做好沟通协调,才能达到架构设计的初衷。


4、设计系统架构既要从技术出发,还要兼顾项目本身的特点

在设计架构师,需要考虑到采用新技术、新方法、新架构,但全新的技术带来的是稳定性风险,同时新技术上手时间较长,投入资金比较大,时间要求也会拉长,因此,需要“通盘考虑”,最先进的不一定是最适合的!最合适的才是最好的!


IT骆驼


一、什么是架构师?

1、从内心讲我真的不想回答架构具体需要做什么,架构师应该具体负责什么。因为从实际情况看,在不同的系统层级,不同的需求下架构师的职责也会不同;从不同的技术角度看,架构师又是个变色龙——一时是技术的大拿,一时是技术的规划者,一时是技术团队的指挥者。

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

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

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

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

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

二、架构师的定义?

个人觉得架构师需要具有以下几特点:

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

2.抽象能力:对业务和技术进行抽象。业务抽象就是对需求进行分析后,能够建立完美的实体类以及他们之间的联系。技术抽象是对整体架构进行一个分层,各层之间的交互。这至关重要,如果技术抽象能力不足,这会导致整个系统的架构不灵活,难以维护和扩展。

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

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

三、那么你该如何去做?

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

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

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

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

5:对自己所处的业务能够根据自己的知识维度,提出优化建议或者预测其风险点。

四、该掌握哪些技术呢?

微服务架构

开源框架源码解析

高性能架构技术

设计模式

作者:慕容千语链接:https://www.jianshu.com/p/7bdf1f86fde0来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

物万生三


想成为java架构师,首先你自身得是一个高级java攻城狮,会使用各种框架并且很熟练,且知晓框架实现的原理。

比如,你要知道,jvm虚拟机原理、调优;懂得jvm能让你写出的代码性能更优化;还有池技术:什么对象池、连接池、线程池等等。

还有java反射技术,虽然是写框架必备的技术,但有严重的性能问题,替代方案java字节码技术,nio 这说不说无所谓,需要注意的是"直接内存"的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,甚至许多五年以上经验的人都弄不清楚!

还有很多,比如,为什扩容时有性能问题?不弄清楚这些原理,不知道问题根本,你就就写不出高效的代码!还会很傻很天真的认为自己是对的,殊不知是孤芳自赏,自命不凡而已;总而验资,言而总之,越基础的东西越重要!许多工作了很多年的程序猿认为自己会用它们写代码了,其实仅仅是知其实仅仅是知道如何调用api而已,知其然不知其所以然,离会用还差的远。

关于技能的提升给一些建议

1.提升自己的英语水平,此重要性是不言而喻的,现在很多的新技术中文档少之又少,作为一名架构师总不能去看翻译文吧。

2.多看一些沟通方面的数据,流畅的沟通利用你成为一名成功的架构师。

3.有机会参加PMP考试并取得证书,拥有项目管理方向的优势就是你作为一名架构师的优势。架构师其实从某种意义上就是一种角色,而不是一种职位。一定要时时刻刻保持空杯心态。一定要有一颗保持饥渴学习和耐得住寂寞的赤子之心。

4.我们知道当前的技术节奏非常的快,一定要好好的利用自己的碎片时间去学习,去了解新技术,千万不要让自己技术落伍。

5.多锻炼自己在大众环境下的演讲和PTT的能力。

6.与不同的技术、编程语言、设计模式和结构等(甚至是它并没有在日常中给予你直接的帮助)打交道。你永远都不知道这些知识是否会在未来派上用场,但是对你绝对是有益无害。

7.有机会多做知识分享,因为你一旦分享了知识,你就会对这门技术有深刻的印象,同时也

能树立在同事中的良好的技术形象,从而赢得更多的专家影响力而不是职位影响力。


正道人间


1、负责公司系统的软件架构设计、业务建模等相关工作,以及与技术支持部门合作设计系统软硬件架构;

2、协助业务部门制定项目计划和控制项目进度;

3、组织团队人员的培训、技术指导以及技术难点突破工作;

4、负责团队技术选型、技术之间的差别以及技术的发展趋势分析、采用该技术的成本分析、技术与具体应用的偶合程度分析、研发过程风险分析以及如何回避风险;

5、小组成员开发工作管理,包括工作计划的制定、执行和跟踪;

6、协调小组成员的工作,使得组内成员高效的协同工作;

7、进行模块设计,包括模块概要&详细设计、模块数据库设计;


8、 模块的开发框架搭建、接口设计;

9、 负责工程中主要功能的代码实现;

10、 解决模块编码过程中的遇到的关键细节问题;


休闲挨踢男


大公司主要是做一个项目的技术方案设计,疑难问题攻坚或者核心代码的实现。

小公司是胡子眉毛一把抓,什么都要做,什么都要管。


架构师笔记


除了解决项目痛点难点主要还是能围绕高内聚低耦合设计原则设计项目架构,让架构有更好的维护性,拓展性。


斜杠程序员


主要负责公司系统在技术方面或者业务方面的架构,说白了就是指导江上的[大笑]


分享到:


相關文章: