Answer by Kunjaan Chhetri:
Avoiding Null State, which Tony Hoare called his 'billion dollar mistake', would be a pretty high on my list.
Richard Cobbe summarizes the top 3 problems with null as:
1. the error messages produced by the run-time system upon misuses of null do not generally contain enough information to help programmers find and fix the underlying bugs.
2. although there may be many invariants about how null flows through a program, programmers cannot state these invariants in the language itself, so they must assume all the effort of checking and enforcing them.
3. representing missing values and results with null is sometimes ambiguous, and this ambiguity leads to unnecessarily
complicated interfaces and the potential for subtle bugs.
Much Ado About Nothing: Putting Java's Null in its Place. A dissertation presented by. Richard Cobbe