`
izuoyan
  • 浏览: 8937493 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

架构师的行为准则(四)

阅读更多

原则大于个人口味

很多架构师都有着丰富的经验和个人风格,以至于在平常工作中常以个人口味作为决策的依据,对于普通的开发人员也许是可行的,我们鼓励大家有个人特色,但架构师更应该依据原则办事,需要维护和遵守一套大家公认的原则,以此作为判断是非的工具

从“可行走骨架”开始

敏捷管理崇尚尽早集成,在架构设计这一块,这个原则也行之有效。架构师在开始阶段无需陷入某些难题或细节里,应该尽快地把各个核心模块串接起来,并能发动开发人员使其简单地运转起来,骨架一旦就绪,再进入健身环节。这样做的好处,一方面可以尽早消除大家之间的误解,也可以带来正朝着正确方向前进的信心

数据是核心

数据为王是大家深知的道理,只要这个系统拥有有价值的数据,那么这个系统就有生命力。架构设计中,数据无小事,任何数据只要是存在于系统中,就需要给予足够的重视,也许是个废弃的字段,但它也许会有一天被人错误的引用到,或是时不时地遭到别人的询问是干嘛用的。

根据投资回报率进行决策

很多架构师认为计算和分配资源是PM要做的事情,与自己无关,自己要做的是设计最优的系统。其实,这个最优不光是技术上的最优,往往在实际项目中大家所关注的是投资回报率最优,老板想用最少的投资获取符合需求的产品, PM想用最少的人力发布项目,开发人员想用少的代码完成功能等等,作为架构师应该把投入产出比作为决策的一个重要因素

起码有两个可选解决方案

一个经验丰富的架构师会对一些关键的问题给出多个解决方案,并能分析其优缺点,并最后一般取舍之后做出选择,这是一种令人信服的说明问题和解决问题的方式。

不能不了解硬件

软件架构师常常无法正确考虑硬件因素,有多种原因,但大多和缺乏硬件的了解脱离不了干系。最好的解决办法是加强与基础设施架构师合作,共同对架构和设计进行评估

架构无小事

很多系统建设初期的琐碎事情在架构师看来是些小事情,比如单元测试、多余的库依赖、版本号的升级、开发人员不合理的代码风格等等,这些事情不给于重视尽早解决,会在将来的某天去解决会需要数倍的成本,有效率的架构师会尽早解决这些“小事”

警惕新技术,不轻易抛弃老技术

很多架构师包括大部分的开发人员都有新技术的追求倾向,但暗藏在每个新玩意后面的是风险和缺陷,在引入每项新技术之前,需要给予足够的评估,不要只看到它power的一面,更应该熟知其潜在的危害。而对于已接收过现实检验的老技术不要轻易抛弃,可能它存在些缺陷是某些新技术可以取代的,但我们应该更珍惜对它的了解和成熟,更可取的态度是试图去优化它而不是抛弃

拉伸关键维度,发现设计中的不足

架构师或多或少喜欢在理想的情况下设计产品,一旦异常情况发生或数据量超出了当初业务方提出的假设时,架构就漏洞百出。因此设计初期可以适当拉伸关键维度,把运行环境设想得更复杂一点,把需应付的数据量预想更多一些,这样可以发现设计中更多不足

稳定的问题才能产生高质量的解决方案

最好的架构师不是要去解决难题,而是要围绕难题开展工作,要能够将四处弥漫的软件问题圈起来,并画出其中的各种边界,确保对问题有稳定的、完整认识。如果问题是稳定的,那么解决后就永远不会再来麻烦你

对决策负责

有些架构师做出决策后,把事情交给其他开发人员去实施,认为之后的事情与自己无关了,其实做出设计上决策只是解决问题生命周期的最开始阶段,真正对决策负责可以参考做以下方式:

  • 充分认识决策过程。可以采取记录和沟通的方式
  • 定期复审架构决策
  • 贯彻架构决策,全程跟进实施过程
  • 给把决策的权利委托给团队中的专家

偿还技术债务

系统里或多或少会存在一些已识别的缺陷,比如单元测试覆盖率低、可测性差、性能不达标、代码坏味道多等等,架构师常常会视为眼中钉,想一夜之间把它们都消灭掉,其实更应该把它们作为债务,有计划地可控地去偿还,要把握好偿还的时机,这样我们的成本和收益比才会更好

结束语

以上这些行为准则不是拿来背诵的,而是应该融入到日常的工作中,有句话说得好,成功是一种习惯,只有习惯了这些成功实践,才算是真正的成功

分享到:
评论

相关推荐

    高级软件架构师复习提纲

    35、测试的目标包括以下哪些内容:找出所有团队必须解决的缺陷/按照功能规格说明书验证解决方案中的组件/找出设计中的错误/找出由意外的用户行为而产生的错误/测试解决方案中的所有组成部分 36、对于MSF 过程模型的...

    信息架构:超越Web设计(第4版)(全彩).[美]Louis Rosenfeld(带详细书签) PDF 下载 高清 完整版

    √ 领域畅销经典重装再现,北极熊书长期被信息架构师、设计师及网站开发者奉为圣经 √ 新版内容全面更新,关注焦点彻底突破网站,面向更热门更前沿的电子产品与设备 √ 深度剖析IA 要素,包括组织、标签、导航、搜索...

    Java虚拟机规范中文版

    周志明(www.icyfenix.com & weibo.com/icyfenix):远光软件平台开发部部门经理,平台架构师,不愿意脱离编码的一线码农。著有《深入理解Java虚拟机:JVM高级特性与最佳实践》。关注各种Java应用,略懂OSGi、Java...

    java图形图象处理系统设计与实现源码

    该系统适用于美术设计、摄影类职业人员、美工、架构师、开发人员和工程师等人群,使用场景包括:图像编辑处理、特效设计、图形绘制等多种场景。该系统的目标是为上述人群提供一个方便、快捷、高效的图像处理解决方案...

    CloudComparer:比较市场上主要公共云提供商所提供的各种托管云服务

    该项目是开源的,可让其他云架构师,IT专业人员,开发人员随时编辑和更新比较。 贡献 请阅读了解我们的行为准则以及向我们提交拉取请求的过程的详细信息。 s Ilyas_IT83 -最初的工作- 另请参阅参与此项目的列表。...

    jarchitecturecontrol:自动从code.google.compjarchitecturecontrol导出

    框架访问有关架构师提供的规范的代码(命名,属性,关系船),标记代码元素,报告违反规则的行为。 您可以在[ ]中找到导致该项目的需求解决方案分析。 已取得以下进展:||代码分析||确定(仅适用于Maven)|| ||...

    成都市安全服务目录(包括限价)

    安全管理体系落实到四个方面:安全策略、人员与组织、第三方服务、运行维护; 业务系统风险评估 识别业务工作流程,评估业务安全风险,明确业务安全保护需求,将信息资产与业务系统关联后进行综合的评估。按照数据...

    定义领域:高等教育的网络空间之战-研究论文

    鉴于高等教育的独特目的和与市场的历史分离,互联网的早期架构师认为高校拥有自己的在线空间很重要,这体现在域名扩展上,可以同时传达真实性和合法性。 那个空间就是.EDU。 多年来,封闭的 .EDU 扩展名一直是高等...

    asp.net知识库

    体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型...

    《Wicket开发指南一书》PDF版本下载

    (不要忘了,Delphi的创建者Anders Hejlsberg就是.net框架的架构师,所以C#和Asp.net怎么看都带着Delphi的影子。 Wicket目前最新的版本是1.2.2版,已经支持了AJAX,但感觉这个框架的发展时间毕竟还是短了一点,...

    产品经理学习视频

    04.第四阶段:项目实战训练 1从零打造款社区web产品 款web社区产品.mp4 2从零打造款工具app产品 款工具app产品.mp4 3怎么做款O2O互联网产品 款O2O产品.mp4 05.第五阶段:选修课程 1互联网发展和基础 1-我们...

    抚摸人类-研究论文

    行为数据可以而且应该为私人和公共选择架构的设计提供信息。 选择建筑师应该引导人们朝着使他们更好的结果(根据他们自己的兴趣,而不是选择建筑师的利益),但让人们自己选择。 自由主义家长制可以而且应该对选择...

    完整版《HTML5高级程序设计》2

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    完整版《HTML5高级程序设计》4

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    完整版《HTML5高级程序设计》5

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    完整版《HTML5高级程序设计》3

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part5

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part4

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part1

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part2

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

Global site tag (gtag.js) - Google Analytics