Do separate layers really separate concerns?
Placing code in different layers leaves the underlying concepts free to depend on each other. Trace which changes still require coordinated edits.
Read on through a shared source
Why does testing a business rule need a database? →Separate who qualifies for a reminder from whether the reminder can be delivered.Which choices should an API leave out? →Removing an uncertain feature reduces what clients must learn. Separating tangled concerns reduces how many choices they must consider together.Why does shared mutable state tangle a program? →One talk separates identity from its successive values. The other shows how state couples parts of a system through time. Read them together to identify what a caller must know about earlier operations.
Compare the passages
it's a mistake to put optionality in aggregate definitionsdon't associate simplicity with partitioning and stratification, right?