Coupling & cohesion
Two central design principles: loose coupling (modules depend little on each other) + high cohesion (a module does one thing well).
Good design = both. Tight coupling = change A breaks B. Low cohesion = a class does 10 different things. Dependency injection, interface-based design and microservices are attempts to reduce coupling.