今日跟随小编一起来看看为什么架构师比普通的程序员有哪些不一样的。
一,架构师的分类
每个职位名称都不可能是凭空而来,架构师也不例外,是有着国际是有标准(ISO / IEC 42010)的。架构师是软件开发中的众多角色之一。它可以是一个人,一个小组或一个团队。 Microsoft为架构师提供了分类参考。他们将架构师分为4种类型:企业架构师(Enterprise Architect),基础架构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA(Solution Architect)。微软的分类基于架构师关注的不同领域。
企业架构师的职责是确定整个公司的技术路线和技术发展方向。盖茨给自己的头衔是首席软件架构师。网易丁磊也喜欢这样称呼自己。基础架构架构师的工作是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些的框架和组件是基于技术的公司最有价值的资产之一。特定的技术架构师TSA主要从事特殊技术的规划和设计,例如安全体系结构和存储体系结构; 解决方案架构师SA的工作是专门从事解决方案的规划和设计,“解决方案”一词在中国已经达到了很高的水平,所谓的解决方案是不断地将产品,技术或理论结合起来,以创建满足用户需求的选择。
大型公司将清楚的区分各种类型的架构师。小公司通常不是那么注重区分了。因此,大公司提供专业人员,而小公司往往是一人全职了。
经常看到另一种相对简单的分类方法,该方法将架构师分为软件架构师和系统架构师。软件架构师是程序员突破的最简单方法,并且最有可能采取这种方式,例如JAVA架构师,DotNet架构师,LAPM架构师等。系统架构师他更专注于全面使用现有产品和技术来达到客户期望。系统架构师需要有关软件和硬件的知识,因此其知识系统相对复杂。
二,架构师的职责
架构师需要参与项目开发的整个过程,包括需求分析,体系结构设计,系统实施,集成,测试和部署。他们负责在整个项目中指导和协调技术活动和技术规范。
架构师有4个主要职责:
1.确认需求
在项目开发过程中,架构师会在需求规范完成后参与其中,并且需求规范必须得到架构师的批准。架构师需要与分析人员反复沟通,以确保他们完全准确地了解用户需求。
2.系统分解
根据用户需求,架构师将系统整体分解为较小的子系统和组件,以形成不同的逻辑层或服务。随后,架构师将确定每个层的界面以及层之间的关系。架构师不仅必须对整个系统进行分层并垂直分解,而且还必须将同一逻辑层划分为多个块并进行细分。
软件架构师的技能基本上体现在这方面,这是一项相对复杂的任务。
3.技术选择
架构师通过对系统的一系列分解,最终形成了整体软件体系结构。技术的选择主要取决于软件体系结构。
Web服务器可以在Windows或Linux上运行吗?数据库使用Oracle还是Mysql?您是否需要轻量级框架,例如MVC或Spring?前端采用富客户端还是瘦客户端方法?在此阶段需要提出和评估类似的工作。
架构师对产品和技术的选择仅限于评估,没有决策权。最终的决策权属于项目经理。架构师提出的技术计划为项目经理提供了重要的参考信息。项目经理将权衡项目预算,人力资源和时间表的实际情况,最后进行确认。
4.制定技术规范
架构师是项目开发过程中的技术权威。他需要协调所有开发人员,保持与开发人员的沟通,并始终确保开发人员根据其架构意图实现各种功能。
架构师与开发人员之间最重要的交流方式是技术规范,技术规范可以是UML视图,Word文档,Visio文件和其他表现形式。架构师提供的技术规范可确保开发人员可以从不同角度观察和理解他们承担的子系统或模块。
架构师不仅必须与开发人员保持沟通,而且还必须与项目经理,需求分析师甚至最终用户保持联系。因此,对于建筑师来说,不仅有技术要求,而且还有人际交流的要求。
三,架构师的误解
1.架构师是项目经理
架构师不是项目经理。项目经理专注于预算控制,时间表控制,人员管理以及外部联系与协调,并具有管理职责。在一般的小型项目中,项目经理和架构师为同一个人也是很常见的。
2.架构师负责需求分析
架构师不是需求分析师。需求分析师的工作是收集和分析需求,并与最终用户和产品经理保持联系。架构师仅审查并确认最终需求,并提出不清楚和不完整的需求。他将始终与需求分析师保持联系。架构师是技术专家,而不是业务专家。
3.架构师从不编写代码
这是一个仍有争议的问题。当前有两种观点:
观点1:架构师不编写代码。编写代码纯粹是手工工作。架构师将UML的各种视图提供给开发人员,如果不清楚,他可以随时与架构师进行交流。
观点2:架构师最初来自程序员,但他们的水平比程序员高。唯一比程序员更重要的是经验和知识,因此架构师无法避免编写代码。
我个人认为这两个陈述与架构师的来历和环境有关。
架构师首先是技术角色,所以他们必须来自技术人员。例如,系统架构师主要来自运营和维护人员。也许他们编写的代码不多或编写的代码不优美。软件设计师大多是程序员,他们具有程序员的血统和感情,因此在项目开发过程中,他们可能会编写一些核心代码。我们的理想是架构师不需要编写代码,但实际上有时太理想化了。架构师是否编写代码可能取决于公司规模,文化和开发人员素质的实际情况。此外,架构师与程序员的区别并不明显。根据能力,也有高,中,低点。是否编写代码不是区分两者的基本标准。
四,架构师的基本素质
一个好的演员不仅需要才能,还需要一定的理论指导。架构师的成长过程是相同的。从普通程序员到高级程序员再到架构师,这都是经验积累和思想升华的过程。经验积累是一方面,而质量培训则是另一方面。两者相辅相成,因此我认为有必要列出架构师所需的素质,以此作为程序员工作的方向。
沟通能力
为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通技巧。沟通技巧是人类最普遍性的素质要求,技术人员好像容易忽略,想成为架构师就不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间久了总会被人发现的。凡事都要看到积极的一面,“沟通”的确是一种能力。我认为自己是一个略内向的人,因为我是农村出来的孩子,普通话都说不好,以前或多或少带有点自卑感,幻想着是金子总会发光,所以在职业生涯中吃了不少亏。现在,我深深懂得了沟通的重要性,我会很主动地跟同事们,跟老大们不定时地沟通,感觉工作起来顺畅多了。
我认为这是最重要的,因此排名第一。我甚至认为以下几点可以忽略不计,只有这一个必须牢记,并时刻提醒自己。
领导能力
架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。架构师如何来保证这种执行力?这就需要架构师具有领导力。
架构师的领导能力的取得跟项目经理不太一样。项目经理主要负责解决行政管理,这种能力与技术关系不大,他有人权和财权,再扯上一张“领导”的虎皮,基本上可以保证执行力。架构师在项目里面可能更多地使用的是影响力,里面包括个人魅力、技术能力、知识传递等等。
抽象思维和分析能力
架构师必须具有抽象思维和分析能力。这是您进行系统分析和系统分解的基本素质。只有具备此能力,架构师才能看到整个系统并控制总体情况。这也是建筑师总体观点的基础。你怎么有这种能力?一个来自经验,另一个来自学习。架构师不仅需要在问题领域具有经验,而且还需要在软件工程领域具有经验。换句话说,架构师必须能够准确地理解需求,然后使用软件工程的思想将需求转换和分解为可以用计算机语言实现的程度。经验的积累需要一个时间过程,没有人可以在这个过程中为您提供帮助,您需要经历这一过程。
技术深度和广度
架构师最好精通1-2种技术。借助这种技术能力,您可以更深入地了解体系结构的工作原理,还可以缩短与开发人员的距离并在团队中形成影响。
架构师的技术知识的广度也很重要。您需要了解尽可能多的技术。所谓的“知识渊博”是集成各种技术并选择更适合该项目的解决方案的唯一方法。有人说,架构师技术广度的要求高于技术深度的要求,这是很合理的。
总结:架构师是项目团队的技术权威。愿不断拼搏的程序员们加油,努力奔向架构师的彼岸。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.