Principles
Section titled “Principles”Reusable software engineering principles and the conditions that make them useful.
Entries (6)
Do not repeat knowledgeKeep each important piece of system knowledge in one authoritative representation when practical.
Invert dependencies around policyKeep high-level policy from depending directly on replaceable low-level implementation details when that separation has engineering value.
Keep monetization out of relevance rankingSeparate commercial incentives from ranking when the product promises neutral relevance or quality ordering.
Prefer composition over inheritanceUse composition as the default when behavior can vary independently from object identity.
Separate concernsKeep distinct responsibilities behind boundaries that let engineers reason about and change them with limited unrelated impact.
You aren't gonna need itImplement capabilities when there is evidence that they are needed, not only because they may be useful later.