- 简单性（simplicity）：设计顶层抽象（abstraction），避免额外复杂度（accidental complexity）
- 可演化性（evolvbility）：预留未来更改的空间，也叫可扩展性（extensibility）、可修改性（modifiability） 或 可塑性（plasticity）
However, we can and should design software in such a way that it will hopefully minimize pain during maintenance, and thus avoid creating legacy software ourselves. To this end, we will pay particular attention to three design principles for software systems:
- Make it easy for operations teams to keep the system running smoothly.
- Make it easy for new engineers to understand the system, by removing as much complexity as possible from the system. (Note this is not the same as simplicity of the user interface.)
- Make it easy for engineers to make changes to the system in the future, adapting it for unanticipated use cases as requirements change. Also known as extensibility, modifiability, or plasticity.
As previously with reliability and scalability, there are no easy solutions for achieving these goals. Rather, we will try to think about systems with operability, simplicity, and evolvability in mind.
Martin Kleppmann, Designing Data-Intensive Applications, n.d. p19 ↩︎