Yazılım dünyasında Tony Hoare adında bir efsane vardır. Bu adam yıllar sonra bir itirafta bulundu ve dedi ki: "Null referansını icat etmek benim milyar dolarlık hatamdı."

Düşününce haksız sayılmaz. Yıl olmuş 2026, diller gelişti, frameworkler akıllandı ama biz hala o lanet olası java.lang.NullPointerException hatasıyla veya tarayıcı konsolundaki o kırmızı Cannot read properties of null uyarısıyla boğuşuyoruz. Bir Full Stack geliştirici olarak şunu çok net söyleyebilirim: Bu hata sadece kodun kırılması değil, bir disiplin eksikliğidir.

Java tarafında, yani işin mutfağında yıllarca çok büyük bir yanlış yaptık. Veritabanında bir kayıt bulamadığımızda return null dedik. Bu aslında pimi çekilmiş bir el bombasını metodu çağıran arkadaşın kucağına bırakmaktı. O arkadaş bombayı imha etmeyi (null check yapmayı) unutursa, sistem gece yarısı patlardı.

Artık Spring Boot projelerimde kendime koyduğum kural net: Asla null dönme. Elimizde Optional diye bir nimet var. Veri yoksa "yok" de, ama null deme. Optional.empty() dön ki, o metodu kullanan kişi verinin gelmeyebileceğini anlasın ve ona göre önlemini alsın. Bu bir tercih değil, defansif programlamanın temel kuralıdır.

İşin bir de Frontend, yani React tarafı var. Backend'den gelen veri her zaman beklediğimiz gibi kusursuz olmuyor. Eskiden user.address.city diye masum bir kod yazdığımızda, eğer kullanıcı adres girmemişse bütün sayfa bembeyaz olur, uygulama çökerdi. Kullanıcıya "Bir hata oluştu" bile diyemezdik.

Şükür ki modern JavaScript bize "Optional Chaining" (?.) diye bir kalkan verdi. Artık user?.address?.city yazıp geçiyoruz. Bu basit soru işareti, "Eğer veri varsa devam et, yoksa dur, ama sakın patlama" demek.

Ama asıl mesele kodda değil, zihniyette bitiyor. Null ile savaşmanın yolu, kodun her yerine if (x != null) yazarak sayfayı kirletmek değildir. Asıl çözüm, veritabanı tasarımında o alana NOT NULL kısıtlamasını koyacak kadar mimariye hakim olmaktır.

Sonuçta müşteri arkada dönen algoritmaları bilmez. Ama "Satın Al" butonuna bastığında uygulama çökerse, o müşteriyi kaybedersiniz. Null Pointer, bir yazılımcının "Bu veri kesin gelir ya" diyerek aldığı riskin faturasıdır. Ve bizim işimizde, varsayımlarla değil, garantilerle kod yazılır.