人类社会在不断文明的过程就是不断建立契约的过程,基于契约建立了我们想要的稳定的社会关系。契约亦或是约定,消除了不同事物在合作过程中的不协调的地方,使得对于共同理想能够更容易的建立一致建设意见。
在软件编程中,需要面对技术上的各种选型、系统组件组合上的各种适配、以及业务需求描述的复杂多变。建立从业务需求描述到技术实现的映射,建立上层调用方式与底层实现逻辑的相互协作,这里面有大量的变量需要考虑和抉择。事实上,在不同的描述体系下,相同或类似事物的地位和作用本质上是一致的,但要建立起两种不同描述体系的自由转换需要一个"翻译工具"。
但这个翻译工具怎么也无法完美地完成翻译工作,原因在于该工具不能像人一样建立起具体的上下文图景,无法拥有人在参与社会实践的地位。如此就免不了这个翻译工具将大量的抉择交给人类完成,这些抉择在软件开发中大多以配置项目的形式提供。
如果配置太多,就加大了人类的思维工作负担,不符合人类利用机器偷懒的初衷。干脆为所有配置提供一个默认选择,或者提供一个自助决策规则,如此建立起人与机器的基本约定。这样在其他类似场景中,机器工具就可以拿来即用。
所以约定大于配置,其实是要建立起尽力减少配置项,采用约定方案的思想。