İçeriğe geç

AI ile sessiz hata: 'çalışıyor' diye gönderdiğim ama yanlış olan kod

AI ile yazılan kodun yeni türde bir hatası var: derleniyor, testten geçiyor, ama yanlış davranıyor. 2026 ortasında solo geliştiricinin en sinsi düşmanı bu sessiz hata.

Geçen hafta küçük bir Cubitz değişikliği yapıyordum. AI bana ilk denemede çok düzgün görünen bir fonksiyon yazdı. Lint geçti, test geçti, manuel kontrolde de çalışıyor gözüküyordu. İki gün sonra kullanıcıdan gelen rapor üzerine baktığımda fark ettim: kod yanlış davranıyordu — sadece gözümün gördüğü senaryoda doğru çıktı veriyordu.

Bu yeni türde bir hata. Eski "AI uyduruyor" sınıfından değil. Daha sinsi: AI tutarlı görünen, mantıklı görünen, doğru duran ama yanlış olan bir kod yazıyor. Adına "sessiz hata" diyorum.

Eski hata: gürültülü ve görünür

2023-24'te AI ile yazılan kodun klasik hatası gürültülüydü: API yanlış kullanıldı, kütüphane uydurulmuştu, syntax çalışmıyordu. Hata anında bağırıyordu — derleyici hata atıyor, test düşüyor, çalıştırınca crash oluyor. Fark etmek kolaydı.

Bu hatalar hâlâ var ama oranı ciddi düştü. Modeller daha iyi oldukça syntax-seviye hata azaldı, kütüphane uydurması yok denecek kadar azaldı.

Yeni hata: sessiz ve mantıklı

Yeni hatanın imzası farklı:

• Kod derleniyor — syntax hatasız.

• Kod testten geçiyor — çünkü AI testi de kendi yazdığı koda göre yazıyor.

• Kod mantıklı görünüyor — okuyunca "evet bu doğru" diyorsun.

• Ama kod yanlış cevap veriyor — sadece bazı edge case'lerde, bazen production'da, bazen belirli kullanıcı tipinde.

Cubitz'teki hatamın özü şuydu: AI bir tarih karşılaştırma fonksiyonu yazmıştı. Test verisi UTC'ydi ve test geçiyordu. Production'da kullanıcının tarayıcısı farklı timezone'daydı ve sonuç bir gün kayık çıkıyordu. AI'ın ne yaptığını okudum, mantıklı geldi, kabul ettim. Yanlıştı.

Bu hata neden yeni

Aşağıdaki üç şey yan yana geldiğinde sessiz hata patlıyor:

• Model artık o kadar iyi yazıyor ki kodu okurken "bunu ben de böyle yazardım" hissi veriyor. Şüphe etmek zorlaşıyor.

• AI test üretimi de yaygınlaştı; AI hem kodu yazıyor hem testi. İkisi de aynı kafa modelinden çıkıyor, ikisi de aynı boşluğu kaçırıyor.

• Vibe coding kültürü hızlı kabul ediyor. "Çalışıyor gibi görünüyor, geçtim" sayısı geçen yıla göre çok daha fazla.

Bu üçü birleşince derleyicinin de testin de gözünün kaçtığı yerde sessiz hata kalıyor.

Ne yapıyorum (henüz mükemmel değil)

Son birkaç hafta bunu azaltmak için denediğim şeyler:

Testi AI'a değil bana yazdırıyorum. Kodu AI yazsın, ama test edge case'lerini ben düşünüyorum. AI bana "şu input için ne beklersin?" diye sorsun, cevabı ben vereyim.

Production verisiyle smoke test. Yeni fonksiyonu deploy etmeden önce, gerçek üretim verisinden 5-10 örnekle elle çalıştırıyorum. Test datası çoğu zaman idealdir, gerçek veri kirli.

Code review'da farklı modelle ikinci göz. Yazan Claude ise, gözden geçiren GPT olsun. İki farklı modelin aynı hatayı kaçırma ihtimali tek bir modelden düşük.

"Bu kod neden yanlış olabilir?" sorusu. Yazılan koda bakıp "doğrulamak" yerine "yıkmaya çalışmak". Bu zihinsel jiu-jitsu kolay değil ama sessiz hatayı en iyi yakalayan o.

Bu pratikler GPT-5.5'i delege ederken çizdiğim sınırla tutarlı: doğrulanabilir işleri AI'a, yargıyı kendime tutuyorum. Ama "doğrulama" kısmı 2026'da yeniden tanımlanmak zorunda — "test geçti, derledi, çalışıyor gibi" yeterli değil artık.

Asıl trade-off

Sessiz hatadan tamamen kaçınmanın yolu var: AI'ın yazdığı her kodu eskisi gibi satır satır kontrol etmek. Ama bu yapılırsa AI'ın sağladığı hızdan kaçırılıyor.

Buradaki denge benim için şu: kritik kod yollarında (ödeme, güvenlik, kullanıcı verisi, hesaplama) sessiz hata maliyeti çok yüksek, bu yüzden o kısımlarda manuel okuma + adversarial test zorunlu. Görünüm, içerik, küçük yardımcı fonksiyonlar için ise hız değer, hata kabul edilebilir, hızlıca düzeltebilirim.

Daha önce ajan vs asistan ayrımını yazdığımda bahsettiğim "hangi işte ne kadar kontrol" sorusu aslında tam bu kararı veriyor. AI'a ne kadar pas vereceğin kararı, sessiz hatanın o işteki maliyetiyle birebir ilişkili.

Önümüzdeki dönem

Sessiz hata sorunu çözülecek mi? Kısmen. Tahminim şu:

• Modeller "adversarial test" üretmeyi öğrenecek — sadece happy path değil, hatalı senaryoları zorlayan testler. Bu kısımda hızlı ilerleme gelir.

• Static analysis + AI birleşik araçlar yaygınlaşır. Sessiz hatanın bir kısmı tür sisteminin yakalayabileceği şeyler.

• Ama "anlamsal doğruluk" — kodun yapması gerekeni mi yapıyor — uzun süre insanın işi kalır.

Yani sorun küçülür, kaybolmaz. Solo geliştiricinin 2026-27 boyunca alışkanlık yapması gereken şey "AI yazdıysa bir kez daha şüpheyle oku" refleksi.

Singrey'in notu

Cubitz'teki o iki gün geç fark ettiğim hata bana çok şey öğretti — en başta "kod doğru görünüyor" hissinin yeni tür bir tuzak olduğunu. AI'ın hatası eskiden gürültülüydü ve fark etmek kolaydı; şimdi sessiz ve kibar. Sessiz hatalar uzun vadede gürültülü hatalardan daha pahalıya patlar. Bunu hatırladığımda elim klavyeye gitmeden önce duruyor — bu küçük durak şu an yapabildiğim en iyi savunma.