Vibe Kodlama
Vibe Kodlama Nedir?
Vibe coding, 2024/2025 yıllarında Andrej Karpathy tarafından tanıtılan yapay zekâ destekli bir programlama yöntemidir. Vibe kodlamada, ne istediğinizi doğal dilde istemlerle tarif edersiniz ve genellikle büyük dil modelleri (LLM’ler) çalışan kodun çoğunu, çoğu zaman da tamamını sizin için üretir. Zamanınız varsa, daha fazlasını öğrenmek için Rick Rubin tarafından uyarlanan vibe kodlama sanatı hakkında Art of Vibe Coding sayfasına göz atın.
Bu yeni yöntemin en büyük avantajlarından biri erişilebilirliktir; çünkü kodlama deneyimi olmayan kişiler projeler oluşturabilirken, deneyimli geliştiriciler de tamamen bağlanmadan önce yeni fikirlerin hızlıca prototipini çıkarabilirler. Bu özellikle girişimler için çok faydalıdır. Dezavantajı ise geliştiricilerin üretilen kodun nasıl çalıştığını büyük olasılıkla tam olarak anlamayacak olmalarıdır. Küçük yan projeler için bu sorun değildir, ancak üretim düzeyindeki yazılımlar için uzun vadeli sorunlara ve teknik borca yol açabilir.
Vibe kodlamayı daha akıcı hale getiren pek çok araç var. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0 ve diğerleri, yapay zekâ ile doğrudan ortamınızda çalışmanıza ya da vibe kodlama için özel arayüzler sunmanıza olanak tanır. Kişisel olarak, bu projeler için çoğunlukla Cursor IDE ve Claude Code CLI ile kaldım.
Ama işin aslı şu: Bu araçlar ve modeller para eder. Geleneksel kodlamada çoğunlukla zamanınızla ödeme yaparsınız. Vibe kodlamada ise cüzdanınızla ödeme yaparsınız. Ve ne yaptığınızı bilmiyorsanız, hem cüzdanınızla hem de zamanınızla ödeme yaparsınız. Bu sayfadaki projelerin her biri yaklaşık $10 ile $20 arasında bir maliyetle oluşturuldu. Eğer çok fazla deney yapıyorsanız bu birikir. Bu modeller geliştikçe ve daha verimli hale geldikçe maliyetin sonunda düşeceğini düşünüyorum. Şimdilik, vibe kodlamanın projeniz için mantıklı olup olmadığına karar verirken dikkate alınması gereken bir şey.
Nelerin mümkün olduğunu merak ederek, vibe kodlamayı kendim denedim ve bu sayfayı, ilkenin kendisini gerçek projeler üzerinden keşfetmek için yaptım. Sadece ürünler inşa etmiyorum, vibe kodlamanın gerçekte neler yapabildiğini test ediyor ve gösteriyorum. Bu sadece eğlence için, ama bu modeller gelişmeye devam ettikçe kodlamanın gelecekte nasıl görünebileceğine dair bir ipucu sunuyor.
Sonsuz Maymun Teoremi
Sonsuz Maymun Teoremi hakkında hiç duydunuz mu? Bu, eğer sonsuz sayıda maymuna sonsuz sayıda daktilo ve sonsuz zaman verirseniz, sonunda onlardan birinin tuşlara rastgele vurarak Shakespeare‘in tüm eserlerini üreteceğini söyleyen felsefi bir düşünce deneyidir.
Kulağa gülünç geliyor, değil mi? Ama işin çarpıcı kısmı şu. Vibe kodlama biraz bunun gibi; yalnızca maymunlar yerine elimizde yapay zekâ modelleri var, daktilolar yerine programlama dilleri var ve Shakespeare yerine çalışan yazılım elde ediyoruz.
Bir düşünün. Büyük dil modelleri milyarlarca satır kod, örüntü ve örnek üzerinde eğitilmiştir. Bir LLM‘ye bir istem verdiğinizde, aslında bir insan geliştiricinin yapacağı gibi probleminizi adım adım “düşünmez”. Bunun yerine, eğitim sırasında öğrendiği örüntülere dayanarak bir sonraki en olası token’ı tahmin eder. Esasen, istatistiksel olarak doğru görünen şeye göre kod üreterek eğitilmiş tahminler yapar.
Ve bir şekilde, çoğu zaman işe yarar. Model, gerçekten derlenen, çalışan ve probleminizi çözen kod çıktısı verir. Anlayarak değil, devasa ölçekte olasılıksal örüntü eşleştirmesiyle. Sanki evrenin en gelişmiş rastgele metin üreteci “doğru” cevabı bulmuş gibidir. Ama burada fark hızdır. O maymunların kelimenin tam anlamıyla sonsuzluğa ihtiyacı olurdu. Sizin yapay zekânız mı? Buna saniyeler ya da dakikalar içinde ulaşır.
Yani bir bakıma, vibe kodlama kullandığınızda, çözümler üretmek için milyonlarca satırlık kod örüntüsünü bir modele damıtarak kullanmış oluyorsunuz. Bu bilinçli problem çözme değil, istatistiksel bir sihir. Ve tam da bu yüzden bu kadar güçlü ve, itiraf etmek gerekirse, kodun gerçekte ne yaptığını anlamanın hâlâ neden önemli olduğunun sebebi de bu.
Soru, Cevaptan Daha Önemlidir
Sıklıkla gözden kaçan önemli bir şey var. Vibe kodlama herhangi bir cevap almakla ilgili değildir, doğru soruyu sormakla ilgilidir. The Hitchhiker’s Guide to the Galaxy eserindeki Deep Thought Süper Bilgisayarını düşünün. Hayatın, evrenin ve her şeyin nihai sorusunun cevabını hesaplamak için milyonlarca yıl harcadı ve size sadece 42 sayısını verdi. Cevap teknik olarak doğruydu, ama faydasızdı çünkü asıl sorun, ilk etapta hangi sorunun sorulacağını bulmaktı.
Vibe kodlama da aynı şekilde çalışır. İstemleriniz her şeydir, ama bağlam yönetimi de öyle. Belirsiz bir istem size belirsiz kod verir ve gerekli dosyaları, dokümantasyonu veya örnekleri bağlam olarak sağlamazsanız, model gerçekte neye ihtiyacınız olduğunu anlayamaz. Eğer kodlama, mimari ve sistem tasarımı anlayan biriyseniz, ayrıntılı istemler oluşturabilir ve LLM‘yi mükemmel çözümlere yönlendirmek için doğru bağlamı seçebilirsiniz. Ama ne istemeniz gerektiğini ya da hangi bağlamı sağlamanız gerektiğini bilmiyorsanız, yapay zekâ da bilmeyecektir.
Aslında vibe kodlamanın deneyimli geliştiriciler için bu kadar güçlü olmasının nedeni budur. İyi kodun nasıl göründüğünü biliriz, tuzakları anlarız ve modeli onlardan uzaklaştıracak istemler yazabiliriz. Teknik geçmişi olmayan başlangıç seviyesindekiler için bu gerçek bir sınırlama haline gelir. Çalışan kod elde edebilirsiniz, ama neyin yanlış gittiğini ya da sırada neyi istemeniz gerektiğini anlamadan sıkışıp kalırsınız.
Vibe Kodlama Yeterli Olmadığında
En yeni yapay zekâ modelleri etkileyici, ama sihirli bir çözüm değiller. Vibe kodlama üretimde çalışabilir, ama yalnızca ona ciddiyetle yaklaşırsanız. Sağlam birim testlerine ihtiyacınız var. Sisteminizin ne yapması gerektiği için net doğruluk kaynaklarına ihtiyacınız var. Bir şeyler bozulduğunda veya yön değiştirdiğinde bunu yakalamanız gerekir. Ve hacker zihniyetine ihtiyacınız var. Klişelerin dışına çıkın ve vibe ile kodlanmış projenizi beklenmedik şekillerde kırmaya çalışın. Hangi uç durumları düşünmediniz? Birisi hangi güvenlik açıklarını istismar edebilir? Sadece çalışan kod ile gerçekten sağlam kodu ayıran şey budur.
Ama işin aslı şu: Yapay zekâ sizi sahiplenmez. Siz yapay zekâya sahipsiniz. Ürettiği şeyi olduğu gibi kabul etmeyin. Gözden geçirin. Test edin. Kırın. Ve dürüst olmak gerekirse, kod tabanınızın belirli bölümleri için eski usul kodlamaya geri dönmeniz gerekecek. Odaklanın, derin düşünün, kendiniz yazın. Vibe kodlama işleri hızlandırır, ama gerçekten önemli olduğunda gerçek programlamanın yerine geçmez.
Öğrendiğim başka bir şey daha var. Bazen yapmanız gereken tek şey, yapay zekâ ile bir oturumu bitirip yenisini başlatmaktır. Konuşma geçmişiniz büyüdükçe modelin performansı düşer. Daha fazla hata yapar, daha az tutarlı kod üretir ve daha sık halüsinasyon görmeye başlar. Bunu fark edip durdurmazsanız, bu hatalar birbirini büyütür ve işler giderek kötüleşir. Bu, tekrar tekrar fotokopi çekilmiş bir belgeyi okumaya çalışmak gibidir. Sıfırdan başlamak her şeyi temiz ve net tutar.
Vibe ile Kodlanmış Projeler
Aşağıda, vibe kodlama metodolojisini kullanarak oluşturduğum iki proje, stairs (repo) ve transcendental (repo) yer alıyor. Çoğunlukla istemlerden üretilmiş olup, el emeği bağlam sağlama, hata ayıklama ve GitLab Pages’e dağıtımla sınırlıydı. Bunlar, vibe kodlama aracılığıyla yaratıcı fikirleri kodla birleştirdiğinizde nelerin mümkün olduğunu gösteren eğlenceli statik site deneyleridir. İkisi de GitLab üzerinde barındırılıyor.