Design bridges requirements and coding. Engineers map business logic to structural components. You define interfaces, data models, and algorithms. Good design minimizes complexity. It enables developers to build features without breaking existing functionality.
Patterns solve common codebase problems. They standardize code structure across projects. Engineers recognize patterns and understand the underlying intent.
Design defines the solution. Compare this to Requirements Engineering, which defines the problem. A solid design transforms abstract goals into concrete development tasks.