小系统并不是野心更小的系统。而是系统中每一个活动部件,都能解释清楚自己为什么存在。

复杂度有持有成本

每一个依赖、抽象和配置文件都会索取注意力。它的成本很少在引入当天就显现出来。它出现在以后——当有人必须更新它、调试它,或者决定它是否仍然被需要的时候。

这并不意味着复杂度总是坏的。它意味着复杂度应该买到有价值的东西:

  • 更好的体验;
  • 更安全的约束;
  • 对重复工作的显著减少;
  • 或者一种无法简单表达的能力。

质量同样是一种约束

另一个方向上的错误,是把“删除”当作优雅的唯一度量。一个产品的代码可以很少,却依然给人粗糙的感觉。

问题 有用的检验
它改善了体验吗? 继续考虑它。
能否在不损失质量的前提下更简单? 简化它。
简化会让它变简陋吗? 停止简化。

最好的结果,落在复杂度预算与质量底线之间。

目标不是最小的实现,而是足以完整承载想法的最小实现。

让系统可读

当一个系统的结构与其目的一致时,它就更容易被拥有。把内容放在写作者期待内容所在的地方,把视觉规则放在设计师期待视觉规则所在的地方。优先选择描述产品而不是描述框架的命名。

清晰是会复利的。它让下一个决策变得更便宜。