Fail fast; fail clearly Fail fast and fail clearly is a principle of good code design. Subprinciples Static typing Avoiding implicit typing