Designing software with layers is common — and broken. It’s broken for two reasons: Layers suggest some form of abstraction; but layering very fundamentally is not about abstraction.Layering relies on functional dependencies which are hard to test and make software difficult to understand and evolve.No Abstraction with LayersTake this layered design: Do you see the difference? Even though Scott Ha
![Stratified Design over Layered Design](https://cdn-ak-scissors.b.st-hatena.com/image/square/50a5656e6618934a70cd98b66cd413615ec6f62c/height=288;version=1;width=512/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A544%2F1%2ArKPLEnwj6rdThvUi9jNpaQ.png)