Ideas I Keep Coming Back To
Systems thinking
Most bugs are not in the code; they are in the assumptions the code is built on.
Composition over inheritance
Prefer small pieces that combine cleanly. Easier to test, easier to reason about, easier to delete.
Make invalid states unrepresentable
The type system is a design tool. Use it to remove whole categories of bugs before runtime.