- Faster development: Separating development into components lets you build modular parts with narrowly-focused APIs.
- Simpler maintenance: When you need to modify or update a part of your application, you can extend or update the component instead of having to refactor larger parts of your application.
- Better reusability: Through the separation of concerns components can be reused and extended to build multiple application instead of having to rewrite them over and over again
- Better TDD: Larger systems can be more easily tested as it’s easier to understand and separate the responsibilities of every part of the system.
- Shorter learning curves: It’s much easier to learn and understand the structure of a defined component than dive into an entire application.
- Better modeling of the system: When a system is composed out of modular components, it’s easier to grasp, understand and operate on.