Я честно скажу, еще 10 лет назад пришел к пониманию, что Null is a billion dollar mistake - это раздутая гипербола, и чисто из-за того, что звучит клево, ее повторяют как мантру.
NullPointerException / NRE / undefined is not a function / … - это самая простая ошибка, что может быть в коде. Она очень предсказуемая, ее очень легко диагностировать:
По номеру строки нашел место вызова (точку или скобки). Сразу понятно, кто null. За строкой по стектрейсу сразу понятно, откуда этот null взялся.
Помню, что даже еще джуном всегда радовался, если какая-то бага воспроизводилась из-за null, потому что сразу было понятно, что я ее быстро пофиксить смогу.
А с опытом просто перестаю код писать, который так легко nullы создает.
Я не против всяких Option монад или Nothing Objects. Если они есть в языке / проекте, я ими пользуюсь. Но если их нет, мне от этого ни жарко ни холодно.