软件架构师需要具备的技能 - Abeysinghe


在过去的二十年中,技术和软件开发方法迅速变化。尽管如此,软件架构师的重要性却越来越高。即使在当今的敏捷文化中,架构师在自治团队中也起着至关重要的作用。
这篇文章是关于架构师的特征和开发所需的技能。当然,成为一名成功的架构师可能还需要许多额外的技能,但我会从我的优先级列表中强调一些。
大多数架构图和规范在设计上都很复杂。架构师通过认为复杂性证明了他们的能力来通过设计来做到这一点。然而,情况恰恰相反——复杂的架构无助于软件开发。架构必须逐步构建,以便让刚接触问题空间的人能够轻松理解。
我使用一种叫做levels的技术,从level 0开始逐步构建系统。在大多数情况下,L0 是箱形图,L1 是解决方案图,L2 是技术和供应商产品。这种方法有助于解释复杂的问题并将它们分解为模块。阅读的人确实容易理解,因为架构层层构建。

视觉思维:
架构师是视觉的,因此交流和分享想法的最佳方式是使用图形模型。为此,架构师必须是视觉思考者。例如,每当架构师聚集时,他们都会使用白板、记事本,更糟糕的是,他们会使用餐巾纸。视觉思维必须使用架构友好的符号来映射和交付,范围从块、流程图、序列、UML 到非标准。

我十几岁的时候就开始画漫画,我最喜欢的角色是 Fido dido。在我的大学生活中,我曾经使用视觉效果做简短的笔记来记忆课程。当我作为一名软件专业人士进入这个行业后,我开始用涂鸦来表达我的想法。
 
技术绘图:
为了表现视觉思维,建筑师必须绘制——不是艺术,而是技术图表。因此建筑师必须掌握技术绘图。技术绘图技能可帮助建筑师绘制几何图、利用间距并提高可读性。此外,创建包含配色方案和图标库的媒体工具包对于一致性和真实性至关重要。

我在高中时学习了技术制图,作为金属制品学科的一部分——使用技术(手工)制图制作各种物品的许多模型。然后,作为一名软件架构师,我掌握了技术绘图来呈现架构图。根据我的图表质量,许多同事问我使用的是什么工具。(这不是工具;这是思维模式)。我使用OmniGraffle已有十多年了,我喜欢 Omni 作为技术绘图工具。
 

系统思维:
架构涉及解决复杂问题;因此,架构师必须掌握系统思维。此外,架构师应该对系统有一个整体的看法,以设计和实现结果和目标。系统思维是这方面的基础。架构师必须着眼于全局,同时查看组装系统的每个组件的细节。

我着眼于系统架构师如何帮助改善人类生活,这让我能够看到整体观点并开始应用系统思维。将企业视为一个复杂的自适应系统 (CAS) 有助于我了解超越技术的架构。
 

市场前景:
架构师必须密切关注行业中正在发生的事情——技术进步、模式和实践的引入。这样,他们可以应用相同的方法并构建最准确的架构蓝图,可以立即产生价值和未来的证明。
跟上科技行业的快速发展具有挑战性,但成功的架构师无法逃脱的。我关注 Twitter 和 LinkedIn 中的大多数思想领袖,订阅好的新闻通讯,活跃于技术论坛,参加技术活动并观看点播视频,尽可能多地阅读书籍和文章。最后但并非最不重要的一点是,尝试通过在我的领域中选择科目来进行教学。
 

沟通:
架构师将业务和技术团队联系起来,并与技术人员交谈——架构师是策展人。Gregor Hohpe将其解释为架构师乘坐组织的电梯并连接顶层公寓和机房。架构师应该简化复杂的系统并向其他人解释它们。沟通包括口头、书面和视觉渠道。
在担任核心架构角色近二十年后,掌握沟通使我成为一名技术布道者。指导和教授他人、参与各种营销活动以及担任解决方案架构和分析师关系等面向外部的技术角色等活动帮助我培养了所需的沟通技巧。
 
实施:
一些架构师如只关注沟通这一点。结果,他们成为了理论或 PowerPoint 架构师。因此,关注实现细节并致力于相同的工作有助于克服这种情况。敏捷开发和自治团队为架构师提供了一个很好的框架,可以让他们参与开发人员并为软件开发做出贡献。架构师必须通过编码和使用支持技术处理各种配置来弄脏自己的手。

拥有架构师的头衔,我参与了许多编码活动。爱立信的第一个 MMS 应用程序、移动支付、具有核心银行系统的 ATM 自动化、模块化中间件平台的事件处理以及 FIX 和 HL7 等业务通信协议都是一些例子。然而,在转向面向外部的技术角色之后,我并没有放弃编码。我通过添加更多演示所需的产品示例、扩展点和用例来做出贡献。我在晚上预订了一个小时的编码(代码小时),我用它来破解这些编码任务,同时教我的孩子 编码。