Uncle Bob: "Kodu bizzat yazdığımız dönem sona erdi"
(reddit.com)- "Clean Code" ile tanınan Uncle Bob, yapay zekanın geliştiricilerden ezici biçimde daha hızlı kod yazdığı çağın geldiğini ilan ederek geliştiricilerin rolünün değişmesi gerektiğini vurguluyor
- Eskiden bir gün süren işleri yapay zeka yalnızca 5 dakikada tamamlayabildiği için, geliştiricilerin kodu bizzat yazdığı dönem sona erdi
- Ancak bunun geliştiricilere muazzam bir güç verdiği ve geçmişte hayal bile edilemeyen işleri mümkün kıldığı söyleniyor
- Test kapsamı acı vericiydi, ancak geliştiriciler artık yapay zekaya test kapsamını sağlama talimatı verebilir ve mutation tester kullanarak testlerin gerçek geçerliliğini doğrulayabilir
- Döngüsel karmaşıklık (cyclomatic complexity) analiz araçlarıyla birleştirildiğinde, yapay zekaya kod kalitesini eskisine göre çok daha yüksek bir seviyeye çıkarması söylenebilir
Ekli videonun metni
Gerçeklerle yüzleşelim. Yapay zeka sizden kat kat daha hızlı kod yazıyor. Sizin bir günde yapacağınız işi yapay zeka 5 dakikada bitiriyor. Bitti. Kodu bizzat yazdığınız dönem sona erdi. Biliyorum. Kabullenin.
Ama işin ilginç tarafı şu: Bu durum size muazzam bir güç veriyor. Çünkü artık daha önce hayalini bile kuramadığınız şeyleri yapabiliyorsunuz.
Örneğin test kapsamını düşünün. Ne kadar sancılı olduğunu biliyorum. O can sıkıcı testlerin hepsini yazmak zorundaydınız. Üstelik testlerin var olması, kodun gerçekten doğru çalıştığı anlamına da gelmiyordu. Kod kapsamını çalıştırıp hafifçe gülümseyerek, "Tamam, evet, ama bu kodun çalıştığı anlamına gelmiyor… sadece çalıştırıldığı anlamına geliyor" diyordunuz.
Artık bunu düzeltebiliriz. Çünkü artık beygir gücümüz (horsepower) var. Yapay zekaya kodu kapsamasını söyleyin, ardından mutation tester çalıştırın. Evet, bu bir araç. O aracı da yapay zekaya yaptırabilirsiniz. 5 dakikada yapar. Sonra yapay zekaya o aracı çalıştırmasını söyleyin. Bu araç kaynak kodda değişiklikler yapar ve tüm testleri çalıştırır. Testler başarısız olmazsa ne olur? O zaman başarısız olmalarını sağlayacak testleri yazar. Böylece gerçek test kapsamına sahip olursunuz.
Yemin ederim, gerçek test kapsamına sahip olursunuz.
Bir de başka ne yapabileceğinizi biliyor musunuz? Kodun kalitesini analiz edebilirsiniz. Döngüsel karmaşıklığa bakan bir araç yazabilirsiniz. Aslında zaten harika bir araç var. 20 yıllık bir araç. Adı CRAP. Güzel isim. Neyin kısaltması olduğunu bilmiyorum. Bilmek de istemiyorum. Test kapsamı ile döngüsel karmaşıklığın birleşimi bu. Yapay zekaya CRAP puanını 5'in, hatta 4'ün altına indirmesini söyleyebilirsiniz. O zaman yapay zeka büyük fonksiyonları küçük parçalara böler ve hepsini testlerle kapsar.
Sahip olduğunuz gücü bir düşünün. Kod kalitesini daha önce görülmemiş bir seviyeye çıkarabilirsiniz.
Biliyorum. Ben o yaşlı Clean Code adamıyım. Ama dürüst olacağım. Yapay zekayı sıkı çalıştırırsanız, kodu çok, çok daha temiz hale getirebilirsiniz.
6 yorum
Reddit yorumları
Normalde Mark Hamill’in yaptığı kötü karakter seslerine benziyor
Bu gerçekten her şeyi görmüş geçirmiş bir geliştirici gibi duruyor
if (f == -1) { printf("open failed\n"); exit(1); }gibi kodları bir daha yazacağımı sanmıyorumOnun yerine bunu yapay zeka yazacak; mümkün olan tüm hata nedenleri için anlamlı parametrelerle ayrı hata tipleri ve mesajlar ekleyecek. Yapay zeka benim kadar tembel olmadığı için artık dosya işleme mantığına odaklanabilirim
Sanırım artık kodun çoğunun boilerplate kod olduğu bir döneme giriyoruz. Asıl gereken şey, ihtiyaçları iyi aktarabilme becerisi ve üretilen kodun güvenliğini (OWASP) ve performansını sürekli denetlemenin bir yolu
Aşırı derecede deterministik değil ve en güncel modeller bile gün içinde “eh iş görür” ile “neredeyse kullanılamaz” arasında ciddi dalgalanabiliyor
Doğal dil geçmişte de, şimdi de, gelecekte de muğlak ve belirsiz olduğu için bu sorunun muhtemelen çözülememesi çok olası. Bu yüzden “hmm, X’i Y’ye ekle ve Z’ye girince iyi düşün” demek yerine matematiksel formüller kullanıyoruz
Şu anda bile Claude ile yetkileri etkili şekilde ele almanın yolunu oturtmaya çalışıyorum ve yeni aksiyonlar / yetki değişiklikleri için uyguladığı yaklaşım, “kabaca çalışıyor ama bir gün mutlaka kırılacak” kodun kusursuz bir örneğiydi
Claude iyi kod yazıyor ama her zaman iyi kod yazmıyor
Yapay zeka hakkında anlaşılması gereken şey şu: “düşünme” konusunda insanlardan daha iyi değil, sadece daha hızlı. Bir şeyi istediğinizde çoğu insanın yapacağı şekilde yapıyor ama kod söz konusu olduğunda bu çoğu zaman pek iyi bir şey değil
Eskiden de birkaç geliştirici işe alıp ne istediğinizi söyleyerek bir sürü bug dolu sonuç alabiliyordunuz ve tek bir değişiklik üç başka yeri bozabiliyordu. Claude’u kendi haline bırakırsanız o da aynısını yapıyor. Bunu bizzat gördüm ve çözüm her zaman içeri girip yazılan kodu okumak, sonra da daha az kırılan ve daha sağlam olacak şekilde refactor etmesini söylemek oluyor
Claude ile kod yazdığınız sürece, o kodun iyi olup olmadığını değerlendirebilme yeteneğine hâlâ ihtiyacınız var. Tıpkı özgeçmişinizi ya da muhasebe evraklarınızı ona yazdırsanız bile çıkan sonucu kontrol etmeniz gerekmesi gibi
Eskisi gibi kod yazmayacağız belki ama ortaya çıkan şeyi okuyup deneyim ışığında gözden geçirme becerisi hâlâ gerekli
Sorun şu ki herkes “İngilizce biliyorum, o zaman Claude’a program yaptırabilirim” diye düşünüyor. Ama İngilizce bilmek, Claude’a Hawking radiation’ı çürüten bir doktora tezi yazdırabileceğiniz anlamına gelmiyor. Çünkü sonucun doğru olup olmadığını değerlendirecek hiçbir yolunuz yok
Microsoft scaffoldingi tanıttığında bugün olduğundan daha fazla değil, daha az programcı yoktu; şimdi daha fazla programcı var. Basic gibi diller sayesinde assembler yerine insanların okuyabildiği komutları girmeye başladığımızda da, ondan önce delikli kartlara kod basılan döneme kıyasla daha fazla programcı vardı
Bilgisayarlar her zaman giderek daha az kısıtlı, okuyup yazması daha kolay komut kümeleriyle programlandı
Bob Martin saygı duyduğum biri ama bu kez haksız olduğunu düşünüyorum. İnsanlar hâlâ bilgisayara komut yazacak. Sadece bunu sınırlı ve çok belirli komut kümeleriyle değil, çok daha az kısıtlı ve insanlar için çok daha okunabilir bir dille yapacaklar
Hiçbir şey bitmedi. Daha yeni başlıyor. Programlama yeni bir dil çıkardı ve onun adı English
Zaten bugün bile rekor miktarda yazılım üretiyoruz ve bu daha da hızlanacak. Öncekinden daha fazla kod yazacağız ve çok daha hızlı olsak bile sonunda daha fazla insan bir şekilde yazılımla çalışıyor olacak. Çünkü çıktı aşırı ucuzladı; bu da Jevons paradoksuna benziyor
“Bu kez farklı” diye düşünmek kibirli bir yaklaşım ve zeki insanlar bile çok boyutlu üstel büyümenin ne anlama geldiğini hayal etmekte zorlanıyor. İyileşen tek şey büyük dil modelleri değil
O yüzden buna katılıyorum
Bu balonun zirvesi tam olarak bu, değil mi? Buraya not düşüyorum ☎️
Onun anlattığı çalışma biçimi, yazılım kalite metrikleri, profesyonel testler ve yıllara dayanan kod kalitesi anlayışı gerektiriyor
Henüz bu tür araçlar yeterince yok. En azından yaygın şekilde benimsenmiş değiller. Sektörün bunu kabul edeceğinden de emin değilim
CI/CD uygulamalarını hayata geçirmek o kadar da zor değildi ama birçok şirket yine de hepsini benimsemedi ve bunun yerine daha fazla insan alıp verimsiz şekilde çalışmaya devam etti. Yapay zeka bunların hepsini varsayılan olarak halletmedikçe böyle olmaya devam edecek. Mevcut Claude Code, Cursor ve Codes araçları bunun için yeterli değil
Bu adamı Agent yapmış bir Matrix gibi
Yapay zekayı düzgün yönlendirmek için üst düzey teknik derinlik gerekiyor. AI’a durmadan kod ekletmek tek başına sürdürülebilir değil
Ayrıca hâlâ tamamen yapay zekayla işletilen, pazar düzeyinde tek bir ürün bile duymadım. O yüzden biraz sakin olmak lazım
Sıradaki adım herhalde insan beynini de vibe coding’le programlamak olur
Güzel yazı için teşekkürler
Sahadaki geliştiricilerin görüşlerine bakınca gerçekten de kod yazanların dönemi bitmiş gibi görünüyor. Sanayi Devrimi sırasında makineleri parçalayan işçilerden farkları yok gibi. Oldukça makul görünen yeni bir dil ortaya çıktı; buna hızla uyum sağlamazsanız "elenirsiniz".
Ama kodu olduğu gibi yığıp bırakan durumlar da çok fazla..
https://eslint.org/docs/latest/rules/complexity
reddit'teki görüşler olumsuz ya da alaycı sözlerle dolu gibi görünüyor.
Gerçekte yapay zeka sayesinde test kapsamı, E2E testleri gibi şimdiye kadar ertelenmiş kısımları kararlı biçimde ilerlettiğimiz durumlarda ise bu tutum bana daha çok sinik görünüyor.