一般来说是不需要的,但是肯定是要懂的。
理想情况下,架构师需要创建一个技术愿景,通过该愿景我们可以获得可维护又可靠的产品。架构师需要协调不同的团队,共同构建一个相互依存的软件生态系统。此外,他们还需要分享高层的集成决策,传达应用程序和组件之间协同工作的方式。除此之外,他们还需要根据常见的软件问题审查并规定工具和框架,并通过向利益相关者和领导层传达最终产品的目标和愿景,将所有这些联系在一起。
所以架构师的工作听起来很伟大。你可能想知道为什么我把如此之多的工作都推给了忙忙碌碌的架构师。为了理解这一点,让我们来看看我刚描述的情况与现实生活的对比。
现实情况看起来因公司而异。事实上,有些公司确实让他们的架构师在履行其他所有职责的同时也担负了编程的任务。但是这些公司不是这篇文章的讨论对象。我想重点讨论曾经与我合作过的不参与编程工作的架构师在公司里究竟做了哪些工作。
系统架构设计师的能力有什么?
1、负责公司系统架构的设计、研发工作
必须在某一特定领域有自己深刻的理解和实践经验,比如在java领域,就应该熟悉各种开源框架,并能在开源框架上开发各种系统功能,比如系统安全,与异构系统通信协议、高并发下各种缓存、集群、分布式。架构师应该是在微观上能解决各种系统异常的人,宏观上能为公司的发展提供可匹配的架构支持(架构水平可扩展)。
2、能够制定技术规范,能够对开发人员在技术上提供指导
所以架构师必须在技术上有一定权威的人,必须是团队的技术核心人物,能够根据最佳实践制定技术规范,并要求技术人员按照规范实施。如果开发人员,尤其是新员工不能理解如何使用架构进行开发的时候,架构师应该组织对大家培训,开发相应的demo,交付大家使用,必要时,必须阐明架构为什么这么设计的缘由。试想,如果在关键的技术决策的时候,没人care你的想法,那么你真的具备架构师的能力吗。
3、组织大家完成技术攻关,对核心的技术选型有自己见解,能识别系统风险点,也能识别系统的优化点
在关键的技术难点需要攻关的时候,架构师应该冲在前头。有经验的架构师,应该在系统设计之初就应该预想到可能的技术难题,并提前做技术研究。
所以架构师必须知识面比较广,能够对不同的技术选型有自己的判断,并能对不同的技术组合做出权衡,识别各种技术选型与组合的风险,对已经运行的系统,应该持续优化,既能够凭借自己的经验识别系统的优化点,也善于运用各种工具,定量化分析系统的性能瓶颈,并组织技术小伙伴一块解决。
4、业务理解能力与一定的项目管理能力
上面说的三点,想必立志成为架构师的小伙伴都能明白。但是在技术上有追求的架构师对业务、对项目管理天生有一定的排斥感,因为这两样都必须和人打交道,跟人打交道对架构师来说效率低下(其实,很多架构师都偏内向,不喜欢也不善于和人打交道),不如敲代码那么酣畅淋漓。
所以,直觉上认为,执着于做一个架构师是不需要以上两方面的能力,把架构做到极致、把技术做到极致就够了。其实,技术是服务于业务的,你的用户只有两千人,你做个能应对两千万的人架构那只能是浪费资源。对业务的理解会有助于架构师在更高层面上去理解架构,做出的架构就比较适用,后期也能够对业务做到随需应变。
5、另外,架构师在工作中,往往会主动或者被动参与些开发管理工作,比如工作任务分配和预估项目进度,因为往往理解技术人员专长的人是架构师(或是技术经理)、架构师能把合适的技术任务分给合适的人。或者即使不是架构师来分配任务,一般项目经理也会征求架构师的意见。
比如开发了新的架构,需要给大家培训。比如系统要和其他部门系统通信、集成,需要跨部门的协作。各种各样的场景会将架构师卷入一些项目管理中,从一定职业生涯规范考虑,学习或者参与一定的项目管理,能从更宏观的层面去看一个项目的发展,而不单单将自己局限在技术上去看问题。
当然,架构师还要求有很强的自学能力、分析能力、发现问题、解决问题的能力。在互联网时代,还需要写作、沟通、培训的能力。
以上就是小编的分享,希望可以帮助到大家。