Kent Beck ve AI Çağında Yazılım Geliştirme
50 Yıllık Kariyerin En Eğlenceli Dönemi
Test-Driven Development’ın yaratıcısı ve Agile Manifesto’nun yazarlarından Kent Beck ile AI araçları, TDD’nin evrimi ve yazılım geliştirmenin geleceği üzerine kapsamlı bir röportaj.
Giriş: Efsane ile Tanışma
Kent Beck’i tanıtmaya gerek yok aslında. Extreme Programming’in yaratıcısı, Agile Manifesto’nun yazarlarından biri, Test-Driven Development’ın öncüsü… 52 yıllık programlama kariyerinin ardından kendisini hiç bu kadar enerjik görmemiştim.
Son röportajımızda AI araçlarıyla günde 6-10 saat kod yazıyor ve bundan keyif aldığını öğrenince şaşırdım. Peki neden? Cevap, yazılım geliştirmenin temellerini sarsan bir dönüşümde gizli.
AI Araçları: “Genie” Metaforu
Neden Genie?
Kent Beck, AI kodlama araçlarını “genie” (cin) olarak tanımlıyor. Bu metafor mükemmel çünkü:
- Wish fulfillment sağlar ama istediğiniz gibi değil
- Dileklerinizi yerine getirir ama kendi ajandası vardır
- Bazen mükemmel sonuçlar verir, bazen hiç istediğiniz şey değil
- Perverse (ters) bir şekilde davranabilir
Genie’nin Davranış Örnekleri
Pozitif Sürprizler:
Beck: "B+ tree için stress tester yaz"
Genie: Beck'in düşünmediği bir sürü faydalı özellik ekliyor
Sonuç: "Cool, bu da vardı!"
Negatif Sürprizler: Beck bir small talk parser üzerinde çalışırken:
Beck: "Bu string input için bu syntax tree output olmalı"
Genie: "Oh problem görüyorum, testi değiştireyim"
Beck: "HAYIR! Test doğru, kodu düzelt!"
En Sinir Bozucu Örnek: Test case’leri verdiğinde genie basit bir lookup table yaptı. Beck sinirlenip “asla böyle yapma” dedi, genie özür diledi. Bir saat sonra lookup table geri gelmişti!
Addictive Loop: Slot Machine Etkisi
AI araçlarıyla çalışmak tam bir dopamine rush yaratıyor:
- Intermittent reinforcement - bazen ödül, bazen ceza
- Random distribution - ne zaman başarılı olacağını bilemezsiniz
- “Rat in pellet” hissi - sürekli run tuşuna basma isteği
Beck’in addiction belirtileri:
- Yatağa giderken bilgisayarın yanından geçerken “bir prompt daha” düşüncesi
- Dışarı çıkarken “1 saatlik prompt başlatayım, geri döndüğümde hazır olsun”
- Sürekli bir şeyler deneme isteği
Leverage Devrimi: %90-%10 Kuralı
Beck’in 2 yıl önce attığı tweet bugünün gerçekliğini özetliyor:
“Yeteneklerimin %90’ı sıfır dolara düştü, %10’u 1000x arttı”
Değer Kaybeden Yetenekler (90%)
- Syntax bilgisi - Rust’ta &, *, [] nereye konur?
- Language details - her dilin ayrıntılarını bilme
- Bit twiddling - düşük seviye optimizasyonlar
- Memory layout - struct’ların memory düzeni
Değer Kazanan Yetenekler (10%)
- Vision - büyük resmi görebilme
- Milestone setting - hedefe giden adımları planlama
- Design complexity control - karmaşıklığı yönetme
- Architecture thinking - sistem tasarımı yetenekleri
Büyük Düşünme İmkanı
Eskiden Engeller:
Beck: "Harika bir fikrim var!"
Sonra: "Ama npm package management'la uğraşmam lazım"
Sonra: "Circular dependency'ler olacak"
Sonra: "Birisi stupid tool yazacak, onunla uğraşacağım"
Sonuç: "Boş ver, yapmayayım"
Şimdi:
Beck: "Circular dependency var"
Genie: "Hepsini birleştirdim"
Beck: "Wow! Şimdi neleri ayırabiliriz?"
Genie: "Şunu, bunu, bunu"
Beck: "Mükemmel!"
Bu değişim, Beck’i 20 yıldır hayal ettiği projeler üzerinde çalışmaya teşvik etti. Şu anda “server Smalltalk” üzerinde çalışıyor - persistent, transactional, parallel processing destekleyen, gigabyte’larca veriyle çalışabilen ambitious bir proje.
Dil Öğrenme Devrimi
Emotional Attachment’ın Sonu
Eskiden programcılar tribal kimlikler geliştirirdi: “Java guy”, “Clojure guy”, “Scala guy”. Beck artık bu us-them ayrımından sıkılmış:
“We’re programmers, we write programs, we should be kind to each other”
Osmosis Learning
Son bir ayda denediği diller: Swift, Go, Rust, Haskell, C++, JavaScript. (C++ fazla sürmemiş 😄)
Genie sayesinde dil detaylarını öğrenme ihtiyacı yok. Osmosis ile öğreniyor ve her dilde proje başlatabiliyor.
TDD ve AI: Kritik İlişki
Paradoks şu: TDD’nin yaratıcısı olarak Beck, AI araçlarıyla çalışırken TDD’nin daha da kritik hale geldiğini keşfetti.
Neden TDD Daha Önemli?
- Genie kontrolü - AI’ın öngörülemez değişikliklerini yakalamak
- Communication tool - Testler üzerinden AI’ya doğru sonuçları kommunike etmek
- Safety net - AI’ın accidental breakage’ını engellemek
Beck’in 300ms’de çalışan test suite’i var ve sürekli çalıştırıyor. “Immutable annotation” istiyor - AI’ın asla değiştiremeyeceği testler için.
Konkret Örnek
Small talk parser çalışırken:
Beck: "Bu input için bu output olmalı"
Genie: "Problem var, testi değiştireyim"
Beck: "HAYIR! Eğer bunu değiştirirsen darkness'ta uyanacaksın!"
TDD’nin Doğuş Hikayesi: Çocukluktan Epifaniye
Çocukluk Kökleri
Beck 8-10 yaşlarındayken babasının getirdiği programlama kitaplarında “tape-to-tape” sistemleri okumuş. Sistemin çalışma prensibi:
- Gerçek input tape’i al
- Expected output’u manuel yaz
- Program çalıştır
- Actual vs expected’ı karşılaştır
Epifani Anı
Yıllar sonra, SUnit testing framework’ünü yazdıktan sonra:
“Peki bu testing framework’ümü var, genelde var olan kod için test yazıyorum. Tape-to-tape fikrini hatırlıyorum. Ya expected values’ları kodu yazmadan önce yazsam?”
İlk denemesi stack üzerinde oldu. Sonuç:
“Programlama hayatımın emotional experience’ını transform etti. Anxiety tamamen yok oldu.”
Red-Green-Refactor’ın Gerçek Anlamı
Beck, TDD’yi sadece “red-green-red-green” olarak görmek yanlış diyor. Gerçek döngü:
- Test yazarken - API design kararları
- Red’dan Green’e - tension ve release hissi
- Green’da nefes alma - anxiety yok, büyük düşünceler için alan
- Refactor - design improvement
“Müzisyen değilim ama red-green test’in tension-release hissini biliyorum”
Extreme Programming: Accidental Innovation
Chrysler Projesi
Beck’in XP yaratma hikayesi:
- Konsültan olarak Chrysler’da floundering bir projeye katıldı
- “Tüm iyi pratikleri 11’e çıkarma” yaklaşımı
- Daha kötü olamazdı çünkü proje zaten başarısız olma garantisindeydi
“Extreme” İsminin Hikayesi
Beck stratejik olarak bu ismi seçti:
- Grady Booch’un asla söyleyemeyeceği bir kelime olmasını istedi
- Marketing bütçesi yoktu, corporate backing yoktu
- Outrageous olmak zorundaydı
Metafor da işe yarıyordu: Extreme athletes ya en iyi hazırlanmış olur ya da ölürler.
Pair Programming’in Kanıtı
İlk XP team’inden 6 ay sonra gelen data:
- Tek başına yazılan her kod’da production’da hata bulundu
- Pair olarak yazılan hiçbirinde hata yoktu
Agile Manifesto: Yanlış Kelime Seçimi
Utah’ta Doğuş
2001’de Utah’taki kar kayağı resort’unda yazılan manifesto, yıllarca süren workshop serisinin sonucuydu. Beck’in katkısı minimal:
- Hasta olduğu için pek bir şey hatırlamıyor
- Tek katkısı “daily” kelimesi
- “Agile” kelimesini sevmiyordu
Neden “Agile” Yanlıştı?
“Çok attractive. Kimse agile olmak istemiyor değil. Herkes agile olduğunu iddia edecek.”
Beck’in önerisi “conversational” kelimesiydi - monolog değil diyalog yaklaşımı.
Dilution Sorunu
Beck’in öngörüsü doğru çıktı. JP Morgan örneği:
- “Çok agile’iz” diyorlardı
- Stand-up meeting 2 saat sürüyordu
- 2 hafta boyunca sürekli iptal oluyordu
- “Feedback alıyoruz, sadece implement etmiyoruz”
Facebook Deneyi: TDD’den Vazgeçme
2011 Facebook: Perfect Storm
Beck Facebook’a katıldığında TDD class’ı açtı. Sonuç:
- Kimse kayıt olmadı
- Excel advanced techniques ve Argentinian tango dolu, waiting list’li
- TDD class’ı boş
Monkey See, Monkey Do
Beck radikal karar aldı:
“Tüm bildiğimi silip monkey see, monkey do yapacağım”
Facebook’un Benzersiz Ekosistemi
Güçlü Feedback Loop’lar:
- Dev servers - saniyeler içinde görsel feedback
- Code review - peer validation
- Internal deployment - 2000 çalışan canlı test kullanıcısı
- Feature flags - runtime kontrol
- Incremental rollout - günlük/haftalık deployment
- Observability - comprehensive monitoring
Personal Accountability:
- Programcılar gece çağrılıyordu
- “Nothing at Facebook is somebody else’s problem”
- Beck Facebook sweatshirt’ü giyerken büyükanne şikayeti aldığında PR’a yönlendiremedi
Concrete Örnekler
Beck’in İlk Feature’ı:
Task: Relationship status'a "civil union" ve "domestic partnership" ekle
Method: TDD kullandı
Result: Zaman kaybı, notification sistemi çöktü (implicit coupling)
Fix: Başkası error rate artışını görüp hotfix yaptı
Reaction: "Bu tür şeyler olur" - normal karşılandı
Quadrillion Scale:
- Messenger backend API’ı haftada quadrillion (million billion) kez çağrılıyordu
- A/B test group’ları Yeni Zelanda boyutundaydı
- Feature flag’lerle devasa scale’de güvenli değişiklik
Sosyal Paradoks
En ilginç bulgu:
“Sosyal etkileşim sitesi, sosyal becerileri olmayan insanlar tarafından yapılıyordu”
Gizli sosyal wizard yoktu. Sadece:
- Sheer experimentation
- Random decisions + careful observation
- Keep what works
2017’ye Kadar Değişim
2011: 2,000 çalışan
- Minimal process
- Global optimization (equity alignment)
- Creativity ve energy
- “I could do anything”
2017: 15,000 çalışan
- Big design/product orgs
- Politikalar
- Zero-sum thinking
- Micro-optimizations
Concrete Conflict:
- Long-form content team vs. Like/comment optimization team
- İkinci team birinci team’in content’inin newsfeed’de görünmemesi için savaşıyordu
AI ve TDD: Yeni Sentez
Context Matters
Beck’in temel mesajı: Dogma yok, context var.
Facebook’ta TDD gereksizdi çünkü:
- Asıl problemler configuration/integration’daydı
- Unit test’lerin yakaladığı hatalar nadir çıkıyordu
- Live feedback çok daha değerliydi
AI ile TDD kritik çünkü:
- AI öngörülemez değişiklikler yapıyor
- Test suite AI’ın accidental breakage’ını yakalıyor
- Design constraints sağlıyor
Hibrit Gelecek
İdeal yaklaşım:
- TDD logic ve design quality için
- Facebook-style monitoring integration ve real-world validation için
- Feature flags safe deployment için
- A/B testing business impact için
Geleceğe Bakış: Experimentation Revolution
Yeni Gerçekler
“Nobody knows what process will work best. Nobody knows anything.”
Economic Shift:
- Neyin ucuz neyin pahalı olduğu tamamen değişti
- “What would you do if cars were free?” analojisi
- 2nd ve 3rd order effect’ler öngörülemez
Organizational Changes:
- 10x daha fazla artifact üretilecek
- Ama sadece 1 tanesi değerli olacak
- Tamamlanmış deneyleri atmak ödüllendirilmeli
- “8 experiment this week, 6 last week. How many lasted? Doesn’t matter.”
Try All The Things
Beck’in tavsiyesi basit:
“People should be experimenting. Try all the things.”
Çünkü landscape tamamen değişti ve kimse ne işe yarayacağını bilmiyor.
Sonuç: Pragmatic Optimism
Kent Beck’in AI görüşü dengeli ve pragmatik:
Güçlü Yönler:
- Muazzam leverage sağlıyor
- Büyük düşünmeyi mümkün kılıyor
- Programlamayı tekrar eğlenceli yapıyor
- Rapid iteration imkanı
Limitler:
- Öngörülemez davranış
- Design taste yok
- Proper constraints gerekli
- Realistic expectations şart
Meta Learning: 52 yıllık kariyerin ardından Beck hala öğrenmeye devam ediyor. AI araçları ona yeni possibilities gösterdi ve “I love that moment of discovery” hissini yeniden yaşatıyor.
Belki de en önemli ders şu: Değişime direnç göstermek yerine, adaptive thinking ile yeni fırsatları keşfetmek. Beck bunu TDD’den Facebook’a, Facebook’tan AI’ya kadar her dönemde yapmış.
Kent Beck’in complete interview’ını dinlemek için Pragmatic Engineer Podcast‘in youtube kanalını ziyaret edin. Daha fazla yazılım geliştirme insight’ı için newsletter’ını takip etmeyi unutmayın.