原则大于个人口味
很多架构师都有着丰富的经验和个人风格,以至于在平常工作中常以个人口味作为决策的依据,对于普通的开发人员也许是可行的,我们鼓励大家有个人特色,但架构师更应该依据原则办事,需要维护和遵守一套大家公认的原则,以此作为判断是非的工具
从“可行走骨架”开始
敏捷管理崇尚尽早集成,在架构设计这一块,这个原则也行之有效。架构师在开始阶段无需陷入某些难题或细节里,应该尽快地把各个核心模块串接起来,并能发动开发人员使其简单地运转起来,骨架一旦就绪,再进入健身环节。这样做的好处,一方面可以尽早消除大家之间的误解,也可以带来正朝着正确方向前进的信心
数据是核心
数据为王是大家深知的道理,只要这个系统拥有有价值的数据,那么这个系统就有生命力。架构设计中,数据无小事,任何数据只要是存在于系统中,就需要给予足够的重视,也许是个废弃的字段,但它也许会有一天被人错误的引用到,或是时不时地遭到别人的询问是干嘛用的。
根据投资回报率进行决策
很多架构师认为计算和分配资源是PM要做的事情,与自己无关,自己要做的是设计最优的系统。其实,这个最优不光是技术上的最优,往往在实际项目中大家所关注的是投资回报率最优,老板想用最少的投资获取符合需求的产品, PM想用最少的人力发布项目,开发人员想用少的代码完成功能等等,作为架构师应该把投入产出比作为决策的一个重要因素
起码有两个可选解决方案
一个经验丰富的架构师会对一些关键的问题给出多个解决方案,并能分析其优缺点,并最后一般取舍之后做出选择,这是一种令人信服的说明问题和解决问题的方式。
不能不了解硬件
软件架构师常常无法正确考虑硬件因素,有多种原因,但大多和缺乏硬件的了解脱离不了干系。最好的解决办法是加强与基础设施架构师合作,共同对架构和设计进行评估
架构无小事
很多系统建设初期的琐碎事情在架构师看来是些小事情,比如单元测试、多余的库依赖、版本号的升级、开发人员不合理的代码风格等等,这些事情不给于重视尽早解决,会在将来的某天去解决会需要数倍的成本,有效率的架构师会尽早解决这些“小事”
警惕新技术,不轻易抛弃老技术
很多架构师包括大部分的开发人员都有新技术的追求倾向,但暗藏在每个新玩意后面的是风险和缺陷,在引入每项新技术之前,需要给予足够的评估,不要只看到它power的一面,更应该熟知其潜在的危害。而对于已接收过现实检验的老技术不要轻易抛弃,可能它存在些缺陷是某些新技术可以取代的,但我们应该更珍惜对它的了解和成熟,更可取的态度是试图去优化它而不是抛弃
拉伸关键维度,发现设计中的不足
架构师或多或少喜欢在理想的情况下设计产品,一旦异常情况发生或数据量超出了当初业务方提出的假设时,架构就漏洞百出。因此设计初期可以适当拉伸关键维度,把运行环境设想得更复杂一点,把需应付的数据量预想更多一些,这样可以发现设计中更多不足
稳定的问题才能产生高质量的解决方案
最好的架构师不是要去解决难题,而是要围绕难题开展工作,要能够将四处弥漫的软件问题圈起来,并画出其中的各种边界,确保对问题有稳定的、完整认识。如果问题是稳定的,那么解决后就永远不会再来麻烦你
对决策负责
有些架构师做出决策后,把事情交给其他开发人员去实施,认为之后的事情与自己无关了,其实做出设计上决策只是解决问题生命周期的最开始阶段,真正对决策负责可以参考做以下方式:
- 充分认识决策过程。可以采取记录和沟通的方式
- 定期复审架构决策
- 贯彻架构决策,全程跟进实施过程
- 给把决策的权利委托给团队中的专家
偿还技术债务
系统里或多或少会存在一些已识别的缺陷,比如单元测试覆盖率低、可测性差、性能不达标、代码坏味道多等等,架构师常常会视为眼中钉,想一夜之间把它们都消灭掉,其实更应该把它们作为债务,有计划地可控地去偿还,要把握好偿还的时机,这样我们的成本和收益比才会更好
结束语
以上这些行为准则不是拿来背诵的,而是应该融入到日常的工作中,有句话说得好,成功是一种习惯,只有习惯了这些成功实践,才算是真正的成功
分享到:
相关推荐
【软考架构师2009-2022年真题附答案】是一份集中的资源,涵盖了从2009年至2022年间的软件设计师资格考试(架构师级别)的实际试题及对应的答案。这个压缩包是备考者宝贵的复习资料,尤其对于那些希望在软件架构领域...
系统架构师(软考)-系统开发基础知识.pdf 系统架构师(软考)是指通过软考认证的系统架构师,负责设计和开发软件系统。系统开发基础知识是系统架构师必须具备的基本知识,包括软件工程概述、软件开发方法、软件...
用例作为规范行为的契约,不仅帮助理解用户需求,还能确保设计满足预期的功能和非功能需求。需求分析、业务用例分析、产品边界确定和用例目标层次的划分都是架构设计不可或缺的环节。从问题域到用例模型的转换,再到...
架构师需要制定技术框架,规范开发过程中的技术互动,同时影响开发团队的组织结构。在项目中,系统架构师扮演总设计师的角色,负责构建新产品的技术体系,并确保系统的整合与企业目标一致。 系统架构的概念起源于...
系统架构师的角色是理解和管理非功能性需求,制定开发规范,进行总体设计,并解决关键技术细节。 系统架构师的技术素质要求对软件工程标准有深入理解,同时需要具备管理素质,如创建高效团队,设定明确目标,提供...
### 高级系统架构师培训知识点概述 #### 一、现代软件开发过程及架构策略 - **软件架构设计师的知识体系** - **软件架构的定义与问题**:介绍软件架构的基本概念及其在软件开发过程中扮演的角色,探讨软件架构...
在IT行业中,系统架构师扮演着至关重要的角色。他们负责设计和规划复杂的软件系统,确保其高效、可扩展且易于维护。"系统架构师论文范文50篇"是一份宝贵的资源,提供了丰富的案例和指导,适合那些希望深入理解这一...
【Java架构师面试总结】 Java语言作为一门广泛应用于企业级开发的编程语言,因其独特的特性和设计理念,成为了面试中常见的考察点。以下是针对Java架构师面试的一些关键知识点: 1. **Java语言特点** - **简单...
系统架构师在项目中的主要职责包括:理解业务需求,制定技术策略,选择合适的架构模式,设计系统组件,定义接口规范,以及确保系统的可扩展性、性能、安全性和可靠性。这些都需要扎实的技术基础和丰富的实践经验。 ...
软件架构师作为软件开发项目的灵魂人物,在整个软件工程中扮演着至关重要的角色。一个优秀的架构师不仅...通过不断实践上述的架构师行为准则,软件架构师将能够有效地引导项目顺利进行,为客户提供高质量的软件产品。
1. 系统架构设计师是设计和管理软件架构的关键人物,负责非功能性需求的确认和评估,并给出开发规范和核心技术细节。 2. 他们既要关注技术实现,也要处理组织协调,是技术和管理的桥梁。 3. 架构设计师需要与系统...
Java 架构师在面试过程中会面临一系列深入且全面的问题,涵盖从基础知识到高级概念的广泛领域。以下是一些基于给定标题和描述的关键知识点详解: 1. **Java 语言特点**: - **简单易学**:Java 语法简洁,易于理解...
系统架构师的概念强化涉及到多个关键知识点,包括架构风格、设计模式、软件集成方法和技术,以及系统分析和设计的视图模型。以下是对这些概念的详细解释: 1. 架构模式: - C/S(客户端/服务器)架构:在这种模式...
建模语言是表达和沟通软件设计的关键工具,如统一建模语言(UML),它允许架构师以图形化的方式描绘系统组件、交互和行为,使团队成员和利益相关者能够清晰理解系统结构。而开发过程则涵盖了从需求分析、设计、编码...
35、测试的目标包括以下哪些内容:找出所有团队必须解决的缺陷/按照功能规格说明书验证解决方案中的组件/找出设计中的错误/找出由意外的用户行为而产生的错误/测试解决方案中的所有组成部分 36、对于MSF 过程模型的...
该套Java软件架构师实战培训视频教程聚焦于高级Java开发技术,特别强调了在实际项目中的应用。课程覆盖了从第18讲到第24讲的内容,共计148讲,旨在帮助学习者深入理解并掌握软件架构设计的关键技能。 在阶段一中,...
【标题】: "详细的wap架构师指南" 【描述】: "深入解析wap架构师的职责与技术要点" 【标签】: "wap架构师" 【内容摘要】: 本文主要介绍了ASPire WAP Solution的详细情况,包括WAP Portal的功能、WTBS的功能、关键...
10. **职业道德与专业责任**:强调在职业活动中应遵循的道德准则和职业行为规范。 通过系统架构分析师考试大纲的学习和实践,考生不仅可以提升自己的专业技能,还能在解决现实问题时,为企业提供高效、稳定且适应...