最近看了一本书《软件架构师应该知道的97件事》,本来并没对它抱有太多期望和兴趣,毕竟这种讲大道理的书不可能带来什么实际收获,但看的过程中被里面中肯实在的建议给吸引,对于我这种在走向架构师这条路上常常迷失方向的人,实在是雪中送炭。读完后,决定选择其中对我有触动的条目,加上实际工作中的感悟,形成一套自认为正确的架构师行为准则,以此来矫正自己的行为。
客户需求高于一切
不要为了自己的项目经历上添加光彩而去一味追求时髦而光鲜的方案,而是应该扎根客户需求,脚踏实地地为客户着想,这样才能更体现技术的价值,不至于迷失方向。架构师首先不要把自己当做技术人员,而是业务人员,把实现业务需求作为至上的目标,学会拒绝成本高,性价比不高的技术。
简化根本复杂性
常常为了解决某一局部复杂性引入了更为复杂的框架或产品,使得复杂性不减反增。往往正确的方式是做减法而不是加法,把最根本的复杂源找到,把根铲除。
关键问题可能不是出在技术上
总结失败的项目常常会纠结于选择了错误的技术。其实技术并没有错,而是在使用技术上或是在执行过程中人为的偏差导致。而架构师解决这种人为的问题比较好的方式是沟通,通过有效地沟通把技术贯彻下去
以沟通为中心,坚持简明清晰和开明的风格
架构师不要坐在象牙塔里,命令开发人员实施你的设计和决策,而是应该尽量简化你的设计,透彻地与他们沟通,并且关键在于开明地接受他们的建议并勇于推翻自己的决策
架构决定性能
最好提升性能的方法不是痛苦地做一次次对即将上线的产品做性能测试和提升,而是在架构设计的时候就把性能作为重要因素,从架构底层考虑分布式、缓存、系统交互划分等影响性能的重点。提前关注性能,是解决性能问题代价最小的方式
分析客户要求背后的真实需求
合同上或UC上只是客户的要求,而并非100%是客户真实的需求,架构师的重要责任就是挖掘隐藏在要求背后的真实需求,这个不但可以最大化满足客户,也往往可以帮助我们避开技术壁垒,当真正抓住客户需求的时候,我们也许能用更为简单的替代方案满足客户
沟通是架构师达成目标的核心技能
常用的沟通技能和准则有以下几点:
不要把沟通当做对抗
不要带有情绪与人沟通
表达自己方案之前倾听他人观点
站立发言是扩大沟通影响力的一种好方式
学习业务或技术领域中的行话,降低沟通成本
不要为预防故障引入更多的故障
架构师常常会为识别出的可能故障点加入监控措施,但往往会忽略做些监控措施也是会有故障的,不要试图让你的系统天衣无缝,这往往是使系统更为复杂和脆弱的来源。先承认是系统总会有缺陷的,只是把这些缺陷设定为容易察觉和维护的点
量化非功能性需求
往往功能性需求容易量化,因为这些是看得见和摸得着的,但像性能好、可扩展性好、高可用性等这些非功能性需求却不好量化,但作为架构师要有意识地去定义和量化这些需求,只有这样才能更好地和其他部门更好沟通,谋求更多资源,也便于系统更有效地验收
一行代码比500行架构说明更有说服力
架构师往往喜欢待在象牙塔里,堆砌大量架构文档,然后希望其他开发人员能乖乖地去实施。这样做的效果往往是不好的,一方面很难有这样的牛人能洞察所有的细节,在文档里就预测性地解决了所有问题,另一方面也不利于架构师与开发人员的沟通。比较好的做法是架构师参与具体实施,在实施中验证和改进架构设计,与大家达成一片也便于加深彼此配合的默契程度。
不存在放之四海皆准的解决方案
不存在最好的架构,只有最合适的架构。不会有一种架构方案,在任何项目里都适用。虽然我们承认模式的重要性,但在实际项目里要有选择性吸收,根本上要本项目和实际困境出发,不要被既有的模式和经验先入为主,因为没有一种已有方案能完全不修改地适用于你。
架构设计要平衡兼顾多方需求
架构师从某种角度来讲就是一剂胶水,把业务部门的需求、项目进度的需求、测试的需求和开发工程师本身的需求有效地捏合在一起,平衡与兼顾以至达到皆大欢喜。其他职能的人都只是focus在某一局部,需要架构师这样的人来通盘考虑,因此他的工作是最杂的,绝不是简简单单地拿出一份架构文档就OK了,需要考虑系统安全、易用性、可测性、商业价值、长期规划、发布管理和部署方式,使得各个部门人的需求得到响应
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cutesource/archive/2010/07/25/5764774.aspx
分享到:
相关推荐
【软考架构师2009-2022年真题附答案】是一份集中的资源,涵盖了从2009年至2022年间的软件设计师资格考试(架构师级别)的实际试题及对应的答案。这个压缩包是备考者宝贵的复习资料,尤其对于那些希望在软件架构领域...
系统架构师(软考)-系统开发基础知识.pdf 系统架构师(软考)是指通过软考认证的系统架构师,负责设计和开发软件系统。系统开发基础知识是系统架构师必须具备的基本知识,包括软件工程概述、软件开发方法、软件...
### 软件系统架构师的关键知识领域与实践 #### 软件架构设计的核心概念与价值 软件系统架构师负责设计和构建软件系统的基本结构,确保系统满足业务需求、性能标准以及未来发展的灵活性。他们不仅需要具备深厚的...
架构师需要制定技术框架,规范开发过程中的技术互动,同时影响开发团队的组织结构。在项目中,系统架构师扮演总设计师的角色,负责构建新产品的技术体系,并确保系统的整合与企业目标一致。 系统架构的概念起源于...
系统架构师的角色是理解和管理非功能性需求,制定开发规范,进行总体设计,并解决关键技术细节。 系统架构师的技术素质要求对软件工程标准有深入理解,同时需要具备管理素质,如创建高效团队,设定明确目标,提供...
### 高级系统架构师培训知识点概述 #### 一、现代软件开发过程及架构策略 - **软件架构设计师的知识体系** - **软件架构的定义与问题**:介绍软件架构的基本概念及其在软件开发过程中扮演的角色,探讨软件架构...
《系统架构师 4》是针对这一专业领域深入学习的一份宝贵资料,它涵盖了系统架构设计的多个核心知识点。在当今数字化时代,系统架构师的角色日益重要,他们负责设计、规划和实施复杂的信息系统,以满足企业的业务需求...
"系统架构师论文范文50篇"是一份宝贵的资源,提供了丰富的案例和指导,适合那些希望深入理解这一领域的专业人士。这份资料包含了多种主题,覆盖了系统架构设计的多个方面。 首先,论文可能涵盖了系统架构的基本概念...
【Java架构师面试总结】 Java语言作为一门广泛应用于企业级开发的编程语言,因其独特的特性和设计理念,成为了面试中常见的考察点。以下是针对Java架构师面试的一些关键知识点: 1. **Java语言特点** - **简单...
Java 架构师在面试过程中会面临一系列深入且全面的问题,涵盖从基础知识到高级概念的广泛领域。以下是一些基于给定标题和描述的关键知识点详解: 1. **Java 语言特点**: - **简单易学**:Java 语法简洁,易于理解...
软件架构师作为软件开发项目的灵魂人物,在整个软件工程中扮演着至关重要的角色。一个优秀的架构师不仅...通过不断实践上述的架构师行为准则,软件架构师将能够有效地引导项目顺利进行,为客户提供高质量的软件产品。
1. 系统架构设计师是设计和管理软件架构的关键人物,负责非功能性需求的确认和评估,并给出开发规范和核心技术细节。 2. 他们既要关注技术实现,也要处理组织协调,是技术和管理的桥梁。 3. 架构设计师需要与系统...
该套Java软件架构师实战培训视频教程聚焦于高级Java开发技术,特别强调了在实际项目中的应用。...通过深入学习和实践,学员将能够更好地应对实际工作中的挑战,成为一名合格的高级Java软件架构师。
系统架构师的概念强化涉及到多个关键知识点,包括架构风格、设计模式、软件集成方法和技术,以及系统分析和设计的视图模型。以下是对这些概念的详细解释: 1. 架构模式: - C/S(客户端/服务器)架构:在这种模式...
如何能抽象出一个统一的状态模型,可以使状态在留转过程中被保存和传递//最好能够用一套处理机制,能够满足WinForm程序和Web应用的需要 //用户的在一个操作流程中可能会嵌套子流程,或者会转到别的流程 //记录流程的...
建模语言是表达和沟通软件设计的关键工具,如统一建模语言(UML),它允许架构师以图形化的方式描绘系统组件、交互和行为,使团队成员和利益相关者能够清晰理解系统结构。而开发过程则涵盖了从需求分析、设计、编码...
10. **职业道德与专业责任**:强调在职业活动中应遵循的道德准则和职业行为规范。 通过系统架构分析师考试大纲的学习和实践,考生不仅可以提升自己的专业技能,还能在解决现实问题时,为企业提供高效、稳定且适应...
【标题】: "详细的wap架构师指南" 【描述】: "深入解析wap架构师的职责与技术要点" 【标签】: "wap架构师" 【内容摘要】: 本文主要介绍了ASPire WAP Solution的详细情况,包括WAP Portal的功能、WTBS的功能、关键...