Approach which help to define boundaries for a large application
According it we can flexibly adapt and maintain mutable functionality of app.
There are multiple mentions and interpretations of feature-driven
approach (see below)
This article contains common rules and principles.
UPD (Jan 2021) Also, should be mentioned:
- Discoverability - discover how your software works
- Work parallesisation - to dev software by teams, not alone
- Controlling shared abstractions - controlling abstractions, for preventing bugs and controlling software
- Refactoring - we can be sure what user-facing functionality we will affect
- AB Tests - more controllable experiments, with quikly manipulating (many-ifs hell)
- Integration tests - other tests can't cover all app logic, but integration tests is difficult to create and maintain (more meaningful an easy way)
Concepts
- **Decentralization** - organize app by explicit abstractions, no interconnected monolith (app ⇒ pages ⇒ features ⇒ shared)
- Explicit sharing - explicit rules for managing shared (common used) modules