让开发人员自己做主 
      架构师虽然需要为系统的设计负责,但无须包揽所有的设计工作,应该给予团队成员足够的自主权,让他们发挥自己的创意和能力,你的工作是确保大家的工作能很好的组合在一起,帮助他人解决棘手困难。当你发现同事遇到麻烦时,可以主动给出建议,但更可取的做法是创造良好的氛围,让大家主动向你征求意见。

控制项目规模 
      架构师要试图避免做那种“超大型”系统,因为这种系统往往难以控制,控制项目规模的办法通常有:

  • 抓住真正需求
  • 分而治之
  • 设置优先级
  • 尽快交付原则
  • 架构师不是演员,而是管家

有些架构师误解了证明自己价值的含义,以为是炫耀技术才华,甚至是刁难开发团队,把自己放在高高在上的位子,试图让别人来崇拜你。其实架构师的职责和管家类似,承担着管理技术资产的责任,要深入了解系统里各个细节,要精打细算,而不是浮在表面做无实文章。

关注性能 
      高性能往往和代码优美性常常没法兼容,有些架构师往往不在乎性能上的点滴损耗,为了代码更重用或更优美,不惜多查一次数据库,多与外系统交互一次,这种做法会让后期的性能提升很被动,性能压力会逼迫你打破原有的设计,为提升性能把代码搞得支离破碎。架构师需要珍惜任何一点的性能损耗。

对复杂性要有前瞻意识 
      在实际的运行环境中,往往简单的系统都有可能变得非常复杂,简单的远程接口可能调不通、稳固的数据库可能down掉、消息顺序可能会错乱、服务器可能会无缘无故地down机,不要假设这些情况不会发生,架构师应该对复杂的情况有前瞻意识,要在假设类似于前面的状态存在的情况下设计软件。

关注边界和接口 
      任何系统或模块的边界和接口都是与外交互的门面,有交互就暗藏着误解和不恰当的划分,保持接口的顺畅交互是架构师的重要职责。往往bug发生在模块与模块之间、系统与系统之间,项目的失败也往往因为系统间交互问题,因此架构师需要给予足够的关注。

助力开发人员 
      架构师的完美设计需要开发人员是实现,因此有义务想办法提升开发团队的战斗力,常有以下方式:

  • 寻找或开发工作需要的工具,并附上使用技巧
  • 做定期的分享或提高团队学习气氛,保持团队技术上的先进性
  • 参与开发团队的招聘工作
  • 给予开发人员更多的决策空间,帮助其成长
  • 保护好开发人员,让他们尽可能地免于杂事之中
  • 直接参与开发,分担压力
  • 记录决策的理由

架构师常常需要权衡和决策,但决策过后却没有把决策的过程和理由记录下来,其实这是在浪费很大的一笔财富。

质疑假设 
      架构师往往需要假设一种情境,然后在这种情境下给出方案和做出决策,很多人包括自己从来都是纠结于这个方案的优劣,并不断改进,但却忽视了这种假设的情境是否成立,而这个可能是万恶之源。

关注系统的支持和维护 
      架构师通常是由开发人员成长而来,因此天然地把注意力放在功能开发上,常常忽视系统的支持和维护方面,给支持人员和维护人员造成不便。架构师需要清晰知道一个系统生命周期80%在于维护上面,而系统的价值需要支持人员去不断传递给客户,他们的需求需要得到重视。有以下几点需要注意:

  • 清晰性
  • 可测性
  • 正确性
  • 可跟踪性
  • 不要急于求解

很多架构师都有解决难题的欲望,一遇到问题,就立马陷入解决问题的泥潭中。而更可取的做法是审视问题本身,看是否可以改变问题,或是干脆绕开问题,很多时候技术上的难题在通过业务上的优化是可以避免的。我们不要立足点设为解决特定问题,而是应该立足于客户需求。

优秀软件是培育出来的 
      很多架构师需要在软件的第一版本就一鸣惊人,拿出完美的作品,其实真正受欢迎的系统是在不断发布中演化而来,对于互联网软件更是如此。架构师需要做的是打好系统的基础,使其容易修改和扩展,倾听用户的反馈,不断地在无数次改进中培育我们的软件。

【转载】架构师的行为准则(三)相关推荐

  1. 图片存储架构学习:缓存,架构师的美丽小三(一)

    转自:http://www.itivy.com/ivy/archive/2012/2/18/image-storage-cache-1.html 版权声明:非商业自由转载,保留原文内容完整性,并署名作 ...

  2. 前端架构师神技,三招统一团队代码风格

    本文从代码规范,代码检查,代码格式化,以及编辑器自动化实现的方向,介绍代码规范统一在我们团队的实践应用. 大纲预览 本文介绍的内容包括以下方面: 认识代码规范 制定和统一规范 神技一:ESLint 神 ...

  3. 架构师的行为准则(一)

    最近看了一本书<软件架构师应该知道的97件事>,本来并没对它抱有太多期望和兴趣,毕竟这种讲大道理的书不可能带来什么实际收获,但看的过程中被里面中肯实在的建议给吸引,对于我这种在走向架构师这 ...

  4. 架构师的行为准则(四)

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

  5. 系统架构师—软件架构设计(三)

    软件架构评估 质量属性 1.性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数. 如响应时间.吞吐量. 设计策略:优先级队列.增加计算资源.减少计 ...

  6. 2015年系统架构师考试题详解

    原文地址为: 2015年系统架构师考试题详解 考试科目一:综合知识 某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,-,n)管理机票销售.假设Tj(j=1,2,-, ...

  7. 2011年系统架构师考试题详解

    原文地址为: 2011年系统架构师考试题详解 考试科目一:综合知识 操作系统为用户提供了两类接口:操作一级和程序控制一级的接口,以下不属于操作一级的接口是(1). (1)A.操作控制命令 B.系统调用 ...

  8. 如何成为一名高薪架构师?

    对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 今天,100offer从架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来 ...

  9. 一个测试人员如何变成测试架构师

    测试架构师必须具备的第一个能力:"准确的商业理解力." 了解自己所在公司测试架构师团队的运作和工作内容,虽然我们之前也从未接触过微软的测试架构师.但随着公司业务的扩大,业务的需要驱 ...

  10. 这群人学做AI架构师,目标却是让人们感知不到AI的存在

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在手机上刷脸.刷指纹已成为日常生活的一部分,太过寻常以至于会忘记背后是AI在发挥作用. 接下来将被"开除AI籍"的,大概 ...

最新文章

  1. Qt+VS2013编译报错:'cl' 不是内部或外部命令,也不是可运行的程序
  2. 大数据WEB阶段(十六)JavaEE三大 核心技术之监听器Listener
  3. 【Mac】tar 打包指定目录并排除某些目录或文件
  4. python -- lambda表达式
  5. 弹出模态窗口,关闭并刷新页面
  6. python 单位根检验代码_python时间序列分析
  7. 【MyBatis笔记】05-传统开发模式DAO
  8. 0927_C/C++笔试题_10:16道c语言面试例子【2】
  9. java什么是构造方法
  10. spring mvc异步操作处理,注解方式
  11. RFID 工作频率的分类
  12. RK3399平台开发系列讲解(USB设备驱动)5.31、使用usb gadget configfs配置USB功能
  13. 企业网站建设教程:自己怎么建网站,做网站的步骤有哪些
  14. 如何更好的提问-在提问之前试试Stack Overflow、小黄鸭调试法
  15. markdown数学公式编辑指令大全
  16. CH340G的调试过程
  17. 史上最详细:word文档怎么在第三页插入页码,只要7步
  18. markdown从VSCode中导出为PDF时字体格式问题
  19. Arch Linux Arm 安装Yaourt
  20. 矩阵的转置与矩阵的逆

热门文章

  1. allennlp train 参数
  2. 感受野,以及为什么神经网络可以分清猫是猫,狗是狗的直观理解
  3. android中listview没有item也能点击事件,ListView中的Item不能点击的解决方法
  4. mysql 存储过程 out list_MySQL存储过程中的IN,OUT,INOUT类型 用法
  5. python计算机视觉库_荐 python计算机视觉入门
  6. myeclipse导入项目中文乱码_建立一个可烧录的空项目
  7. RxJS修炼之 用弹珠测试学习RxJS
  8. 转: Nginx proxy讲解精华文章集
  9. Struts2返回JSON数据的具体应用范例
  10. Matlab设置字体大小