Laws of Software Engineering

Principles

Design rules with strong evidence and well-understood failure modes. Reliable in most situations.

How to use them. Use them as the default position. If you choose to depart from a principle, write down why. The discipline lies in the justification.

How they get misused. Applied without judgement. SOLID applied to every class produces unreadable code. The Testing Pyramid applied without thought produces brittle test suites. A principle followed mechanically becomes a ritual.