"Pascal and C are special-purpose languages for manipulating the registers and memory." (P. Norvig)…

# We do not develop the domain

"We do not develop the domain. The domain is some realm of know-how of the business we are working in. What we design and implement is a model of a domain." (V. Vernon)…

# Naming

"Naming is perhaps the most powerful abstracting notion we have, in any language, for it allows any complex to be reduced for linguistic purposes to a primitive atom." (G. L. Steele Jr.)…

# Mathematical induction

"Mathematical induction proves that we can climb as high as we like on a ladder, by proving that we can climb onto the bottom rung (the basis) and that from each rung we can climb up to the next one (the induction)." (Concrete Mathematics 2nd ed.)…

# Overloading

"If we look at mathematics, it has been greatly driven by overloading. Extensions of a notion of numbers from natural numbers to integers, to rational numbers, to Gaussian integers, to p-adic numbers, etc., are examples of overloading. One can easily guess things without knowing exact definitions. If I see an…

# Creational use cases

"When dealing with "creational" use cases, try to find another aggregate or factory you can move that responsibility to. Sometimes the factory is just a static method (good for "context"/"intent" capturing), sometimes it's an instance method of another aggregate (good place for "data" inheritance), sometimes it's an explicit factory…