关键词:
目录
前言:
软件架构师也是魔法师。
一、业务能力(业务领域)-- 面向业务
“业务”更白话一些来说,就是各行业中需要处理的事务。“业务”最终的目的是“为客户创作价值、产品、服务,换取利润”。不同的行业,不用的岗位,对业务能力的内涵是不同的。
业务能力的特点是:面向客户。
1.1 业务场景
熟悉各种业务应用场景的能力(客户、需求)-- 面向客户
所有的项目都有它特定的业务场景,用于帮助他们的客户解决问题。
不同的业务场景本质就是客户的需求。所有的技术方案,都必须是为客户的业务需求服务的。
再好的技术方案,如果脱离了客户的需求,也是空中楼阁,南辕北辙,容易犯纸上谈兵的错误。
再好的技术方案,如果不能帮助客户解决问题、为客户创作价值、为公司获取利润,这样的技术方案也得不到支持的。
1.2 业务技能
熟悉业务领域的专业性知识和技术(行业标准、行业技能)-- 面向行业
比如:蜂窝移动通信,需要熟悉3GPP的协议规范,包括架构、RF/L1/L2/L3协议规范。
比如:有线通信,需要熟悉计算机网络通信协议等 。
比如:互联网电商,需要熟悉电子商务,熟悉网络销售流程等业务。
比如:医疗健康行业,需要熟悉医疗行业的业务知识。
360行,每个行业都有自己独特的业务领域的专业知识和技术要求。
不同的业务领域,业务领域的知识相差非常大。
不同的业务领域,业务领域专业性知识和技能的要求的难度是不相同的。
比如移动通信行业的业务领域的技术门槛就非常高,而电子商务或物联网的业务领域的技术门槛相对较低。
二、沟通能力(管理领域) -- 面向“人”
最终的技术实现,都是要靠人完成的,沟通能力,虽然不是技术能力,但也非常重要。
架构师需要与不同角色的人打交道。
作为一个优秀的架构师,你需要清楚的知道客户的需求,需要不断和需求人员进行沟通,以达到说服客户真正的目的。
作为一个优秀的架构师,你需要与项目中的不同团队、不同人进行各种沟通,以推行你的架构设计和架构的主张。
作为一个优秀的架构师,你需要在不同团队之间存在技术争议和模棱两可的时候,进行技术实现上的平衡和仲裁。
作为一个优秀的架构师,你需要有能力与组织的决策者沟通,给决策者提供技术的演进和发展方向的信息,有时候甚至说服决策者采用和推进某种技术方案。
其实,不仅仅是架构师,只要需要与人打交道,都需要提高自己的沟通和表达能力。
有一个普遍而有意思的现象,做领导的大多不是技术特别牛的,但沟通能力肯定是最好的,这体现出沟通能力及其重要的作用。
三、技术能力(计算机领域) -- 面向计算机
技术能力,这是最重要的能力。
科学与技术常常放在一起,科学解决理论问题,技术解决实际问题。
销售需要熟悉人性、管理者需要熟悉管理的软技能、架构师需要熟悉各种主流IT技术的原理,这是架构师的立身之本。
所谓技术能力,包括:
3.1 硬件技能
- 计算机原理
- 嵌入式系统
- 原理图、PCB
- FPGA与Verilog
3.2 软件技能
- 数据结构(软件工程师)
- 算法(软件工程师)
- 计算机编程(软件工程师)
- 操作系统
- 中间件技术
- 大数据、云计算技术
- 虚拟化
- 人工智能技术
- 网络安全
- 各种工具
3.3 自身快速解决问题的能力
架构师需要有能力采用系统的、结构化的方法以及利用自身丰富的经验,从各种纷繁复杂的问题的表面现象中,进行系统、有序的梳理,逐渐排除干扰因素,快速的进行问题的收敛和定位。
架构师的优势在于在现象之外,看到问题背后的本质,架构师的优势在于"系统性”和“全局性”。
3.4 预见技术难点和技术风险的能力
架构师要能够预见技术方案未来的可能会遇到的各种难点、风险,包括技术的和因技术导致的非技术的风险,并提出预见性的预防措施。
这是一个容易被忽略的能力,但这个能力对于推动项目的顺利进展,避免项目遇到各种幺蛾子事件起到了至关重要的作用。
未来的不确定性是任何领域都面临的共同难题,架构师此处的价值在于,把技术带来的不确定性展现出来,协作管理者把不确定性的影响控制在可接受的范围以内。
一个优秀的架构师:
在广度上,不断拓展自己的知识面。
在深度上,深耕和深挖关键的、核心的技术领域。
架构师不能长期性的陷入到项目中重复性的琐碎事情之中,它将会使架构师逐渐失去对技术系统全局性的把控能力,对技术的长期演进的预见能力。
四、架构能力(架构领域) -- 面向系统
架构能力主要表现为:
4.1 熟悉主流的架构的能力:
主流的架构是经过行业内各方力量总结、汇总、甚至验证过的成功的经验总结。
熟悉各种主流架构的特点、缺点、优点、应用场景,可以避免架构师闭门造车,利用或选型好主流的架构,可以避免项目承担不必要的风险、可以极大的加速项目的进展。
4.2 抽象的能力:
架构师对系统组件的分解大都在抽象层面,可以适用于不同编程语言的具体实现。
只有高度的抽象,才能抓住现象背后的本质,才能具备广泛的适应性和扩展性。这是架构师与程序员一个重要的区别。
程序员重在通过具体的编程语言实现具体的目标,是可工作的软件,重在实现,因此有时候看起来是“有形”和“实在”。
架构师重在组件的抽象性和适应性,是纸面上的设计,重在“质”和“核”,因此有时候看起来是“无形”或“虚”。
4.3 设计的能力:
架构师拿到的是需要和目标,架构师需要有能力把需求和目标,转换成内部的设计。
设计相对于实现而言的,设计本质上是一种技术的规划。设计是把一种设想,通过合理和周密的技术规划,通过各种方式表达出来的过程。
这个规划能力与项目管理的计划是类似的,
项目管理规划的对象是:人、时间、金钱等现实资源;
架构师规划的对象是:CPU的计算、内存、软件的组件等计算机资源。
4.4 整体规划的能力:
架构师是站在系统的视角审视整个系统内的组件以及之间的关系,甚至要跳出系统,站在系统外,审视系统整体表现出来的外部行为。
这是与程序员另一个重要的区别。
程序员是“局部优先”为基本原则,确保负责的模块,功能和性能都达到最优。
架构师是“整体最优”为基本原则,确保系统在整体性能和效率最优,有时候会牺牲一部分”局部最优”来换取“整体最优”。
比如: Y=A*B,
方案1:A=9,A是最优的,但B=1;整体效果Y=9*1=9;
方案2:A=5, A不是最优的,B=5,也不是最优的; 整体效果Y=5*5=25,方案2性能远远大于方案1;
4.5 拆分和还原的能力:
一般情况下,大型的目标软硬件系统都是比较复杂的,是经过无数前人的劳动,才造就了当下的目标系统。
架构师需要在此基础上,添砖加瓦。但如果不熟悉现有系统,架构师很可能添错了砖,加错了瓦,使得系统漏洞百出。
因此架构师需要首先熟悉现有系统的架构。架构师要有能力把现有的系统进行拆解,拆解成简单的组件、理解组件的关系、组件之间的工作流程和工作原理,最后,再还原成整体架构,从系统外看系统的整体行为。
客户的新的需求或目标是糊的,复杂的,架构师需要对客户的需求和目标,进行拆分/解,把复杂变成简单、把模糊变成具体,然后再把这些拆解后的、具体的功能需求,按放到现有系统的各个组件上。
4.6 拆分与重构的能力
这是容易被忽略的能力,相当多的架构师,是在现有系统上做一些添砖加瓦和增补的工作,因此这方面的能力大多情况下无法体现。
一个架构师,如果有幸参到一个从无到有,有小变大,由简单到复杂演进的系统中,那他是幸运的,这时候拆分与重构的能力就尤为重要。
一个复杂系统的形成,中间会经历很多次的演进和重构,重构的能力是上述多种能力的综合:需要熟悉业务系统,需要熟悉现有系统的架构,还需要熟悉重构后的系统架构等等。
如果说“拆分与还原”的能力是“改良”的话,“拆分与重构”就是“革新”,甚至是“革命”。在一个旧系统之上,重构一个具有旺盛生命力的新系统,对于重构者的能力的要求是相当高的。除了技术上的难度外,还会受到原先系统内力量的阻力、抗拒、质疑,也会受到新系统架构不确定性带来系统外阻力、抗拒、质疑。
架构师之路系列文章
目录文章目录目录企业数字化转型架构师之路业务架构应用架构API经济数据库设计设计模式系统架构分布式系统RPC远程调用分布式消息队列分布式任务队列微服务架构ServiceComb部署架构高可靠、高可用、高并发、高性能、高可扩... 查看详情
架构师成长之路--什么是架构师(代码片段)
...想每个人都有自己对这三个问题的认知。如果我们要成为架构师,我们自己要面临的三大问题:找准自己定位:我是谁?在哪里?怎样做好架构师:我要做什么?如何搭建架构师知识体系:我该怎么做?这里面就是做事方法论:... 查看详情
[架构之路-6]:架构师-架构师应该具备的架构思维
目录前言:架构师的位置一、客户业务与需求分析环节1.1客户痛点、问题VS软件设计本身1.2客户价值VS架构设计二、规范与设计环节2.1完美VS适合2.2适合 VS前瞻性+潜在演进2.3持续演进VS稳定性2.4功能性需要VS非功能性需求2.5... 查看详情
[架构之路-100]:《软件架构设计:程序员向架构师转型必备》-10-细化架构设计
第10章细化架构设计10.1从2视图方法到5视图方法10.1.1回顾:2视图方法10.1.2进阶:5视图方法备注:不同的视图,就是从不同的维度在看目标软件系统。相同的系统,不同的视角,看到的结果是不相同的。就... 查看详情
[架构之路-103]:《软件架构设计:程序员向架构师转型必备》-13-软件架构如何分层(四层架构)
第13章如何分层13.1分层架构13.1.1常见模式:展现层、业务层、数据层13.1.2案例一则13.1.3常见模式:UI层、SI层、PD层、DM层13.1.4案例一则13.2分层架构实践技巧13.2.1设计思想:分层架构的“封装外部交互”思想备注:... 查看详情
面试阿里找个架构师想吊打我,架构师很厉害吗?阿里我进定了,架构师也拦不住我!
前言人人都有大厂梦,对于程序员来说,BAT为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金... 查看详情
云架构师的进阶之路
原文:云架构师的进阶之路一、架构的三个维度和六个层面1.1、三大架构在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构。第一个是IT架构,其实就是计算,网络,存储。这是云架构师的基本功,也是最传统的云架... 查看详情
[架构之路-87]:《程序员必读之软件架构》-2-软件架构师所需要技能
第8章 软件架构师的主要职责“软件开发者”这个词很容易理解,而“软件架构师”则不然。软件架构师是一个角色,而不是一个级别。要成为一名软件架构师,绝非一夜之间或一次晋升那么简单。这是一个循序渐... 查看详情
架构师成长之路:架构师初体验
说起架构师,给人的印象就是高高在上,在象牙塔的顶端,一点都不接地气。作为一个工程师,笔者之前对架构师也有类似的看法,感觉他们又不干实事,就是画画框图,写写PPT就完事儿了。万万... 查看详情
[架构之路-99]:《软件架构设计:程序员向架构师转型必备》-9-确定关键性需求与决定系统架构的因素
第9章确定关键性需求与决定系统架构的因素9.1概念架构是什么9.1.1概念架构是直指目标的设计思想、重大选择9.1.2案例1:汽车电子AUTOSAR——跨平台复用NA9.1.3案例2:腾讯QQvideo架构——高性能NA9.1.4案例3:微软MFC架构—... 查看详情
架构设计杂谈001-软件开发人员的成长之路
...路线:1、纯技术路线:高级开发人员→系统设计人员→架构师→资深技术专家/资深架构师2、技术管理路线:研发型技术管理高级开发人员→系统设计人员→架构师→技术管理人员→CTO/技术副总项目型技术管理高级开发人员→... 查看详情
[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径
第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情
[架构之路-2]:架构师-八种不同领域的架构,什么是架构与架构师?
目录第1章什么是架构?1.1架构的原初定义-建筑物架构1.2公司的组织架构1.2公司的股权架构1.3 项目的组织架构1.4 持续5GDevOps开发架构1.5 CPU的体系架构1.6 计算机系统的硬件体系架构1.7嵌入式系统的体系架构1.8 大数据平台... 查看详情
[架构之路-90]:《软件架构设计:程序员向架构师转型必备》-1-总结
...的瓶颈,即如何从普通开发人员转型成高层次的系统架构师和技术管理人员。想成为一名架构师,应当具备全面的知识体系?需要进行系统的学习和实践?很多开发人员有往架构师转型的强烈意愿,但苦于找不到好... 查看详情
架构师的责任(架构师的成长之路---第3篇)
作为架构师,首先要明确架构师的责任,要不然会再多的技术也是枉然。 简单的说,带领方向和难点攻克。 带领方向是指架构师应不断地多读书,多学习,跟随最新技术,不断地升华自己,并不停的为... 查看详情
架构师成长之路--什么是架构师(目标)
...想每个人都有自己对这三个问题的认知。如果我们要成为架构师,我们自己要面临的三大问题:找准自己定位:我是谁?在哪里?怎样做好架构师:我要做什么?如何搭建架构师知识体系:我该怎么做?这里面就是做事方法论:... 查看详情
[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径
第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情
[架构之路-52]:架构师-嵌入式软件常见难查问题与解决办法大总结-1-架构设计不合理问题
目录第1章 问题描述第2章问题分析:好的软件架构的特点2.1性能:承载力2.2可用性、易用性2.3扩展性2.4伸缩性2.5可靠性、容错性2.6安全性、鲁棒性第3章问题分析:影响软件系统复杂性的因素第4章如何设计好的软件架... 查看详情