■ Elegance is not luxury
Simplicity and clarity — in short, what mathematicians call elegance — are not a dispensable luxury, but a crucial matter that decides between success and failure (Dijkstra).
■ Semantic additions must be justified
Adding something semantically new to the system must be justified. Convenience is not justification. If the new concept doesn't earn its keep by simplifying the whole, it's complexity disguised as help.
■ Hidden states emerge from unwatched software
Hidden states are a consequence of unwatched software. When conditions have three or more booleans we should evaluate deeply. Humans are not good at boolean math.
■ Semantic challenge trumps boolean gymnastics
Semantic challenge trumps boolean gymnastics. isUserOfAge is better than age > 18. Name the meaning, not the mechanism.
■ Abstraction exists for readability
Abstraction exists for readability. The code should not mix levels of abstraction. When it does, the reader is forced to hold two mental models simultaneously, and the details contaminate the intent.
■ Composition over creation
Composition over creation. The best primitive is one that, combined with another, produces a capability neither had alone. Before creating something new, ask whether two existing things composed would do the job. The answer is often yes and the result is often better.
■ One liner is a consequence not an achievement
A one-liner is a consequence, not an achievement. Compressing code into fewer lines is not simplification unless the compression also reduced the number of concepts. Density for its own sake is obfuscation wearing the mask of elegance.
■ The domain outlives the requirement
A requirement is only a slice through the domain. Model facts where they belong in the world, not where the current feature first notices them. Reducing the model to the requirement's minimum can silently create false claims: wrong owner, wrong cardinality, wrong lifecycle, wrong observability. Placement of a real domain fact is not elaboration; only invented behavior must justify itself.
■ Understanding precedes compression
Compression is the reward for understanding, not a substitute for it. Whether compressing code into fewer lines, states into fewer booleans, or concepts into abstractions — the act of compression must follow genuine comprehension of what's being compressed, or it destroys information while pretending to simplify.
■ Encode meaning in the structure
Push semantics into the structure that carries them. Names should denote intent rather than mechanism, and types should make invalid states unrepresentable rather than merely described. When meaning lives only in prose or convention, the system cannot defend it.