Meet Good Design
In plain terms: software that’s easy to change without breaking what’s already there. I hope you are starting to see the enemy. Complexity makes our systems hard to understand and hard to change — ...

Source: DEV Community
In plain terms: software that’s easy to change without breaking what’s already there. I hope you are starting to see the enemy. Complexity makes our systems hard to understand and hard to change — and left unchecked, it only compounds. But it helps to know not just what we’re fighting against, but what we’re fighting for. What does a system look like when complexity isn’t winning? What does it feel like to work in one? Good design has a few common characteristics. They’re worth knowing, because they’re not just abstract ideals — they’re the goals that every tool and principle we’ll cover in this series is working toward. The first thing you notice in a well-designed system is that it doesn’t ask too much of you. The information you need is clear and present. What a component does is apparent. You can reason about a part of the system without needing to hold the entire thing in your head — remember Ousterhout’s definition: anything that makes a system hard to understand and modify. A sy