Fail fast; fail clearly

Fail fast and fail clearly is a principle of good code design.

Subprinciples

  • Static typing
  • Avoiding implicit typing