简化根本复杂性,消除偶发复杂性

作者:尼尔·福特(Neal Ford)

根本复杂性(essential complexity)指的是问题与生俱来的,无法避免的困难。比如,协调全国的空中交通就是一个“天生的”复杂问题,必须实时跟踪每架飞机的位置(包括飞行高度)、航速、航向和目的地,才能预防空中和地面上的冲突。像天气骤变这样的情况会令航班计划全盘失效,航班时刻表必须适应不断变化的环境才能避免乘客滞留。

与之相反,偶发复杂性(accidental complexity)是人们解决根本复杂性的过程中衍生的。目前陈旧的空中交管系统,就是一个偶发复杂性例子。系统设计的初衷是管理数以千计的飞机参与的交通活动,即解决根本复杂性,但是解决方案本身带来了新的问题。事实上,目前正在服役的空中交管系统,其复杂臃肿己经到了难以改善的地步。在全球多数地区,空中交管系统仍然使用三十多年前的技术。

许多软件框架和厂商提供的“解决方案”都表现出偶发复杂性的症状。解决特定问题的框架很管用,但设计过度的框架增加的复杂性反而超过了它应该缓解的复杂性。

开发人员痴迷于复杂的问题,好比飞蛾喜欢扑火。谁能拒绝迅速解决复杂问题带来的快感?消除偶发复杂性,抽丝剥茧制订解决方案,才是真正的挑战。

该怎么做呢?应该尽量选择源自实际项目的框架,警惕那些象牙塔里的产品;分析方案中有多少代码直接用来解决业务问题,有多少只是用来实现用户与应用之间的交互;谨慎使用软件厂商在幕后推动的方案,它们并非一无是处,但是往往包含偶发复杂性;要量体裁衣,为问题制订“合身”的解决方案。

架构师的责任在于解决问题的根本复杂性,同时避免引入偶发复杂性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值