软件架构终于解决了其最大的问题:开发人员体验

enter image description here 架构讨论常常迷失于抽象——白板草图无法与现实相提并论,厚厚的文档积攒了数字灰尘,纯粹的理论在实际应用的压力下土崩瓦解。多年来,我在不同规模和行业构建和重建系统,我了解到最成功的架构都有一个关键的共同点:它们被设计成产品,而不是纪念碑。

我实现这一目标的历程始于研究。我获得了塞萨洛尼基亚里士多德大学电气与计算机工程博士学位,专注于优化和协作机器人技术。后来,我探索了人工智能在城市交通管理中的应用。从那时起,我领导了学术界和工业界的软件工作,包括在大陆集团、采埃孚和安波福等汽车行业的公司任职。目前,我在 Meta 担任软件工程经理,负责 Integrity 系统的开发。此前,我曾在阿姆斯特丹的金融科技公司 Backbase 管理团队,为零售和商业客户构建核心银行平台。

这种视角的转变改变了一切。当你把建筑视为一件产品时,你会开始提出不同的问题。你不再问“这优雅吗?”,而是问“这能帮助人们完成工作吗?”你不再追求理论上的完美,而是追求现实世界的成果。

您的架构用户远远超出了工程团队的范围 在我的架构之旅中,最具变革意义的领悟是理解了谁真正与我们设计的系统交互。工程师显然是用户——他们需要清晰的思路、可维护性,以及在不破坏一切的情况下进行更改的信心。但他们只是更广阔生态系统中的一个组成部分。

产品经理依靠架构来实现快速迭代和功能部署,而不会产生过多的协调开销。如果由于三个团队需要协调一个小小的更新而导致他们无法部署,那就是架构问题。设计师和 QA 工程师需要稳定、可预测的界面,以及清晰的边界和可预测的影响。如果一个小小的 UI 调整导致后端一片混乱,那么架构就让他们失望了。

业务利益相关者关注的是速度、价格和可扩展性。他们可能永远不会学习这些技术细节,但当架构使业务增长更容易或更困难时,他们会立即感受到其影响。客户支持团队通过系统的可靠性和可调试性来指导用户进行架构决策。

认识到更大的用户群会改变你做出设计决策的方式。现在,每个设计决策都关乎用户体验: “这将影响谁?它将如何改变他们的日常工作?”

将软件架构视为产品,而不是纪念碑 追求“简洁架构”可能是一个陷阱。我见过一些非常漂亮的系统——完美的分层、出色的抽象、漂亮的类层次结构——但却没人愿意维护。他们遵循了书中所有的最佳实践,但不知何故,那些无关紧要、晦涩难懂的简单更改却变得危险。

相反,我曾经使用过一些所谓的“混乱”系统,但团队却很喜欢,因为他们能够自信地交付功能,优雅地处理边缘情况,并且知道出错时会发生什么。他们牺牲了架构的纯粹性来换取开发人员的生产力,这是值得的。

这并不是鼓励人们抛弃良好的设计实践。结构、关注点分离和简洁的接口仍然至关重要。然而,它们应该为系统使用者的利益服务,而不是为了自身利益。如果架构选择让工作变得更加困难而不是更容易,那么即使方法论在理论上是合理的,也存在问题。

好的架构往往在使用者眼中难以察觉。它们为常见需求提供清晰的解决方案,为异常需求提供合理的替代方案,并具备足够的灵活性,无需彻底改造即可进行扩展。

通过开发人员生产力指标衡量架构的成功 大多数解决方案的仪表盘都充斥着量化用户行为、性能和业务成果的指标。架构也同样值得关注,但它的衡量标准是基于对设计美学的主观论证,而非对有效性的客观评估。

我开始追踪架构健康状况,关注与团队生产力直接相关的问题:部署和发布一个常规功能需要多长时间?需要多少个团队协调进行跨领域变更?系统中看似不相关的部分以未知方式相互影响的频率是多少?工程师在修改重要部件时有多自信?

这些数字胜过千言万语。当部署周期从几天缩短到几小时,当跨团队依赖关系减少,当生产故障发生频率降低且调试更简单时——这些结果比任何设计文档都更能说明架构决策的正确性。

有时即使无法直接测量,信号仍然存在。定期与开发团队进行讨论可以发现痛点、瓶颈以及架构促进或阻碍进展的领域。这些反馈是架构改进优先级排序的关键输入。

构建与业务目标一致的架构路线图 建筑设计并非一次性的、一成不变的决定。它是一个动态的系统,要么有意地演进,要么无意地退化。与任何产品一样,它受益于深思熟虑的规划和对未来需求的战略性思考。

将架构规划分解为三个层面是有效的。“现在”阶段解决的是近期的障碍——当前正在积极阻碍团队的架构债务。这些通常可以快速奏效,快速缓解压力,并为更重大的变革积蓄动力。

“后续”问题并非时间敏感,但如果不解决,就会造成严重影响。这些问题可能是随着流量增加而出现的扩展瓶颈,也可能是随着代码库扩展而导致解决成本更高的结构性问题。

“以后”指的是明智地押注未来的需求。这意味着你押注的是业务规模、范围或方向后续变化的灵活性。这类押注风险较高,但一旦正确,就能获得丰厚回报。

明智的做法是将架构路线图与产品和业务路线图保持一致。当架构改进与业务目标(例如更快的功能交付、更高的可靠性以及更低的运营成本)高度相关时,它们更容易确定优先级并得到论证。

通过开发人员生产力指标衡量架构的成功 如果团队不采用,即使是最令人惊叹的架构也毫无意义。我见过太多精心构建的系统最终落入尘埃,因为团队只能自行开发变通方案或复制实现,因为“官方”解决方案并不适合他们。

成功采用架构的关键在于像对待外部客户一样对待内部团队。这意味着要发送早期草案以获取反馈,而不是最终结论;要有意识地征求关于痛点和改进领域的意见;要维护反映现实而非表达愿望的记录。

跟踪采用指标——哪些团队正在使用新模式、哪些旧方法仍然存在、正在创建哪些解决方法——提供了重要的反馈,表明架构变化是否真正解决了问题或只是产生了新的问题。

采用指标监控——哪些群体正在采用新模式,哪些群体仍在使用旧方法,他们正在应用哪些解决方法——提供了宝贵的反馈,表明架构变化是否真正解决了问题或仅仅产生了新问题。

人为因素:优秀的建筑如何降低认知负荷 最后但同样重要的是,架构关乎共同构建软件。技术健全固然重要,但沟通、理解和信任也同样重要。优秀的架构能够最大限度地减少认知负担,消除协调开销,并使用简单易懂的思维模型,实现对复杂系统的实用推理。

人为因素影响着一切,从命名方案到服务边界,再到部署流程。当架构与团队期望的工作方式发生冲突时,摩擦不可避免。当架构增强并加速自然流程时,生产力就会飞速提升。

良好的架构不仅仅是组织代码——它还能组织团队、减轻压力并创造一个人们可以专注于解决业务问题而不是对抗技术障碍的环境。

构建与业务目标一致的架构路线图 架构的价值在于,它不再是一种限制,而是一种赋能。当你将对待任何优秀产品的相同原则和以用户为中心的方法应用于架构决策时,就能实现这一点。

从了解你的用户开始——了解所有用户,而不仅仅是工程师。追踪对你的业务最重要的成果。策略性地进行变革,将技术变革与业务价值联系起来。关注采用和实际使用情况,而不是追求理论上的完美。

当架构良好时,它几乎是隐形的。团队可以更快地交付功能,系统可以更流畅地扩展,问题也更容易理解和修复。这时,架构不再只是团队灵活变通的一项工作,而是可以成倍提升团队效率的因素。

架构师能得到的最高赞誉并非源于其精美的设计,而是团队对他们的称赞,说系统运行得恰到好处,符合他们的预期。这就是产品架构,也是真正重要的架构。

评论