Sublime
An inspiration engine for ideas
The Method relies heavily on layers. Layers allow you to layer encapsulation. Each layer encapsulates its own volatilities from the layers above and the volatilities in the layers below. Services inside the layers encapsulate volatility
Löwy Juval • Righting Software
Our response is to organize the code into two layers: an implementation layer which is the graph of objects, its behavior is the combined result of how its objects respond to events; and, a declarative layer which builds up the objects in the implementation layer, using small “sugar” methods and syntax to describe the purpose of each fragment. The
... See moreNat Pryce • Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))
I’ll leave it to you to determine just how much of the preceding was satirical exaggeration. The point of the story is to show how the design of a program can rapidly degrade in the presence of change. The original design of the Copy program was simple and elegant. Yet after only two changes, it has begun to show the signs of rigidity, fragility, i
... See moreRobert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
First, most of the customers I meet think they have a technology adoption problem, when in reality they have an org-chart problem. The most successful orgs are made up of many small independent business teams communicating via clear APIs. If that’s your org chart, you will inevitably build a microservices architecture, a trick known as the Reverse
... See morePini Reznik • Cloud Native Transformation: Practical Patterns for Innovation
Our purpose, in the end, is to achieve more with less code. We aspire to raise ourselves from programming in terms of control flow and data manipulation, to composing programs from smaller programs—where objects form the smallest unit of behavior.
Nat Pryce • Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))

Clients Bloat and Coupling
Löwy Juval • Righting Software
Meyer’s Uniform Access principle, described in Object-Oriented Software Construction [Mey97], which states that All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation.
David Thomas • The Pragmatic Programmer
As John Gall wrote in [Gall03], “A complex system that works is invariably found to have evolved from a simple system that works.”