架构师素养

       上一篇聊到了软件架构的基本属性,本篇聊聊架构的建立者:架构师。架构师这个角色在任何软件开发项目中都是最有挑战性的。架构师是项目中的技术领导,承担着技术成功或失败的责任。
       做为项目的技术领导,架构师必须拥有更广而不是更深的技能(虽然架构师们在某些特定的领域应该拥有高深的技能)。
1.架构师是技术领导
       首先,架构师是技术领导,这意味着架构师除了拥有专门的技能外,还必须拥有领导才能。领导能力即体如今组织中的职位上,也体如今架构师展现的品质上。
       在组织的职位上,架构师是项目中的技术领导,应该拥有技术决策的权威。另外一方面,项目经理更关注于管理在资源、进度和成本方面的项目计划。
       架构师也应该参与到决定如何组建团队中来,由于这种架构意味着须要特定的技能。架构元素之间的依赖会影响任务的前后顺序及这些技术所须要的时间,因此,架构师应积极为编制活动计划出力。因为架构师的成功与团队的素质紧密相关,因此参与团队新成员面试也是架构师必需要作的。
       架构师展现品质方面,领导力也能够在与团队成员的交流中展现出来。特别强调,架构师应该为他人树立榜样并在指定方向方面表示出自信成功的架构师是以人为向导的,全部的架构师都应花时间培训他的团队成员。这种方式有益于团队成员处理问题、有益于项目、最终有益于组织自己,由于某些最有价值的资源(人)变的更有技能。
       另外,架构师必须很是关注交付的实际结果并必须做为项目在技术方面的驱动力。架构师必须可以进行决策并确保这些决策被传达、理解并最终被执行。
2.架构师的角色可能由一个团队来担当
        角色和人是存在差别的。一我的可能担当多个角色,而一个角色也可能有多人担当。因为架构师须要很是普遍的技能,因此,架构师角色一般由多我的担当。这种方式容许技能分布于几我的,每一个人都充分运用它们的经验。理解业务领域和各个方面技术所必须的技能,每每有几我的才能很好的覆盖。固然,架构师团队必须平衡。
       若是架构师团队由一个团队担当,那么拥有一个首席架构师就显得很重要,他应具备先见之明,是团队的单点协调人。若是缺少这个协调人,架构团队成员创造出内聚的架构,或者做出决策是有难度的。
       优秀的架构师们了解本身的优缺点。不管架构师团队是否有一个团队来担当,架构师都有好几个可信的顾问支持。这样的架构师认可他们的弱点,并经过得到必须的技能或经过与其余人一块儿工做来弥补他们知识的缺陷进而弥补这些弱点。最优秀的架构一般由一个团队来担当而不是我的,由于当有多人参与进来时见识更广更深。
       架构团队存在一个缺陷是,它可能被理解成一个象牙塔,它的产出仅仅是为了显示智力而不是实用。经过确保和所用的利益相关者积极地商议、对架构及其价值进行讨论,以及确保考虑任何有影响的组织政策,这个误解能够从一开始就减到最小。
3.架构师理解软件工程
       大部分的架构师都担任过开发人员,都很是了解定义并承认项目中使用的最佳实践的必要性。最明确的是,架构师应该了解软件工程流程,由于这个流程确保团队能协调工做。
       这种协调性能够经过定义涉及的角色、从事的任务、建立的工做产品、不一样角色之间的移交点来得到。在平常工做中架构师会影响许多团队成员,理解团队成员的角色和职责,理解他们正在生产使用的东西。这点对于架构师来讲很是重要。实质上,团队成员但愿架构师可以指导他们如何完成他们的职责,架构师必须可以和团队遵循的软件工程流程一致的方式做出反应。
4.架构师掌握业务领域的知识
        除了掌握软件开发技术以外,还很是指望架构师理解业务领域,以便他们可以担任利益相关者和用户及开发团队之间的中间人。
       业务领域也使得架构师更好得理解系统的需求,还能确保捕获恰当的需求。此外,一个特定领域一般与能应用到这个解决方案中的特定架构模型组相关,知道这个对照关系能够极大帮助架构师。
       所以,一个优秀的架构师一般须要平衡掌握软件开发知识和业务领域知识。当架构师理解软件开发知识但不理解业务模型时,可能会开发一个不知足需求但反应这种架构师所熟悉内容的解决方案,通常这种解决方案意义不大。
       熟悉业务领域也使得架构师可以预见他们的架构所须要做出的改变。既然架构受其部署环境影响大,对业务领域的正确认识是的架构师可以在可能改变的区域和稳定性做出更全面的决策。
5.架构师掌握技术知识
       架构设计的某些方面明确须要技术知识,因此,一个架构师应该拥有必定程度的技术技能。然而架构师没必要是一个技术专家,但他必须关注技术的重要因素,不是细节。架构师须要理解一些技术框架,好比分布式技术、消息控件技术、大数据技术等,能够不深刻其细节,但架构师须要了解其基本框架以及能解决的问题,这能帮助架构师做出更好的技术决策。
6.架构师掌握设计技能
       虽然架构设计没有局限于设计,可是很明显设计师架构设计的核心方面。架构使关键设计决策具体化,所以架构师应该拥有很强的设计能力。关键设计决策能够指关键结构设计决策、特定模型的选择、指导规格说明书等。为了保证系统结构的完整性,这些元素被表明性地普遍应用并对系统取得成功产生深远的影响。所以,这样的元素应该由拥有适当技能的人识别出来。
7.架构师具有编程能力
       项目中的开发人员是架构师必须与其打交道的最重要的团队成员。毕竟,他们的工做产品最终交付生产用的可执行软件。只有当架构师认可开发人员的工做价值时,在架构师和开发人员之间的沟通才是有效的。所以,架构师应该具备必定的编程能力,即便他们在项目中没必要写代码,也必须跟上技术更新的脚步。
       大部分红功的架构师都是曾经的核心编程人员。在某种程度上,他们就是经过这段经历了解到他们业务的某些状况。甚至当技术发展和引入新的编程语言时,优秀的架构师能够抽象出任何语言中的概念并应用这些知识对新的语言了解到必要的程度。若是没有这些知识及对于实现过程当中架构上的重要元素,架构师将不能进行决策,在架构师和开发人员之间的沟通将会存在障碍。
8.架构师是优秀的沟通人员
       在架构师相关的软技能中沟通最重要。有效的沟通设计到各个方面,架构师必须全面精通。尤为是架构师应该拥有有效的口头、书面及表达技巧。一样,沟通应是双向的。架构师应是优秀的聆听者和观察者。
       有效的沟通是项目成功的基础。与利益相关者沟通对于理解他们的需求及与他们就架构达成一致来讲很是重要。与项目团队沟通尤为如此,由于架构师不是简单地负责把信息传递给团队,还要激发团队。架构师负责传达系统的愿景,以便这个愿景为你们所共享,而不是只有架构师理解并相信。
9.架构师进行决策
       在许多状况不清楚、没有充足时间探究全部的可能性,以及存在交付压力的环境中不能决策的架构师不太可能工做下去。不幸的是这样的环境还常见而不是例外,成功的架构师认可这个情形而不是设法改变。即便架构师在决策时咨询其余人并营造其余人共同参与决策的一个环境,进行适当决策仍然是架构师的职责,而这个决策不老是正确的,所以架构师必须是厚脸皮的,由于他们可能必须纠正他们的决策并原路返回。
       没有进行决策的能力将慢慢破坏项目,项目团队将会对架构师失去信心,项目经理将会担忧,由于这些等待架构师决策的事项没有进展,更有甚者,若是架构师没有制定关于架构的决策及编写成文档,团队成员会制定他们本身的决策,使项目更加不可控。
10.架构师知道组织政策
       成功的架构师不只仅关心技术,他们还对政治敏感并知道在组织红的权利。他们利用这些知识确保与人恰当沟通,确保在项目的周期中得到支持。忽视组织政策是天真的。
       组织中起做用的许多强制约束位于项目交付的系统以外,而这些约束必须考虑。
11.架构师是谈判专家
       对于架构设计的许多方面,架构师须要与许多利益相关者进行沟通交流。其中一些交流须要谈判技巧。架构师特别关注的一点是在项目中尽量早地把风险减到最小,由于把风险减到最小对稳定架构所花的时间有直接的影响。由于风险与需求有关,消除风险的一个途径是精炼需求以便这种需求再也不出现,所以必须回退需求以便利益相关者和架构师达成。这种情形要求架构师是一位有效的谈判专家,可以清晰明白地表名不一样折中的结果。
总结
       以上就是做为一位架构师应具备的能力及素质,聪明的您能够逐一对照一下,哪些是缺失的哪些是须要增强的。好的,本次架构分享就到这里,感谢关注。web