Programlamada bazı hatalar vardır: Derleyici onları görür, kırmızıyla bağırır ve daha kahveniz soğumadan yakalanırlar. Bir de Null Pointer Exception vardır. O daha zariftir. Sistem çoğu zaman size inanır; elinizde bir nesne olduğunu, onun alanlarına erişebileceğinizi, bir değer taşıdığını varsayar. Sonra siz o nesnenin kapısını çalarsınız ve içeriden ses gelmez. Çünkü orada kimse yoktur. Değişken vardır, adres beklentisi vardır, çağrı vardır; ama referans edilen bir gerçeklik yoktur. Program bir anda durur.
Varoluşsal kriz de buna şaşırtıcı ölçüde benzer. İnsan, hayatın içinde bir anlam nesnesine işaret eder: kariyer, ilişki, inanç, başarı, gelecek planı, toplumun alkışı. Ardından bu nesnenin metotlarını çağırmaya başlar: mutlulukVer(), nedenDevamEtmeliyim(), kimim(). Fakat bazen işaret edilen yerde anlamın kendisi yoktur. Belki hiç kurulmamıştır; belki eskiden vardı ve sessizce silinmiştir; belki de bize ait olmayan bir değişkene fazla güvenmişizdir. İşte o anda zihnin çalışma zamanı istisnası yükselir: “Null Pointer Exception: anlam üzerinde işlem yapılamıyor.”
Null, boşluk değildir; kontrol edilmemiş varsayımdır
Buradaki teknik ayrım önemlidir. null, sıfır değildir. Boş bir metin değildir. “Henüz bir şey bilmiyorum” demek de değildir. Null, referansın hiçbir geçerli nesneyi göstermediğini bildirir. Varoluşsal düzlemde karşılığı şudur: “Bu hedefin beni tamamlayacağına inanıyordum, fakat bu inancın arkasında deneyimle doğrulanmış bir içerik yok.” Kriz, hayatın anlamsız olduğunun matematiksel kanıtı değildir. Daha çok, kullandığınız anlam modelinin geçersiz bir referansla çalıştığının sert bir uyarısıdır.
İnsan zihni bu hatayı çoğu zaman gizlemeye çalışır. Yeni bir unvan atar, daha büyük bir hedef üretir, takvimini toplantılarla doldurur. Bu, hatayı try-catch bloğuna alıp istisnayı yutmaya benzer. Uygulama görünürde çalışmaya devam eder; ama temel sorun çözülmemiştir. Bastırılmış istisnalar daha sonra tükenmişlik, öfke, anlamsızlık ya da tuhaf bir pazar gecesi hüznü olarak log kayıtlarına düşer.
İyi hata ayıklama, doğru soruyla başlar
Bir yazılımcı Null Pointer Exception gördüğünde ekrana bağırmaz; stack trace’i okur. Hangi satır çöktü? Hangi referans null? Bu değer nerede atanmalıydı? Hangi varsayım bozuldu? Varoluşsal kriz için de benzer bir disiplin gerekir. “Hayatın anlamı ne?” sorusu devasa ve çoğu zaman verimsizdir. Bunun yerine daha işlenebilir sorular sorulabilir: “Hangi beklentim gerçek bir deneyime değil, ödünç alınmış bir senaryoya dayanıyor?” “Bana enerji veren faaliyetler hangileri?” “Kayıp sandığım şey gerçekten benim miydi?” “Anlamı keşfedilecek sabit bir veri gibi mi, yoksa inşa edilecek bir yapı gibi mi ele alıyorum?”
Çözüm, her değişkene aceleyle değer atamak değildir. Rastgele bir ilişkiyi, ideolojiyi ya da işi “anlam” nesnesi olarak tanımlamak, yalnızca gelecekteki hatayı erteler. Sağlam tasarım; küçük, sınanabilir ve güncellenebilir kaynaklardan oluşur. Bir dostluk, ustalaşılan bir beceri, birine somut fayda sağlamak, dikkatle izlenen bir sanat eseri, bedenin ritmi, dürüstçe tutulmuş bir günlük… Bunlar evrensel anlam API’si sunmaz. Fakat yaşanmış veri üretirler.
Belki de Null Pointer Exception’ın en güzel tarafı şudur: Sistem çökerek yalanı durdurur. Çalışmaya devam eden ama yanlış sonuç üreten bir programdan daha güvenlidir. Varoluşsal kriz de düşman olmayabilir; eski referansların artık geçersiz olduğunu bildiren sert ama dürüst bir hata raporudur. Yapılması gereken, boşluğa körü körüne metot çağırmak değil; önce referansı kontrol etmek, sonra anlamı daha dikkatli, daha kendi elinizle inşa etmektir.
