软件须把握两个点: 错误可控, 复杂度可控
错误
人总会犯错的, 软件总有bug的。
客户最不满意的时刻:
- 软件频繁/反复出现问题(bug或者性能问题)
- 找原因的时间很长, 客户只能绝望等待
- 无法修复或者修复代价很大
客户满意的时刻:
- 很少出现问题
- 即使出现, 造成的后果也不大
- 出现的问题能够被迅速修复
复杂度
软件总是在进化的。
代码增长的速度超出想象, 如果不及时控制, 复杂度会很快超出可控范围。到时, 整个系统将没人能懂, 也无人敢修改。只能放弃或重写。
记住, 软件功能简单, 性能不佳都暂时不要紧, 可以不断进化升级。
但是, 一旦复杂性失去控制, 软件将失去进化能力,就彻底失败了。复杂度控制住了, 其他一切皆有可能。