Yapay zeka (AI), kod yazma konusunda şaşırtıcı derecede yetenekli. İnsanlardan daha hızlı ve birçok farklı dilde çalışan implementasyonlar üretebiliyor. Ancak, bu yeteneği bir yazılım projesinin tüm gereksinimlerini karşılamakta yetersiz kalıyor. Çünkü kod yazmak ile mühendislik kararları almak birbirinden tamamen farklı iki aktivite ve yapay zeka sadece ilkini başarıyla yerine getiriyor. Yazılım mühendisliğinin asıl zor kısmı, neyin inşa edileceğini, nasıl yapılandırılacağını ve en önemlisi neyin inşa edilmeyeceğini belirlemektir. Bu, binlerce küçük kararı içerir: bir kütüphane mi kullanılacak, yoksa kendi kodumuz mu yazılacak? Tek bir servis mi olacak, yoksa ikiye mi bölünecek? Bir soyutlama, getirdiği karmaşıklığa değer mi? Bu uç durum şimdi mi ele alınmalı, yoksa erken mi? Modüller arasındaki doğru sınır neresi olmalı?
Bu kararlar, sadece sözdizimi veya algoritmalarla ilgili değildir; takaslar, bağlam ve mühendislik yargısı gerektirirler. Kodun sadece bugün ne yaptığını değil, altı ay sonra ne yapması gerektiğini de anlamayı gerektirirler. Yapay zeka bu kararları vermez; sadece istediğiniz şeyi üretir. Bu ayrım, zamanla biriken ciddi sonuçlar doğurur. Yapay zeka ile geliştirme yaparken, kod tabanının mimarisi, verdiğiniz komutların (prompt) sırasına göre şekillenir, bilinçli bir tasarımla değil. Bugün kullanıcı kimlik doğrulamasını, yarın ayarlar sayfasını, ertesi gün bir API entegrasyonunu istersiniz. Her komut çalışan kod üretir, ancak kimse bu üç şeyin birbiriyle nasıl ilişkili olması gerektiğini, sınırlarının ne olduğunu veya hangi verileri nasıl paylaşacaklarını sormaz. Yapay zeka da sormaz; sadece içsel olarak tutarlı üç şey inşa eder, aralarında ortak bir anlayış olmadan.
Bu durum, denetlediğimiz her yapay zeka tarafından üretilmiş kod tabanında gördüğümüz bir 'karar boşluğu' yaratır. Mimari karar kayıtları yoktur, bir tasarım deseninin neden diğerine tercih edildiğine dair bir açıklama yoktur, benzer sorunların nasıl çözüldüğüne dair bir tutarlılık yoktur. Sadece bir dizi çalışan implementasyon, her biri izole bir şekilde üretilmiş ve yapay zekanın o an önerdiği şekilde birbirine yapıştırılmıştır. Kod derlenir, testler geçer (varsa), ürün çalışır. Ancak kod tabanı herhangi bir mühendislik felsefesini yansıtmaz ve uzun vadede sürdürülebilirlik sorunlarına yol açar.
Yapay zeka kod yazmada yetenekli olsa da, yazılım projelerinin uzun vadeli başarısı için kritik olan mimari ve mühendislik kararlarını alma yeteneğinden yoksundur.