- Always use tests to demonstrate the existence of a bug before fixing the bug. - If you suspect that a bug exists, use a test to demonstrate it first: - prefer unit tests testing a small amount of code to integration or e2e tests - Option<...> or Result<...> are fine but should not be present in the majority of the code. - Similarly, code managing Box<...> or RC<...>, etc. for containers pointing to heap data should be split from logic