设计权衡:用5%换取90%

项目的非根本性目标在很大程度上导致了设计的复杂性,或者导致无法达成其他更重要的目标,因为根本性功能和非根本性功能在设计上存在竞争关系。如果意识不到这点,复杂性就会随之而来。实现全面的设计并不是件轻而易举的事,付出与回报之间不能通过简单的比例来衡量。对于设计者来说,意识到这一点是很重要的。如果项目要最大化产出,那么就要把精力集中在重要的事情上,并在合理的时间内完成。例如,在设计Disque(一个分布式消息队列)时,我发现对消息进行排序之后,项目的其他方面就会得到实质性的改进:可用性、查询和客户端交互、简洁性和性能。