Vibe coding mi, AI destekli geliştirme mi — ve neden hâlâ bir senior'a ihtiyaç var
Vibe coding ürün çıkarmayı gerçekten kolaylaştırdı. Ama yazılım ve sistem mimarisi bilmeyen birinin production'a çıkardığıyla, AI'ı yöneten bir senior'ın çıkardığı aynı şey değil. Üç seviye, üç farklı kalite.
Son aylarda aynı cümleyi farklı ağızlardan çok duydum: “Artık yazılımcıya ihtiyaç kalmadı, ben kendim çıkardım.” Genellikle ardından bir ekran görüntüsü geliyor — çalışan bir arayüz, deploy olmuş bir site, hatta ilk kullanıcılar. İlk bakışta itiraz edilecek bir şey yokmuş gibi. Bir şey gerçekten çalışıyorsa, çalışıyordur.
Ama “çalışıyor” ile “doğru çalışıyor” arasındaki farkı on yedi yıldır görüyorum, ve bu fark bir demoda görünmüyor. İlk gerçek yükte, ilk gerçek saldırganda, ilk şema değişikliğinde görünüyor. Bu yazı vibe coding’e karşı bir yazı değil — hobiye, denemeye, öğrenmeye hiçbir itirazım yok. Bu yazı kimin elinde sorusuna dair. Çünkü aynı AI agent, üç farklı insanın elinde üç farklı şey üretiyor.
Vibe coding’in gerçekten kolaylaştırdığı şey
Hakkını teslim edeyim: vibe coding bir ilk sürüm üretmenin maliyetini gerçekten düşürdü. Fikirden çalışan bir prototipe geçiş hiç bu kadar kısa olmamıştı. Bir formu, bir REST uç noktasını, bir CRUD ekranını tarif edip dakikalar içinde ayağa kaldırmak artık sıradan. Bu küçümsenecek bir şey değil; on yıl önce bir hafta süren işti.
Düşürdüğü maliyet bu: üretim. Düşürmediği maliyet ise yanlış olmanın maliyeti — ve asıl mesele orada başlıyor.
Üç seviye, üç farklı sonuç
Aynı aracın elde ettiği sonucu belirleyen şey, yazma hızı değil; sorulan sorunun ve yapılan denetimin kalitesi. Üç tipik seviyeyi ayıralım.
1. Hiç ya da çok az yazılım bilen biri — saf vibe coding
Burada akış şöyle: tarif et, üretilen kodu çalıştır, çalışıyorsa devam et. Sorun, bu döngüde eksik olanın ne olduğunu görecek göz olmaması. Üretilen kod kendinden emin bir tonla yanlış olabilir; onu okuyup kenar durumlarını sınamak bir birikim ister, o birikim de henüz yok.
Pratikte ortaya çıkanlar hep aynı aileden: bir başkasının verisine erişilebilen bir uç nokta, dolu bir tabloda patlayan bir migration, log’a düşen bir parola, büyüyünce çöken bir sorgu. Hiçbiri demoda görünmez. Hepsi production’da, çoğu zaman gece, görünür. Bu hata sınıflarının neden tam da “standart çözüm”ün içinde saklandığını sade.dev’deki yazıda mimari tarafıyla ayrıca ele aldım.
Çünkü araç en güvenli göründüğü yerde en tehlikeli: daha önce yazdığım gibi yaygın kalıpları sağlam yazıyor, ama problemin kendine özgü boyutunu görmeden “standart” bir çözüm üretiyor — ve standart çözüm, sizi sormadığınız bir problemin cevabıyla baş başa bırakıyor.
2. Az-orta seviye yazılım bilgisi + AI agent
Bu seviyede tablo belirgin biçimde düzeliyor. Bazı soruları doğru çerçeveleyebiliyor, üretilen kodun bir kısmını eleştirel okuyabiliyor, bariz bir hatayı yakalayabiliyor. Tek tek özellikler genelde iyi çıkıyor.
Tavan, sistemin sınırlarında geliyor. Bu parça yük altında nerede kırılır, kırılınca ne olur, bu soyutlama doğru soyutlama mı, bu veri modeli altı ay sonra hangi değişikliği kaldırır — bunlar tek bir dosyaya bakarak cevaplanmıyor. Sonuç çoğu zaman şu oluyor: iyi yazılmış özellikler, kırılgan bir sistem. Parçalar sağlam, ama aralarındaki boşluklarda biriken borç görünmüyor.
3. İyi seviye yazılım ve sistem mimarisi bilgisi + AI agent
Burada agent bir ikame değil, bir çarpan oluyor. Bir senior’ın yerine geçmiyor; uzantısı oluyor. Fark, kodun kim tarafından yazıldığında değil; kimin tarafından yönetildiğinde.
Kendi akışımda bu somut olarak şuna benziyor: agent’a önce plan çıkartıyorum, planı okuyup düzeltiyorum, sonra adım adım yazdırıyorum; çıktıyı bir junior’ın kodu gibi gözden geçiriyorum; üretime giden her satırı gerekirse savunabileceğimden emin olana kadar merge etmiyorum. Bu disiplinin tam hâlini sade.dev’de yedi madde olarak yazmıştım. Sonuç: hız artıyor ama kod kalitesi düşmüyor — çünkü muhakeme hâlâ insanda.
Bu seviyede AI gerçekten geliştirme sürecini hızlandırıyor, hem de ciddi biçimde. İddia “AI işe yaramıyor” değil; tam tersi. İddia şu: işe yaraması, onu yöneten birikime bağlı.
”Para kazanınca yazılımcı tutar düzeltiriz” neden absürt
En sık duyduğum savunma bu: önce çıkaralım, tutarsa bir yazılımcıya düzelttiririz. Kulağa makul geliyor, çünkü çoğu işi sonradan düzeltebilirsiniz. Ama düzeltilemeyecek kadar temelde olan birkaç şey var: veri modeli, güvenlik duruşu, testlerin yokluğu. Bunlar “sonra eklenecek özellik” değil; üstüne her şeyin oturduğu zemin.
Yanlış zemini sonradan düzeltmek bir tamir değil, bir yeniden inşa. Üstelik o noktaya geldiğinizde artık boş bir tabloyu değil, gerçek kullanıcı verisini taşıyorsunuzdur — en pahalı anda, en riskli göçü yapmak zorunda kalırsınız. Para kazandıran ürün, aynı zamanda elinizi kolunuzu bağlayan üründür.
Yani senior sonradan değil, önceden ucuz. Doğru veri modelini en baştan kurmak bir öğleden sonra; yanlışını canlı sistemde düzeltmek bir çeyrek. Birikimi ürünün başına koymak, en ucuz sigortadır.
Hedef: yapay zekayı yöneten gerçek bir senior
Toparlayayım. Yapay zeka ajanlarıyla proje geliştirmek mümkün, hatta hızlı — bunu inkâr eden bir yazı değil bu. Hobi projesi mi yapacaksınız, deneyecek, öğrenecek misiniz? Sonuna kadar. Orada vibe coding mükemmel bir hızlandırıcı.
Ama gerçek bir kullanıcının, gerçek bir verinin, gerçek bir paranın söz konusu olduğu bir üründe denklem değişiyor. Orada hâlâ direksiyonu tutan birine ihtiyaç var: yapay zekayı yöneten, çıktısını denetleyen, parçayı bütüne yerleştiren gerçek bir senior. Araç güçlendi; sorumluluğu devralmadı.
Yapay zeka üretimi mümkün ve ucuz kıldı. Üretileni doğru kılmayı değil.
Yorumlar
Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.