架构师必备的37项核心技能清单 (架构师必备的知识)
什么是软件架构师?
软件架构师是一名软件专家,负责做出高阶设计选择和输出技术标准,包括软件编码标准、工具和平台(框架)。首席专家(leading expert)也被称为首席架构师(chief architect)。
软件架构是一个系统的基本(基础)组织。包含组件,他们之间的关系以及与周边的关系,设计原则,以及系统演进。
架构的级别
架构可以被抽象为几个级别(level)。级别决定了要选择哪些对应的技术。市面上有多种分类方式,我个人喜欢把它分为三个级别:
- 企业架构(Enterprise Architecture):描述整个组织的 IT 基础设施和应用程序的整体视图。
- 解决方案架构(Solution Architecture):描述一个特定解决方案的总体设计,包括组件、接口和数据流。
- 技术架构(Technical Architecture):描述解决方案的详细技术实现,包括使用的技术、工具和平台。
有时候,架构师是也被戏称为胶水(粘合剂),不同利益相关者之间的胶水,举三个例子:
- 业务和 IT 之间的胶水
- 开发和运营之间的胶水
- 内部和外部之间的胶水
软件架构师要做的几个典型活动
在搞清楚要使用的技术之前,我们先要明白软件架构师要做的几个典型的活动。以下是我梳理的几个典型的活动:
- 收集需求和制定解决方案
- 设计系统架构和组件
- 选择合适的技术和工具
- 制定编码标准和最佳实践
- 审核代码和设计
- 与开发团队合作实现解决方案
- 监控系统性能和可伸缩性
- 制定维护和升级计划
注意:架构是一个持续的活动,尤其是在敏捷开发团队中。因此,这些活动得一遍一遍的重复迭代,over and over again。
软件架构师要掌握的重要技能
为了能够支撑上面列出的活动,软件架构师需要一些必备的技能。根据我过往的经历,以及翻阅资料以及与大佬们进行讨论,最后得出了如下软件架构师必备的10个重要技能:
- 设计
- 决策
- 简化
- 代码
- 文档
- 沟通
- 评估
- 权衡
- 顾问
- 营销
1. 设计
什么是好的设计?这个可能是一个非常重要同时又要挑战性的问题。分为理论和实践。就我的经验,二者的结合是最有价值的。
行动或见解:
- 知道基础的设计模式:GoF 设计模式、企业集成模式
- 对模式和反模式进一步钻研
- 知道质量度量(quality measures):可维护性、可靠性、适应性、安全性、可测试性、可扩展性、可重用性
- 尝试并了解不同的技术栈
2. 决策
作为一名架构师,你必须能够做出明智的决策,这些决策将影响系统的设计和实现。你必须权衡不同的选项,考虑它们的优点和缺点,并做出符合系统目标的决定。
行动或见解:
- 收集足够的信息
- 识别和评估替代方案
- 考虑决策的长期影响
- 与利益相关者沟通决策
3. 简化
好的架构应该是简单易懂的。你应该能够用清晰简洁的语言解释系统的设计。复杂的设计会难以维护和理解,因此要尽可能保持简单。
行动或见解:
- 使用清晰简洁的语言
- 避免不必要的复杂性
- 重视可维护性
- 寻求反馈以改进可理解性
4. 代码
虽然架构师不一定是开发人员,但他们应该对编码有坚实的理解。这将使他们能够理解系统的实现,并做出更好的设计决策。它将允许他们与开发团队有效地合作。
行动或见解:
- 学习至少一门编程语言
- 了解不同的编程范例(面向对象、函数式、命令式)
- 实践编码,构建一些个人项目
- 与开发团队合作,了解编码实践
5. 文档
良好的文档是任何软件架构的关键部分。它使其他人能够了解系统的设计和实现,并有助于团队成员之间进行有效的沟通。
行动或见解:
- 编写清晰简洁的文档
- 使用行业标准和约定
- 保持文档的更新和准确性
- 征求反馈以改进文档
6. 沟通
架构师必须能够有效地与各种利益相关者进行沟通,包括业务用户、开发人员、管理人员和客户。他们必须能够向非技术人员解释技术概念,并说服他人支持他们的设计决策。
行动或见解:
- 练习积极倾听
- 使用清晰简洁的语言
- 根据观众调整沟通风格
- 寻求反馈以提高沟通技巧
7. 评估
架构师必须能够评估系统的架构和设计。他们必须能够识别潜在的风险和问题,并提出建议以改进系统。
行动或见解:
- 回顾和分析架构设计
- 识别潜在的风险和问题
- 提出改进建议
- 与利益相关者讨论评估结果
8. 权衡
作为一名架构师,你经常需要权衡不同的选项和决策。你必须能够考虑不同的因素,确定最佳行动方案。
行动或见解:
- 识别和评估不同的选项
- 考虑不同的因素(成本、时间、资源、风险)
- 做出符合系统目标的决策
- 与利益相关者沟通权衡结果
9. 顾问
<想要做个架构师,需要具备哪些技能
最基本的能力:快速解决系统的故障大概需要具备的能力:Linux/ WebServer(Apache或Nginx)/ MYSQL 等基础服务的配置,优化和故障排查,根据不同的环境和要求,需要具备更多的如Memcached,NOSQL, 等服务的配置、优化和故障排查。 PHP方面,到了架构师的层面,语言都是浮云,但是你必须精通至少一个,如 PHP,掌握其他一些数据分析和日志分析的能力~框架啥的,都是浮云~到了架构师这一层面,要做的是解决现实碰到的问题,包括技术的问题,产品的问题,实现系统性能的最优化,系统稳定性的保障等~~衡量一个人的能力,不是能写多少代码,实现多少种算法,而是是否能用最快速的方法,有效地解决当前的需求或故障~~
java架构师需要学什么
java架构师需要学什么如下:
java架构师需要学:首先要是一个Java高档攻城狮,Jvm虚拟机原理、调优操作,Java反射技能,Java各种集合目标的完结原理。
如果你是想成为Java架构师,那么你首先要是一个Java高档攻城狮。也便是说,根底有必要结实,对Java的了解全面而且深化。娴熟运用各种结构,并知道它们完结的原理。
Jvm虚拟机原理、调优操作,懂得jvm能让你写出功用更好的代码,池技能也是要把握的,目标池、衔接池、线程池都要会。
Java反射技能,写结构必备的技能;Java各种集合目标的完结原理,了解这些能够让你在处理问题时选择合适的数据结构,高效地处理问题,写出代码。
java构架师的三个阶段:
第一阶段:java根底知识要结实,java编程思想,规划模式,【effectivejava】这些都算是根底知识。在这根底上,要结合多种项目经历,使用实践来进步根底才干。
第二阶段:开阔眼光,学习优秀的项目或开源代码。例如【jstorm、hadoop】等开源软件,能够下载后使用业余时间研读,提高才干。
第三阶段:结合事务进行架构规划和实践,并多与行业高手沟通,提高领域建模等才干。
选一个方向,然后多阅读一些高质量代码,站在长辈架构师的膀子上,才干比较快速的进步,长期的技能堆集,事务项意图堆集,合理的计划处理通用问题。多读多写多考虑。多读的意图是开拓自己的视野,让自己具有举一反三举一反三的才干。多写是脚踏实地,防止纸上谈兵纸上谈兵。多考虑是融会贯通所读所写。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。