资深架构师十年总结:成为架构师,你必须具备这五点能力

作者|AlanTai
译者|冬雨
策划|闫园园
在过去的20年里 , 作为一名软件工程师和软件架构师 , 我与不同领域和不同学科的软件工程师聊过很多次 。 他们中有一些人是有着8到10年经验的高级工程师 , 有许多人还在职业生涯早期 , 有着3到5年的经验 。 其中一些人是我的同事 。 有些人是求职者 。 聊到最后 , 他们几乎都会问到同样一个问题:
“我想成为一名解决方案架构师 。 了解更多架构相关内容的资源有哪些?“——很多软件工程师都会问的一个问题 。
他们问错了问题 。 如果你读下去 , 就会知道为什么我这么说 。 此外 , 撰写本文时我的公司正在招聘首席软件架构师 , 所以我正好解释一下什么是软件架构师以及如何成为一名软件架构师 。
1
什么是软件架构?
首先什么是软件架构?提到软件架构师这个头衔 , 就经常听到拿建筑的架构与之作比 。 建筑架构师设计建筑的蓝图 。 工程师们将其实体按照该蓝图建造起来 。 我认为从很多方面来看 , 这都是一个糟糕的类比 。
建筑的类比使人们过于关注系统的静态面 。 在这方面 , 城市建设是一个更好的类比 , 因为它既包括道路、建筑和桥梁等静态元素 , 也包括交通流量和城市居民等动态元素 。 城市架构师提出城市设计 , 制定计划来安排如何建设城市以及如何将所有东西组合在一起 。 最后但并非最不重要的是 , 城市架构师有一个城市将如何发展的愿景 。 但是软件架构还不仅如此 。 有时软件架构师需要放大或缩小”城市“ , 以确保计划可行 。 架构师可能不会太关心建筑的室内设计 , 而把重点放在决定在哪里放置红绿灯上 。 架构师需要广泛且深厚的技术知识 , 才能构建像城市一样复杂的软件 。 架构师还需要在不涉及所有技术细节的情况下向业务涉众传递一致的消息 。
建筑架构的类比意味着架构师是团队中最资深的人 , 他做出所有关键的决定 , 预先创建设计规范 , 然后在实现过程中执行设计 。 起初 , 在很多人看来 , 成为那个最有经验的人 , 达到技术级别的顶端 , 是一件很酷的事情 。 让整个团队都听你的 , 服从你的命令和决定 , 可能会让你感觉好极了 。 但是 , 你再好好想想 , 这给了架构师一定要做出正确决策的巨大压力 , 而这在项目的早期阶段通常是不太可能的 。 在敏捷团队中 , 这意味着开发团队不是自组织的 , 架构师成了团队变得敏捷的障碍 。 架构师剥夺了团队的所有自主权 。 谁愿意在如此高的压力下担任这样的职位?
软件架构的角色
软件架构可以被视为位于业务目标和支持业务以满足这些目标的软件系统之间的中心 。
资深架构师十年总结:成为架构师,你必须具备这五点能力
文章图片
软件架构的角色
软件架构用于满足业务目标 。 它是基于要实现的业务目标而设计的 。 然后 , 按照设计实现软件系统 , 使其遵从设计 。 这应该是一个迭代过程 。 正如我前面提到的 , 在项目的早期阶段通常不可能做出正确的决定 。 最好的决定是你仍然不必决定的决定 。 架构师将创建刚好能够满足业务需求的设计 。 这就关闭了反馈循环 , 就像你在敏捷和DevOps实践中看到的一样 。 这里的想法是 , 随着世界的变化 , 业务需求也会变化 , 软件架构应该随需求演变以支持业务接受变更 。
软件架构”能力“
软件架构是一个非常具有挑战性的话题 , 您必须设计一个同时满足所有业务需求和所有质量属性的系统 。 这几乎不可能一个人完成 , 通常是架构师和领域专家团队合作的结果 。