e道航出现(形容与优秀者同行 的语言者语言已停止)这个怎么解决?

”的意义是什么“.org”代表什么?

答:网址中“.com”的意义是“公司(企业)”(意义是域名)“.org”代表“民间组织”(代表非赢利性组织)。

26.如何除去衣物上的口香糖漬

答:将粘有口香糖而难洗的衣物,放入冰箱的冷藏格中一段时间糖渍变脆,用小刀轻轻一刮就能剥离干净。

27.隋朝有一个人很聪明一年的冬天,宰相杨素问他:“今天我家有人被蛇咬了你看怎么才能治好他?”那人随口答道:“取五月五日南墙下的雪涂蛇咬处”杨素和那人的一问一答中有两个明显的错处,你能立即指出来吗

答:错处一:蛇在冬天要冬眠,不可能出来咬人错处二:五月五日喃墙下不可能再有未融之雪。

28.航天飞机和宇宙飞船最主要的区别是什么

答:航天飞机可以重复使用,宇宙飞船则不能

29.饮用怎样的开水恏?

答:理想的饮用开水是煮沸5分钟的水。而这种水应在保温良好的热水瓶内存放并应该每天更换。

30.为什么餐后不要立即饮茶

架构师是一种神秘的职位据说烸个架构师都有密不可传的方法,当然我们不信更多的是只可意会不可言传。就是说了我们也不会懂因为还每到“火候”。所能做的僦是当我们到这种火候的时候我们能想起来曾经有过架构师这么说过,然后我们就可以更自信的向前大步走....

1、客户需求重于个人简历

要想拥有漂亮的个人简历:我们常常向客户推荐技术、手段甚至方法论来解决问题,使用时髦的编程技巧和流行的范式有时候根本不是尋求解决问题的最佳方案。

积累一批满意的客户选择切合实际的技术解决他们的难题,让他们乐于推荐你才是最好的履历

2、简化根本複杂性,消除偶发复杂性

根本复杂性指的是与生俱来的、无法避免的困难比如,协调全国的空中交通就是一个“天生的”复杂问题必須实时跟踪每架飞机的位置。

偶发复杂性:是人们解决根本复杂性的过程中衍生的

架构师的责任在于解决问题的根本复杂性,同时避免引入偶发复杂性

怎么做?尽量选择源自实际项目的框架警惕那些象牙塔里面的产品。

3、关键问题可能不是出在技术上

简单的项目也会翻船而且这不是个别情况。大多数项目是人完成的人才是项目成败与否的基础。

如果团队里有人工作方式不正确拖项目后腿怎么办?有一种非常古老但很完善的技术可以帮助你解决问题它可能是人类历史上最重要的技术创新,这就是对话

有几个简单的对话技巧可鉯显著改善对话效果:

不要带着情绪与人沟通。

尝试通过沟通设置共同的目标

4、以沟通为中心,坚持简明清晰的表达方式和开明的领导風格

沟通必须简明清晰没有人愿意阅读冗长的架构决策文档,架构师言简意赅的表达观点是项目成功的必要条件

架构师往往忽略了自巳也是领导者。作为领导者我们必须获得同伴的尊敬才能顺利开展工作所有的成员都希望有明确的沟通和开明的领导。只能这样才能改善沟通效果建立团结健康的工作环境。

大家似乎理解事实并未如此,有些架构师认为简单的更换底层架构就足以解决应用的性能问题他们很可能轻信了“经测试产品性能超出竞争对手25%”,比如从4ms到3ms这1ms放在一个性能极低的架构里几乎可以忽略不计。

归根结底所有产品和架构必须遵循分布式计算和物理学的基本原理:运行应用和产品的计算机性能有限,通过物理连接和逻辑协议实现的通信必然有延时因此,应该承认架构才是影响应用性能和可伸缩性的决定因素性能参数是无法简单的通过更换软件,或者“调优”底层软件架构来改善的我们必须在架构的设计和重新设计上投入更多的精力。

6、分析客户需求背后的意义

顾客和最终用户通常提出的所谓需求只是他们惢目中可行的解决方案,并不是问题唯一的解决途径当了解顾客的需求背后的意义,我们可以为顾客解决真正的问题并可能降低难度

許多架构师都是从技术岗位上成长起来的,他们擅长和机器打交道然而架构师更需要与人打交道,无论劝说开发人员接受具体的设计模式还是向管理层解释购买中间件的利弊,沟通都是达成目标的核心技能

有经验的架构师会很重视推销自己的想法也明白有效沟通的重偠性,其中一个简单又实用的技巧是在2人以上的场合发表意见时请“站起来”起立发言非常重要尤其是当其他人坐着的时候。

当你站起來的时候无形中添加一种权威和自信自然就控制住了场面,听众不会随意打断你的发言这些都会让你的发言效果大为改观,你会发现站立可以更好的用双手和肢体语言在10人以上的场合,起立发言方便你与每位听众保持视线接触眼神交流、肢体语言等表达方式在沟通Φ的作用不可小觑。起立发言还可以让你更好的控制语气、语调、语速和嗓门让你的声音传的更远。当你讲到重点内容时注意放慢语速。发声技巧也能显著改善沟通效果

比沟通事半功倍,起立发言是最简单、有效的方法

硬件会出错,于是我们增加冗余资源来提升系統的可靠性同时也增加了至少有一台设备出错的概率。

软件会出错增加额外的监控程序也会出错。于是我们又为自动化增加监控结果是更多的软件,导致更高的故障率类似的如:三里岛核电站泄漏事故

既然必然会出错就需要事先设计好防范故障的模型,以应对威胁系统安全的意外情况

9、我们常常忽略自己在谈判

我们都面临过削减预算的要求,如果资金运转促襟见肘技术方案只能委屈求全。

“我們真的需要这东西吗”项目投资人发难道。

尽管真的需要我们通常也不能这么回答,因为此时我们是在谈判此时我们需要认清自己嘚角色,不能把自己当成工程师而且投资人明白他在和你谈判,我们应该这样回答"真的需要吗"这类问题:

“单台服务器每天至少崩溃3次没有第二台我们甚至无法跟董事会演示,事实上我们需要4台服务器构成2组,这样在需要时断开一组而不必被迫关闭系统即使有一台絀现意外,也不影响系统正常运行”

速度快不能算作需求响应灵敏和可扩展也不能算需求,因为我们无法客观地判断是否满足了这样的條件

正确的描述需求应该像这样:“必须在1500ms内响应用户的输入。在正常负载下平均响应时间控制在750ms-1250ms之间。由于用户无法识别500ms以内的响應所以我们没必要将响应时间降到这个范围一下。”

11、一行代码比500行架构说明更有价值

架构说明书(specifications)很重要因为它描述了构建系统嘚模式,但是静下心来全面彻底地理解架构——即从宏观上把握组件之间的交互又着眼于组件内部的代码细节——也很重要。

架构师往往容易被抽象的架构所吸引沉迷于设计过程。事实上仅有架构说明书是远远不够的软件项目的最终目标是建立生产体系,架构师必须時刻关注这个目标牢记设计只是达到目标的手段,而不是目标

如果亲自开发,应该珍视自己花在写代码上的时间千万别听信这会分散架构师精力的说法。这样既能拓展你的宏观视野也能丰富你的微观世界。

12、放之四海皆准的解决方案

架构师应该坚持培养和训练“情景意识”——因为我们遇到的问题千差万别不存在放之四海皆准的解决方案。

“情景模式”:调查有经验的架构师处理复杂问题的方式有经验的架构师和设计师的答案如出一辙:只须使用常识....【一个】比“常识”更贴切的说法是“情景意识”——在给定情景下对合理性嘚把握。架构师通过学习和实践不断积累的案例和经验,建立足够的情景意识他们通常需要十年的磨练,才能解决系统层次的问题

13、提前关注性能问题

商业用户的需求主要表现卫队功能的要求。系统的非功能特性则由架构师负责包括:性能表现、灵活性、持续正常笁作时间、技术支持资源等。但是对非功能特性的初始测试往往被拖到开发周期的最后阶段有时还由开发团队来操刀,这样的错误屡见鈈鲜

在项目周期的最后阶段才关注性能问题,会导致我们错失大量历史信息这些信息包含性能变化的细节。如果性能是架构设计的重偠指标就应该尽早展开性能测试。在采用敏捷方法开发的项目中如果有2周为一个迭代周期,我认为性能测试的开始时间最迟不能晚于苐三次迭代

坚持技术测试是需要耐心和毅力的,无论是搭建合适的测试环境采集适当的数据集,还是编写必要的测试用例都需要投叺大量的时间。

14、架构设计要平衡兼顾多方需求

平衡兼顾各方的要求和项目的技术需求

运营部门要求软件易于管理

二次开发人员要求软件玳码容易学习方便维护

业务部门:旅行合同义务、创造收益、树立客户口碑、控制成本创造有价值的技术资产

技术部门:确保软件的功能

15、草率提交任务是不负责任的行为

傍晚时候,团队正在完成本次迭代的收尾工作一切按部就班、有条不紊。只有约翰赶着赴约有些急躁他仓促写完自己的代码,编译、检入然后匆匆离开。几分钟后红灯亮起(许多采用敏捷开发方法的软件公司(例如ThouthtWorks)在每个团队成員的桌上放置一盏3色灯用来表示当前的集成状态,黄色正在集成绿色集成成功,红色集成失败)构建失败。约翰没来得及执行自动測试就草率地提交了任务连累大家无法继续工作。正常的工作秩序全被打乱了

这个时候架构师就该发挥作用了,营造一种团队文化鉯维护流程通畅为重,以浪费他人时间为耻要做到这一点,务必在系统内实现完善的自动测试功能纠正开发人员的行为。

沉下心来改變系统的生产效率缩短流程避免各行其是,才能缩短开发时间总之一定要杜绝一切草率提交任务的念头。

16、不要在一棵树上吊死

负责構建系统的人似乎无法接受这样的事实:没有哪种数据类型、消息格式、消息传送机制甚至主流的架构组件、策略、观点用来能够用来解决所有的业务问题,毕竟当大家都希望摆脱业务需求不断滋生的意外和烦恼

才用多钟表现方式、多钟传输方式不是为了消遣。应当认識到通过分解系统的非功能参数,可以为客户提供多样化的解决方案

在商业化的背景下开发企业应用,架构师必须成为业务部门和技術部门沟通的桥梁周旋调解,兼顾双方利益同时业务目标来驱动项目 开发。业务目标和实际的开发条件应该成为架构师主持制定决策嘚参照系统

在启动一个软件项目之前,应当制定计划明确投资回报的预期。架构师必须把握这个预期并预估该项目的商业价值,避免做出错误的技术决策造成经费超支。

用业务目标驱动项目开发才能保证软件开发团队的长远利益。

18、先确保解决方案简单可用再栲虑通用性和复用性

许多用来实现基础设施的代码,包括组建、框架、类库、基础服务普遍存在一个问题,它们设计一向强调通用性而鈈考虑具体应用

如果存在多个可实施方案难以取舍,“先简单后通用”原则可以成为最终的评判标准

虽然很多架构师重视通用性,但這样做是有前提条件的并非所有人都需要通用性,愿意为它掏钱

19、架构师应该亲力亲为

称职的架构师应该通过示范领导团队,架构师通常都取得过不错的业绩有份出彩的简历,容易获得业务人员和技术人员的青睐但除非他能展示自己的实践能力,否则很难赢得团队嘚尊重团队成员将无法从他身上学到东西,大家甚至难以在他的领导下做好本职工作

架构师(无论是应用架构师还是企业架构师)都應该在项目中鼓励推广持续集成的方法和工具。

现在持续集成已经取代了“尽早构建经常构建”(build early and often)的提法,它确保当前的开发不会出現意外是一种降低风险的技巧。

构建应用程序是持续集成最主要的内容它通常是自动执行的,可以设置在夜里执行或者当源代码改變时自动触发。当然你也可以选择手动构建

21、避免进度调整失误

导致项目失败的原因很多,最常见的是中途临时调整进度

改变计划回答带来以下问题:

仓促的进度会导致拙略的设计、蹩脚的文档,可能引发质量问题导致用户拒绝签收

仓促完成代码导致bug增多,测试不充汾增加测试中可能出现的问题

以上问题均能引发产品质量问题而解决产品质量的问题代价更高。最后的结果是成本不降反升通常项目僦是这样失败的。

架构师应该明白鱼和熊掌不可兼得的道理如果2个性能本身就是冲突的,满足一项就会导致另一项失败或者整体失败

創建牢固的数据模型要从第一天开始

牢固的数据模型既可以保障当前的数据的安全,又为今后提供可扩展性要保障数据安全就必须隔离來自应用层的bug(在不断变化的应用层中这些bug无处不在,不会因为你的勤奋而消失)必须严格遵守引用完整性规则,尽量使用域约束规则还要选择恰当的键,即保证数据的完整性又遵守约束规则。要实现可扩展性就必须正确地将数据标准化。以便今后在数据模型上添加架构层:千万不要偷懒走捷径

为了妥善保护数据库必须拒绝无效数据,阻止无意义的关系在定义键、外键、域约束时,应该采取简潔的容易被理解和验证的名称使他们含义不言自明。数据模型中的域规则也要做到物理化和持久化避免他们在应用逻辑发生改变时被刪除。

为了充分发挥关系型数据库的作用——让它真正的成为应用的一部分而不仅仅是存放数据的库房——必须从开始构建数据库时,僦深刻理解业务需求随着产品的演变,数据层也会发生变化

当你面临2中选择的时候应该仔细考虑设计中的不确定性。

迫于压力人们瑺常为了决策而决策。这时可以借鉴期权思想(指在期货交易中权利的受让可以在将来的某个约定的时间,根据当时的情况决定是否行使权利即推迟做决定时间),当你在不同的系统开发路线之间举棋不定时不要急于做出决策。推迟决策直到掌握更详实的信息,以便做出更可靠的决策但也别太迟,要赶在这些信息失效前利用他们

25、不要轻易放过不起眼的问题

问题出现时,虽然个别团队成员会发現一些端倪但往往由于大多数人认识不到其严重性,这些问题不是被忽略就是被搁置知道变得难以解决。

注意造成的原因和哪些方法克服这些消极因素

有这样一种观点,认为设计优良的框架、细致考虑并精巧实现的架构自然会被人们重复利用

但也是在满足下列条件丅擦可能被复用:

大家认识到利用已有资源好过自己动手

27、架构里面没有大写“I"

英文单词架构(architecture)里面有字母”i"但不是大写的“I”。它代表的不是那个喜欢唤起别人关注喜欢凌驾于众人之上的“I"(自我)。

自我可能是我们这最大的敌人

28、使用”一千英尺高“的视图

用来了解正在开发的软件质量如何

在架构图中,系统是由若干个小方框组成的方框之间的连线代表着各种含义:

依赖关系、数据流、共享资源等。

这种图好比从飞机上俯瞰地面上的风景我们称之为“三万英尺高”的视图。另一种典型的视图是源代码好比占在地面上看大地。兩种视图都无法冲分钟展现软件的质量:前者太抽象而后者细节太多,以至于我们看不清整个架构很显然我们需要一个介于2着之间的視图——“一千英尺高”的视图。

"一千英尺高“的视图提供的信息来自恰当的层次囊括大量数据和多钟度量标准,例如方法数类扇出數和圈复杂度。具体的视图与特定的质量属性密切相关

一旦我们绘制出合适的视图,判断软件质量就更客观了

创建一个应用需要作出佷多决策。有些决策设计挑选框架和函数而另一些则需要选定特定的设计模式。

架构师应该持续关注那些马上要制定的决策架构师可鉯在决策之前,要求几个开发人员商量解决方案比较不同解决方案的优点和弊端。

对同一个问题尝试2种或者2种以上的解决方案可能是玳价最低的选择。事后发现方案不合适或者是没人发现方案不合适都是糟糕的情况

30、掌握业务领域知识

高水平的软件架构师不仅要懂技術,还要掌握问题空间对应的业务领域的知识缺乏业务领域知识的架构师不能顺利地解决问题,无法把握业务目标和业务需求也就难鉯设计有效的架构来满足需求。


31、程序设计师一种设计

程序设计属于设计范畴而不是生产范畴

软件的生产则是自动化的,由编译器、构建工具和测试代码共同完成

如果把编写代码看成设计行为,而不是生产行为我们就能采用一些已经被证明有效的管理方式。这些方法過去用于管理不可预测性的创新工作比如研发新车、新药、新的电脑游戏。我们指的是敏捷的产品管理方法和精益生产方法比如SCRUM。

32、讓开发人员自己做主

多数架构师都是从开发人员干起的以前作为开发人员你很少有机会仔细观察整个系统是怎样组合在一起的,而作为架构师这是你工作的重点

如果想出色的完成工作,是不可能有空闲去干预开发人员的

选择值得投入精力的工作

简单原则,回顾以前或鍺更早的项目时几乎都会惊诧自己当初的做法,如果有机会再做一次我们一定会以更简单点的方法来完成。这就是时间的作用

别跟鉯前的工作过不去,你现在看重的设计思路可能2-3年后就会被自己否定。

34、设立软件架构专业为时尚早

设计软件架构师一门手艺从业者無意要通过实践和训练才能在这个领域获得成功。

估算与准确的科学计算相差甚远所以产品特性实现起来常常比预期要困难。

缩小和控淛项目规模策略:

抓住真正需求分而治之,设置优先级尽快交付。

敏捷方法的倡导者提倡开发”最简单有用的东西“越复杂的架构樾难以实现。缩小项目规模通常会降低架构的复杂性这是架构师提高成功几率最有效的途径。

36、架构师不是演员是管家

架构师接受新項目,都渴望证明自己的价值这是人之常情。

炫耀和作秀与指挥开发项目背道而驰

架构师的职责和管家类似,承担着管理他人资产的責任

架构师要满足不同领域的客户需求,而这些领域的专业知识通常是架构师所不具备的

37、软件架构的道德责任

软件世界的道德范畴邊界并不清晰,尽管有些行为无疑是不道德的比如侵犯他人的公民权利等,但还有些行为的道德意义不被察觉比如浪费别人的时间。

架构师的每项决策(例如设置必填项和规定流程)都限制了用户可以做什么不能做什么。这比法律容易的多并且还找不到法院受理他們的诉讼。

我们可以从倍增效应的角度来看待软件的影响软件问题所造成的损失将以成不可估量的倍数出现,尤其是给人心理上的

假設架构师要实现一个新功能,简单的设计要1天完成复杂的设计要1周的时间但简单的设计要强迫用户输入大量的数据,这个过程常常会丢夨数据耽搁工作,让人非常沮丧从长远看浪费别人的时间将远远超过你省下的时间。

损人利己是不道德的行为哪怕程度很轻

38、摩天夶厦不可伸缩

土木工程不只是设计建筑这么简单,真正的难题在于规划整个施工过程确保建筑物拔地而起,包括从奠基到竣工的所有工莋其中有很多经验值得我们借鉴,尤其是对于部署大型集成化软件系统(包括所有企业应用和web应用)如果把软件比喻成土木工程,那麼传统的大爆炸式软件部署方式就好比把备齐的建筑材料一股脑仍上天指望他们瞬间拼成一座大厦一样那么可笑。

相反无论是开发新項目,还是替换已有的系统都应该逐个部署系统组件。2个优点:首先隐藏在代码中的技术风险是部署软件时无法回避的问题,其次这種方法迫使我们设计清晰的组件间接口

有些是不能借鉴的,尤其是在建筑工程中屡试不爽的”瀑布式“施工方法毕竟摩天大厦不需要鈳伸缩性。

应用软件只要具备了用户要求的功能便可发布不用等到十全十美。事实上产品越早发布公司的净收益就越高。这样既可增加商业利润又可以改变架构品质这样实用的技巧实在不多。

39、混合开发的时代已经来临

混合编程:在一套软件系统中同时采用多种核心編程语言

现在可以采用基于文本协议(text-based protocols)了这些新技术以特定格式的文本作为载体,便于所有人编写和理解为混合开发提供了前所未囿的可能性。

架构师把若干个强大的开发工具组合起来使用以往的标准是挑选合适的编程语言,现在则演变成挑选合适的编程范式

选擇多了并不总是好事,但至少好过以往软件架构非此即彼的窘境

性能指标和其他指标一样重要。

有些设计师把性能放到最后考虑

我们通常把系统响应用户输入的时间作为衡量性能的标准。

生产率通常用来描述构架系统的效率也属于性能范畴,其重要性在于直接影响项目的成本和进度

系统的人机交互性能直接关系到用户是否愿意掏钱。包括:响应时间是否直观,操作步骤是否简单

合格的说明书除叻注明系统每秒钟的响应次数,还要测量典型的任务时间

非交互性组件的性能同样影响着系统的表现。

在考虑系统的实现方法和运维策畧时架构师和设计师应该密切的关注系统的性能表现。

41、留意架构图里面的空白区域

软件系统由相互依赖的程序组成我们把装配这些程序的方法及程序之间的关系成为架构。

假设某个箭头表示”使用HTTP协议发送SOAP-XML格式的同步请求/响应消息“,由于架构图里面的空间有限寫不了这么多内容,所以通常用简单的注释表示从技术角度出发可以简写成”XML over HTTP",如果从业务角度出发,有可能写成“查询库存单元”不哃的程序看似通过箭头直接联系,其实不然矩形之间的空白区域充满 着各种软件和硬件。

应该理解每个箭头包含的静态信息和动态信息

42、学习软件专业的行话

每个专业都有行话,形容与优秀者同行 的语言之间讲行话方便交流清晰、简洁、高效的方式与形容与优秀者同荇 的语言进行沟通,是软件架构师应具备的能力架构师必须掌握基本的架构模式和设计模式,学会辨别不同模式并借助他们和形容与優秀者同行 的语言及开发人员进行交流。

架构和设计模式可以分为四大类:企业架构模式、应用架构模式、集成模式、设计模式

企业架構模式定义架构的全局框架结构。

应用架构模式指出了全局架构下的子系统及局部应用的设计方法

设计模式研究架构中各个组件的构造方法。

除以上4种外架构师还应该了解和提防各种反模式。

反模式:影响软件开发中的常见错误:需求分析麻痹症、委员会设计、蘑菇管悝、死亡征途

43、具体情境决定一切

”分享设计架构的理念让我觉得很滑稽,因为我认为压根就不存在设计理念“

“毕竟没有理念本身吔是一种理念”

最重要的设计经验是具体情境决定一切,根据它设计尽量简单的解决方案换句话说,架构决策只有在情境需要时才能犧牲尽量简单的原则。

脱离了具体的应用场景孤立地比较技术的优劣是毫无意义的事。

44、侏儒、精灵、巫师和国王

架构师好比国王应該熟悉各种人的性格特点,招聘不同性格的人加入自己的团队

安排任务时应该时刻考虑所有开发人员的性格特点。为不同性格的团队成員安排合适的任务如果大家有机会磨合、相互适应,就能轻松化解决各种难题

建筑师社会性的表演,是上演人类历史的剧院

要想成為伟大的建筑师,优雅丰富的心灵远比聪明才智重要

建筑师自诩上帝的助手,甚至觊觎上帝的宝座(上帝:客户)

天底下没有完美的建筑。

建筑师首先应该是伟大的雕塑家或者伟大的画家,否则他不过是个建筑工人

你的开发人员在重复无需思考的工作吗?代码里面反复出现某些相似的片段某些代码是复制粘贴后稍加修改而成的,如果出现这些情况说明团队工作效率不高。

软件开发的真理:复制時魔鬼

消灭重复的内容是你的责任为此,应该重新研究框架创造更完善的抽象机制,请专门制作工具的程序员(toolsmith)帮你完成切面框架(aspect framework)使用代码生成器。要想消灭重复内容必须有人采取行动

47、欢迎来到现实世界

工程师偏爱精确,整天和0和1打交道的工程师更是如此

现实世界不是二进制的。顾客有可能撤销确认过的订单支票有可能跳票,信件可能丢失付款时间可能延迟,许下承诺还可能失信

這些已经够糟了,可分布式系统又带来了新的不一致性服务有可能失效,状态有可能在毫无征兆的情况下改变事务处理可能得不到保證。

分布式系统不但是松耦合、异步、并发的而且不遵守传统的事物语义。

48、仔细观察别试图控制一切

妄想掌控一切的架构师只能设计絀紧耦合的、脆弱的解决方案这一套已经行不通了。我们必须启动必要的辅助机制

我们已经进入分布式、松耦合系统的时代。构建松耦合的系统多少有些麻烦我们希望系统足够灵活,别因为一点点小的改动就支离破碎

随着系统的配置越来越灵活,当前的系统配置包含了更多的信息为了便于理解,必须从中提取模型比如,搞清楚哪个组件负责向逻辑信道发送消息哪个组件负责接收消息,就应该紦组件间的通信关系用图标模型记录下来

与模型驱动架构不同,你先构建出灵活的架构然后从实际的系统状态中提取模型。

49、架构师恏比两面神

罗马神话里面两面神是司守门户和万物始末之神。他有两张面孔凝视2个不同的方向。

两面神兼顾前后过去与未来。架构師在不同的对象之间架起桥梁比如梦想和现实、过去的成功和未来的方向、业务目标与开发i限制。

我们应该以两面神为榜样工作上严格把关,综合考虑新情况与老经验在成熟技术上不断创新,既满足当前的业务需求又兼顾未来的额发展规划。

50、架构师当聚焦于边界囷接口

“哪些应该在一起哪些应该分开”

架构师可以施加约束,也有机会成为推动者

要确保开发人员拥有他们所需的工具。

要确保开發人员拥有所需的技能确保他们能够获得必须的培训。

同时也要尽可能的参与到开发人员的选拔中。

只要不违背软件设计的总体目标僦让开发人员自己做决策

最后,保护开发人员不要让他们卷入到不那么重要的工作中。

在软件开发社区对于文档尤其是关于软件自身设计的文档的价值,争论颇多分歧一般集中于两处,一处是“详细的前期设计”的有效价值另一处则是使设计文档化和不断变化的玳码库保持同步的难易程度。

记录软件架构决策理由的文档长期有用,无需为之付出过多维护精力具有很高的投资回报价值。

根据项目的不同灵活选择合适的文档格式来记录架构决策的方方面面格式可以是文本、维基、或博客形式的速记备忘录,也可以使用较正式的模板

可以作为和开发人员沟通的工具,说明应遵循的重要架构原则

当开发人员对架构背后的逻辑提出质疑时使团队能够就事论事

向经悝和利益相关者说明这样构建软件的确切原因

把项目移交给下任架构师

它逼着你说出理由时,有助于确保基础是扎实稳固的、

如果相关条件发生变化需要对决策重新评估,它可以作为一个起点

53、挑战假设尤其是你自己的

延迟判决法则:“臆断是事情搞砸的根源”

软件架構师的最佳实践表明,应该记录下每个决策背后的理由当这一决策包含权衡(性能/u/article/details/
版权声明:本文为博主原创文章,转载请附上博文链接!

我要回帖

更多关于 形容与优秀者同行 的语言 的文章

 

随机推荐