引子
“架构就是处理一些重要工作,不过鬼知道那是些什么。” — Ralph Johnson
架构师(Architect)应该是一个很有份量而又饱尝尊敬的职位。每当听到某某是某公司的架构师时,会不会有一种肃然起敬的感觉?在群众看来,架构师一般跟体系规划、技能实力、领导力、影响力有着密切联系。也正是这个原因,企业中很多架构师的岗位都是由经历丰厚、技能才能厚实的资深软件工程师担任。然而,软件行业关于架构师的定义,其实并不明确:亚马逊、阿里云之类的云服务商有自己的架构师团队,不过大多是顶着架构师的名头进行客户售后服务而已;在某企业里的架构师,无外乎就是使用自己的丰厚经历和过硬实力,来处理技能难题,相当于资深软件工程师。这些都跟咱们心目中的规划高大上架构图的、一窍不通的架构师,有很大不同。
本文中所指代的架构师相关概念,首要来自于最近阅读的一本书《软件架构根底》(英文名:Fundamentals of Software Architecture,作者 Mark Richards、Neal Ford)。本篇文章会简单介绍更具实用意义上的架构师需求做什么,以及相关的必备技能。
总工程师
架构师首先是整个软件项目中的总工程师,需求对软件工程的全体规划、实施、质量负责。因而,关于软件架构师来说,其需求具有优秀的编程技能,了解软件项目开发流程,以及在各种技能范畴具备必定的广度和深度。不仅如此,由于架构师是技能侧的总负责人,他(或她)一般需求站在体系的全体角度,来考虑各个模块之间是如何交互的,功能服务的区分是否合理,整个体系的瓶颈会在哪里,等等。而这些,都是技能层面的东西。
当一个软件工程师经手了很多大大小小的项目之后,都应该会对软件工程以及架构有一些深刻了解,再加上一些体系学习,应该都能够有成为架构师的资质。因而,单从技能层面来看,软件架构师相当于资深的软件工程师。
架构图是否重要?
咱们或许都或多或少看过架构师们画的林林总总的架构图:分层式架构图、物理网络拓扑图、流程示意图、交互逻辑图,等等。但要答复架构图是否重要的问题,咱们需求稍微了解一下为什么需求架构图。架构图首要意图,是协助对内部工程师或外部技能人员快速了解其间包含的体系模块信息。因而,那些看似酷炫、专业、赏心悦意图架构图,假如缺少内涵,对协助了解来说不必定有协助。反倒是简洁、明晰、易了解的架构图,即使看起来很丑,关于软件开发者来说也协助巨大。因而,架构图是重要的,但首要意图是明晰简洁的展现体系模块信息。
不仅仅是技能
前面说过,架构师作为软件工程的总工程师,会承当技能侧的责任。可是实际当中,很少有只聚焦于技能层面工作的架构师,或许至少只通晓技能方面技能而能在项目中挥洒自如的架构师。成功的架构师、或许具有影响力的架构师,至少需求具有良好的领导力或团队办理才能。
《软件架构根底中》中关于架构师的 8 项技能要求列表中,有一半跟技能不直接相关。咱们来看一下这本书提及的技能和非技能要求。
-
技能要求
- 架构决议计划才能
- 架构持续剖析优化
- 前沿技能更新同步
- 技能知识广泛涉猎
-
非技能要求
- 企业合规性考虑
- 业务范畴知识
- 人际交往才能
- 政治敏感性
你可能会惊讶于后半部分对架构师的非技能要求,例如为什么架构师需求考虑政治?笔者在之前做单纯的技能人员时也不明白,但随着项目经历不断堆集,直至自己也成为项目办理者之后,才发现企业中的很多架构决议计划不单来自于架构自身的技能合理性,而是跟企业政治有关。这儿说的政治不是传统意义上的官僚主义,而更多的是指代各部分之间协作或竞赛关系;特别是当企业规模非常大时,这种考虑犹为重要。限于篇幅原因,这儿不细说,后边有机会能够独自聊一聊。
不断精进
可惜的是,不少从工程师选拔起来的架构师,仍是在技能范畴不断钻研,而忽视了非技能的东西。因而,本篇文章所着重的观念,就是架构师的责任和要求绝对不只是技能和架构自身,而需求考虑更多非技能方面的技巧和经历堆集。例如,如安在合规性、资源、开发效率之中作出平衡;自己负责的软件项目,对公司供给什么商业价值,会对业务形成什么影响;如何向非技能人员(特别是老板)解释专业术语;面临外部部分不合作的状况,如何从中周旋,保证项目顺利进行。诸如此类的问题都需求非技能技巧和经历,而想要在职业道路上更进一步的架构师,或许更需求考虑这些。跨出自己的舒适圈,才能有效开端学习和成长。
社区
假如您对笔者的文章感兴趣,能够加笔者微信 tikazyq1 并注明 “码之道”,笔者会将你拉入 “码之道” 沟通群。
本篇文章英文版同步发布在 Medium,技能共享无国界,欢迎大佬们点拨。