架构师是做什么的?

架构师是做什么的?_第1张图片
哈佛大学有一个非常著名的关于目标对人生影响的跟踪调查。调查的对象是一群智力、学历、环境等条件都差不多的大学毕业生。结果是这样的:
第一类人:27%的人,没有目标;
第二类人:60%的人,目标模糊;
第三类人:10%的人,有清晰但比较短期的目标;
第四类人:3%的人,有清晰而长远的目标。
以后的25年,他们开始了自己的职业生涯。
25年后,又对这些调查对象跟踪调查,他们的职业和生活状况发生了很大的变化:
第四类人:3%的有清晰且长远人生规划的人,25年来几乎都不曾更改过自己的人生目标,并且为实现目标做着不懈的努力。25年后,他们几乎都成了社会各界顶尖的成功人士,他们中不乏白手创业者、行业领袖、社会精英。
第三类人:10%的有清晰短期人生规划者,大都生活在社会的中上层。他们的共同特征是:那些短期人生规划不断得以实现,生活水平稳步上升,成为各行各业不可或缺的专业人士,如医生、律师、工程师、高级主管等。
第二类人在另外的60%中人生规划模糊的人,几乎都生活在社会的中下层面,能安稳地工作与生活,但都没有什么特别的成绩。
第一类人:是那些没有目标和规划的人,几乎都生活在社会的最底层,生活状况很不如意,经常处于失业状态。
调查者因此得出结论:目标对人生有巨大的导向性作用。成功,在一开始仅仅是一种选择,你选择什么样的人生规划,就会有什么样的人生。

作为软件开发人员,也应该明确自己的职业方向,先来看一张职业规划图:
架构师是做什么的?_第2张图片

对于大多数开发人员,理想的职位都是软件架构师,觉得这是一个很体面而又很酷的工作。但是大多数人对软件架构师的职责没有一个清晰的认识,包括我自己。今天我就抛砖引玉,简单描述一下软件架构师是做什么的。

java知识平台已经开通原创保护功能,这跟小伙伴们的支持是分不开的,bert君在这里谢谢大家了。大家可以在文章底部留言,表达一下自己对架构师的看法。

架构一词大概是源于建筑学,也常指建筑物在其尺度上是如何依靠内部的支撑物相互结合而稳固构造的方式。而架构师则是为满足某种架构设计目标而进行在较大尺度上进行整体构思的角色。

在软件工程和企业信息系统领域,又有很多细分,如所谓的系统架构师、应用架构师、企业架构师等等。

一般来说,应用架构师负责构建一个以解决特定问题为目标的软件应用的内部结合结构,一般以满足各种功能性需求以及维护性需求为设计考虑目标;系统架构师则提供运营支撑软件应用的信息系统的结构设计,一般以满足各种非功能性需求或运营性需求为设计目标(如安全性、可伸缩性、可互操作性等等);企业架构师,就不光只顾IT系统的架构了,他应以企业的持续经营目标为考虑要素来构建企业所需要的内在结构设计。

架构师是做什么的?_第3张图片

那么软件架构师是做什么的?bert君认为:

架构师首先必须要了解需求和业务,架构师必须接地气。

不了解需求的架构师,就去设计架构,指挥大家干活,纯粹是耍流氓。架构虽然不是产品经理,但是产品最终都是服务客户的。如果架构师只懂技术,不考虑需求,做出的系统可能是高大上,但是用户不一定买账,那就是一个失败的产品了。

其次,架构师需要定义架构。

搞清楚需求后,下一步就是思考,如何解决这些需求并定义它的架构。架构定义过程让你想清楚你打算怎么在兼顾需求和限制的情况下把问题解决好。架构定义是将结构,方针,原则和领导力引入软件项目的技术层面。

第三,架构师还需要进行技术选型,选择哪种技术来支持业务的实现。

这里注意的是,不一定要选择那些潮流技术,选择什么技术,要看自己的场景。有时候,选择一些最原始的技术,没准更适合自己的业务场景。技术选型是很重要的,选择正确的技术,就能事半功倍。如果选择不好,那么就会欠技术债务,不仅影响产品的开发周期,还会影响产品的稳定性。

第四,架构师需要进行架构协作。

这里的架构协作,不仅仅指技术方面了。一个好的产品,牵涉到很多人即“项目干系人”,要想让一个软件项目成功,需要所有的系统干系人紧密协作来保证架构和所在的环境很好的集成。

第五,架构师还可以参与一些设计,开发,测试的工作。

还是那句话,架构师要接地气。真正去使用自己的产品,不仅能对产品进度很好地把握,还能在使用中发现产品架构存在的问题,及时修补和调整。另外,这样做的另外一个好处,就是架构师能够真正融入团队,并不是高高在上的。这不仅不会削弱你的权威,相反,能够让下属更尊重你,这也是领导力养成的一个重要途径。

最后,bert君在招聘网站摘录了一些对架构师的要求,供大家参考,希望有这个目标的小伙伴,不断努力,早日实现。

  1. 熟悉分布式、高性能架构和开发技术,如分布式应用开发、数据分布式管理和同步等;

  2. 精通J2EE系统架构,深刻理解J2EE架构的优缺点,具有大型基于J2EE体系结构的项目规划、系统架构设计、开发经验,精通j2ee设计模式;

  3. 深刻理解软件系统架构,精通面向对象分析设计方法,逻辑能力佳,具有丰富的OOA、OOD、OOP、UML及SOA经验,精通RationalRose、PowerDesigner等设计工具;

  4. 技术视野广阔,具有良好的前瞻性,思路清晰、逻辑性强,对移动支付和互联网支付的相关技术具有优秀的领悟力和前瞻性,有较强的业务分析能力;

  5. 良好的沟通能力、团队合作精神和服务意识;认真负责、具有高度责任感和敬业精神;

  6. 对于性能瓶颈可以给出最优的切片,集群和分布式服务器搭建解决方案

  7. 理解面向对象分析和设计的基本原则,熟悉常用的设计模式,熟悉UML;

  8. 熟悉Java的多线程,线程与线程,进程与进程的通信机制;

  9. 精通系统优化,对系统优化原理有深入的理解。对系统端到端性能优化有丰富的实践经验,熟悉各种远程本地Cache组件(尤其是Memcached,Redis),对Cache服务器集群架构有丰富的经验;

你可能感兴趣的:(IT工作杂谈)