Yes, NULL is a terrible design, in object-oriented world. In a nutshell, NULL usage leads to:
- ad-hoc error handling (instead of exceptions)
- ambiguous semantic
- slow instead of fast failing
- computer thinking vs. object thinking
- mutable and incomplete objects
Check this blog post for a detailed explanation: http://www.yegor256.com/2014/05/13/why-null-is-bad.html