写点什么

架构的“顺势疗法”

2013 年 1 月 31 日

来自 CapGemini 的 Steve Jones 在去年撰写了一篇文章,阐述了在他是如何看待“思考已死”与“ IT 界将技术凌驾于思考之上”的。文章引出了漫长和热烈的讨论,Steve 的观点得到许多人的赞同。为了证明其观点,Steve 以 REST 为例,认为它作为一个技术被过分讨论和滥用,却没有充分的思考或证据来解释它在特定领域的效益。这在文章的评论中引来了大量的讨论,其中有相当数量的人反对这个例子,并认为 REST 优于其他一些 Steve 曾经推荐的技术,例如如 Web Services。

于是,Steve 在近期通过一个非常具体的例子,从另一方面来解释这类缺乏思考的行为方式:

有时候我们会在会议中遇到来自某人的令人赞叹的发言,今天我也有同样的经历,有人写道“我们自己就是病人,我们能停止假装自己就是外科医生吗?”她的观点很简单,过去在公司里已经遇到过这样的挑战,人们依据一些个人观点并在没有数据支持的情况下做出一些关键的决策,而这些决策实施的成果没有被追踪。

Steve 将其形容为“架构的顺势疗法”,用于描述 IT 界中人们仅依据个人观点便做出架构决策的现象。这些决策缺乏事实或案例来说明为何它们能够成功,同时除了部署外,实施的成果也没有被分析。Steve 使用这一现象来说明他的观点:

一个好的架构的挑战是类似于“X 不可行,是因为我们不是用集中的方式工作;我们需要 Y,因为我们采用分治的方式,而且 Y 已经被证明是可行的”。而架构的“顺势疗法”则提出“X 不可行,我们应该采用 Y”或更像是“X 不可行”。没有证据来支持这一“反馈”,基于这一反馈也无法进行建设性的改变。但如果出现任何问题,架构的顺势治疗论者会说:“你本应按我说的做”。

Steve 相信这些“架构的顺势治疗论者”可以用这种方式来建立其职业生涯,宣称“这对我是可行的”,同时这些人不能理解更多的可能带来成功的选择。此外,他相信这些人通常基于臆想的缺点,对经过证明的方式吹毛求疵;他还阐述道,对于那些坚持在企业整合中使用 REST,而对问题空间缺乏完整理解,或是不知道为何其他的技术更合适的人,是一个典型的“架构的顺势治疗论者”。 这些人描绘了架构的美好前景,却没有过亲自动手或是指导他人进行实践的经历。

无论你是否相信“架构的顺势治疗论者”的存在,每个人都应该认同 Steve 的这一论断:所有的架构决策应该基于事实或数据。即使该选择最终被证明是错误的,我们也应该把这一结果记录下来并从中汲取经验教训。

我反对人们基于一系列演示文稿和仅被顺势疗法佐证的个人观点,进行架构决策的方式(或实际的商务决策方式)。这些顺势治疗论者基于无知且自我的“信条”进行评论,扰乱进程并热衷于宣称“按我的方法做会更好”,却不会详细解释他们的方法的必需条件。

Steve 文章中关于 REST 的部分很容易成为焦点,容易使人忽视他努力阐述的中心思想:一些架构决策是在缺乏充分依据的情况下被作出的,而且也许还有一些人在传播推广这种决策方式。

查看英文原文 Architectural Homeopathy


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013 年 1 月 31 日 04:511678
用户头像

发布了 256 篇内容, 共 48.9 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

主权投资基金或有助于实现可持续发展目标

CECBC区块链专委会

联盟链落地与激励机制

CECBC区块链专委会

2.2.2 类反射场景与使用 -《SSM深入解析与项目实战》

谙忆

【权限系统设计】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景

小隐乐乐

5招详解linux之openEuler /centos7防火墙基本使用指南

华为云开发者社区

centos7 网络安全 防火墙 openEuler 网络环境

Github+docsify零成本轻松打造在线文档网站

Java全栈封神

Java GitHub 全栈 文档 docsigy

LeetCode题解:21. 合并两个有序链表,迭代(优化),JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

libuv 异步网络编程之 TCP helloworld

Huayra

网络编程 libuv

week 10

Geek_2e7dd7

你是否真的懂数组?

架构师修行之路

数组 数据结构与算法

英特尔推出“OpenVINO领航者联盟”,携手DFRobot推进AI商业落地新探

飞天鱼2017

腾讯SaaS千帆对渠道的态度——合作共赢的诚意

人称T客

F5G的星光闪烁,为工业而明,向未来而歌

脑极体

当我们谈注册中心时谈什么?

小楼

zookeeper nacos 注册中心

为什么 90 后一言不合就跳槽?

非著名程序员

程序员 个人成长 职业成长 延迟满足感 即时反馈

DT时代释放金融数据价值,驱动金融商业裂变

华为云开发者社区

金融科技 华为云 modelarts 数据价值 用户细分

AndroidStudio解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle

小菜鸟学php

丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!

Hollis

Java 程序员 后端

计算机网络基础(十七)---传输层-TCP的可靠传输

书旅

TCP 计算机网络 网络协议 计算机基础 TCP/IP

微服务架构

不在调上

获奖名单公布 | 写作平台八月宠粉福利来袭,参与创作领取限时大奖~

InfoQ写作平台

写作平台 征稿 活动专区

原创 | 使用JPA实现DDD持久化- O:对象的世界(3/3)

编程道与术

Java hibernate DDD JDBC jpa

【漫画】最近,老王又双叒get了CDN的新技能—可编程化敏捷开发

巨侠说

CDN

贵州:“区块链+”促经济转型产业升级

CECBC区块链专委会

论做AI芯片的正确姿势

flow

十二张图搞懂浏览器安全——(同源策略、XSS、CSRF、跨域、HTTPS、安全沙箱等知识点)

执鸢者

https 浏览器安全 同源策略 XSS 跨域

十五张图带你彻底搞懂从URL到页面展示发生的故事

执鸢者

前端 浏览器 页面展示

支持 100 种语言的 Canva 是怎么做本地化管理的?

葛仲君

产品经理 本地化 产品本地化 国际化

最右JS2Flutter框架——动画、小游戏的实现(四)

刘剑

flutter 前端 探索与实践

week 10

Geek_2e7dd7

9个常用ES6特性归纳(一般用这些就够了)

华为云开发者社区

Java 程序员 编程语言 ES6 编程效率

架构的“顺势疗法”-InfoQ