← Radar

Konu: Kodlama3 dk okuma

Kod birikiyor, güven birikmiyor: Kent Beck'ten ajan çağı için üç ders

Bu neden önemli?

Ajanlar kodu senin anlayabileceğinden hızlı yazıyor. Beck, bu hızın asıl maliyetini gösteriyor: Kodu yazarken kendiliğinden oluşan anlayış ve güven artık oluşmuyor. Testler, küçük adımlar ve hazır reçeteler yerine deney yapma alışkanlığı, bu açığı kapatmanın onun önerdiği yolları.

Kısaca Kent Beck

Kent Beck, Extreme Programming’in (XP) yaratıcısı ve test-driven development’ı (TDD) yaygınlaştıran isim. Java’nın en bilinen test çatısı JUnit’i Erich Gamma’yla birlikte yazdı, 2001’deki Agile Manifesto’nun 17 imzacısından biri. The Pragmatic Engineer’da Gergely Orosz’la yaptığı iki buçuk saatlik söyleşide kariyerini baştan sona anlattı. Biz kariyer hikâyesini değil, bugüne taşıdığı dersleri seçtik.

Kod güvenden hızlı birikiyor

Beck’e göre yapay zekâ çağının asıl sorunu kod üretmek değil. Kod hızla birikiyor ama güven aynı hızla birikmiyor. Ona göre bir programa güven şöyle oluşuyor: Bir alan kavramını anlamak için uğraşıyorsun, onu koda döküyorsun, sonra gerçekten anladığını gösteren testler yazıyorsun. Birlikte programlayan iki kişi de bu sırada birbirine güvenmeyi öğreniyor. Kullanıcıya “Bu butonla aslında hangi sorunu çözmek istiyorsun?” diye sorup konuşmak da öyle. Ajana yazdırıp “Bitti patron” cevabını aldığında bu adımların hiçbiri yaşanmıyor.

Bu yüzden Beck, “Önce kodlama, sonra tüm yazılım mühendisliği ortadan kalkacak” iddiasına katılmıyor. Ona göre kodlama işin küçük bir parçası. Geri kalanı güven kurmak, insanlarla bağ kurmak ve alanı anlamak. Charity Majors da benzer bir yerden bakıyor: Darboğaz artık kodu yazmak değil, doğru çalıştığından emin olmak.

Üç evre: keşif, büyüme, hasat

Beck’in Facebook’ta geçirdiği yıllardan çıkardığı model 3X: Explore, Expand, Extract. Facebook’un hem dev hem hızlı büyüyen hem de yenilikçi kalabilmesini, projelere evresine göre bambaşka davranmasıyla açıklıyor.

  • Explore (keşif): Neyin tutacağını bilemezsin. Birbirinden bağımsız, olabildiğince ucuz bir sürü deney yaparsın. Bu bir sayı oyunu.
  • Expand (büyüme): Bir şey tutunca gerisini bırakırsın. Sadece ona odaklanır, önüne çıkan engelleri tek tek aşarsın.
  • Extract (hasat): Büyüme artık öngörülebilir. Elinde bir reçete (playbook) var, küçük ayarlar büyük fark yaratıyor, maliyeti düşürüyorsun.

Modelin dersi şu: Kodu nasıl yazdığın, projeyi nasıl yönettiğin, kimi işe aldığın ve ekibi nasıl kurduğun her evrede farklı olmalı. Bir evrede doğru olan, ötekinde yanlış olabilir.

Ajanlar bizi yeniden keşfe attı

Beck’e göre sektör 20 yıldır hasat evresindeydi. “Üretimde çok hata mı var? Şu üç şeyi dene” diyen hazır bir reçete vardı. Ajanlarla bu reçete geçerliliğini yitirdi, hepimiz yeniden keşif evresindeyiz. Ona “TDD ajanlarla nasıl işler?” diye soranlara verdiği cevap: Kimse bilmiyor. Bu bir kaçamak değil, bir öneri: Gizli bir reçete bekleme, ucuza dene ve sonucunu anlat. Beck 2025’te yazdığı bir yazıda da bugünkü ajanların keşif için çok iyi, büyüme ve hasat için ise o kadar iyi olmadığını savunuyor.

Bir de hız farkına dikkat çekiyor: Yazılım geliştirme hızlandı ama iş dünyasının temposu hızlanmadı. Ona göre bu uyumsuzluk giderek daha çok göze batacak.

TDD ve “cin”

TDD’nin çıkışı da bir keşif. Beck, çocukken okuduğu eski bir programlama kitabındaki yöntemi hatırladı: Önce beklenen çıktıyı yazarsın, sonra programı. Bunu Smalltalk için yazdığı test aracı SUnit’e uyarlayınca ortaya kodu yazmadan önce testi yazmak çıktı. Söyleşide ilk tepkisinin bu fikre gülmek olduğunu anlatıyor.

Bugün Beck yapay zekâ ajanlarına “cin” (genie) diyor: Dileğini yerine getiriyor ama çoğu zaman istediğin gibi değil. 2025’te Rust ve Python’da bir B+ ağacı kütüphanesi yazarken çalışma biçimine augmented coding adını verdi. Vibe coding’de sadece sistemin davranışına bakarsın. Augmented coding’de kodun karmaşıklığı, testler ve test kapsamı da seni ilgilendirir. Ajana verdiği talimat klasik TDD döngüsü: Önce başarısız bir test (red), sonra onu geçiren en basit kod (green), sonra düzenleme (refactor). Her seferinde tek test, küçük commit’ler. Ajanı izlerken üç alarm işaretine bakıyor: döngüye girmesi, istenmeyen özellik eklemesi ve testleri devre dışı bırakmak ya da silmek gibi hileler.

Söyleşide testin kısa vadede token’a mal olduğunu ama uzun vadede kazandırdığını söylüyor, çünkü cinin klasik hatası çalışmayan kod. Konu henüz kapanmış değil: Birgitta Böckeler’in deneyinde ajana TDD yaptırmak kaliteyi belirgin şekilde artırmadı, üstelik daha çok token harcattı. Beck’in “kimse bilmiyor” demesi de bu yüzden yerinde.

Düşün

  • Projen şu an keşif, büyüme ve hasat evrelerinden hangisinde? Uyguladığın pratikler buna uyuyor mu?
  • Ajanın yazdığı koda neden güveniyorsun: okuduğun için mi, testler geçtiği için mi, yoksa “bitti” dediği için mi?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (7, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.