Orijinal Başlık: Hızı Yavaşlatma Üzerine Düşünceler
Orijinal Yazar: Mario Zechner
Çeviri: Peggy, BlockBeats
Editör Notu: Üretken AI'nın yazılım mühendisliğine hızla girişiyle, sektör duygusu "yetenek hayranlığı"ndan "verimlilik kaygısına" doğru kayıyor. Yeterince hızlı yazmamak, yeterince çok kullanmamak, otomasyonun yeterince kapsamlı olmaması gibi durumlar insanları elenmiş hissettirebilir gibi görünüyor. Ancak kodlama Ajanı gerçekten üretime girdiğinde, bazı daha gerçekçi sorunlar ortaya çıkmaya başlıyor: hatalar büyüyor, karmaşıklık kontrol dışı hale geliyor ve sistem giderek anlaşılamaz hale geliyor, verimlilik artışı kalite artışına eşdeğer bir şekilde dönüşmüyor.
Bu makale, birinci elden tecrübeye dayanarak bu "etkileşimli kodlama" akımını sakin bir şekilde değerlendiriyor. Yazar, Ajan'ın insanlar gibi hatalardan öğrenmeyeceğini, geri besleme ve darboğaz mekanizmalarının eksikliği durumunda küçük sorunların hızla büyüdüğünü belirtiyor; ayrıca karmaşık kod tabanları içinde yerel bakış açısı ve sınırlı geri çağırma yeteneğinin, sistem yapısının daha da karmaşıklaşmasına yol açtığını açıklıyor. Bu sorunların özü aslında teknolojide değil, insanların kaygıyla sürüklenerek erken aşamada karar ve kontrolü devretmesinde yatıyor.
Bu nedenle, "AI'yı tamamen benimsemek zorunda mıyım" kaygısına kapılmak yerine, insanlar ve araçlar arasındaki ilişkiyi yeniden ayarlamak daha mantıklı olabilir: Ajan'ı yerel, kontrol edilebilir görevleri üstlenmeye zorlayın ve sistem tasarımını, kalite kontrolünü ve temel kararları sıkıca elinizde tutun. Bu süreçte, "yavaşlamak" aslında bir yetenek haline geliyor; hala sistemi anlayabiliyor, tercih yapabiliyor ve işiniz üzerinde kontrol sahibi olabiliyorsunuz.
Araçların sürekli evrimleştiği bir dönemde, belki de gerçekten nadir olan, daha hızlı üretim yeteneği değil, karmaşıklık üzerine yargı yeteneği ve verimlilik ile kalite arasında seçim yapma kararlılığıdır.
Aşağıda orijinal metin bulunmaktadır:

Kaplumbağanın o suratı, bu sektöre baktığımda benim ifadem
Yaklaşık bir yıl önce, gerçekten sizi "baştan sona bir projeyi tamamlamak" konusunda destekleyebilen kodlama Ajanları ortaya çıkmaya başladı. Daha önce Aider, erken dönem Cursor gibi araçlar da vardı, ancak bunlar daha çok bir yardımcı gibi, bir "ajan" gibi değildi. Yeni nesil araçlar oldukça cezbedici, birçok insan da sürekli yapmak isteyip yapmaya fırsat bulamadığı projeleri bir oturuşta tamamladı.
Bence bu bir sorun değil. Boş zamanınızda bir şeyler yapmak zaten keyifli, çoğu zaman da kod kalitesi ve bakımı konusunda pek endişelenmenize gerek yok. Bu aynı zamanda yeni bir teknoloji yığını öğrenme yolu da sunar size.
Noel tatili sırasında, Anthropic ve OpenAI, insanları bir slot makinesi gibi içine çeken birkaç "kullanım ücretsiz" yayınladı. Birçok insan için, bu, "Ajan Kodu Yazma" sihrini gerçekten deneyimledikleri ilk zamandı. Katılanların sayısı giderek artıyor.
Günümüzde, Ajan kod yazma da artık üretim kod tabanlarına girmeye başlıyor. 12 ay geçti ve bu "ilerleme"nin sonuçlarını görmeye başladık. Aşağıda şu anki görüşlerimi bulabilirsiniz.
Bunlar çoğunlukla tecrübeye dayalı hikayeler olsa da, şu anda yazılım kesinlikle insanlara "her an patlayacakmış" hissi veriyor. %98'e varan kullanılabilirlik, artık istisnadan kurala dönüşüyor, hatta büyük hizmetler bile bundan muaf değil. Kullanıcı arayüzünde, QA ekibinin hemen fark edebileceği saçma sapan hatalarla dolu.
Kabul ediyorum, bu durum, Ajan'ın ortaya çıkmasından önce zaten varmış. Ama şimdi, sorunun hızla büyüdüğünü görüyoruz.
Şirket içinde gerçekte neler olup bittiğini göremiyoruz, ancak ara sıra bazı bilgiler sızıyor, örneğin o "AI Tarafından Neden Olan AWS Çöküşü" söylentisi. Amazon Web Services daha sonra ifadeyi "düzeltti" ancak ardından içeride 90 günlük bir yeniden yapılanma planı başlattı.
Satya Nadella (Microsoft CEO), son zamanlarda, şirkette kodun giderek artan bir şekilde AI tarafından yazıldığını sürekli vurgulamaktadır. Doğrudan kanıt olmamasına rağmen, bir his var: Windows'un kalitesi düşüyor. Microsoft'un kendi yayınladığı bazı bloglara bakıldığında, bunu varsayma eğiliminde olduklarını görebiliriz.
Ürünün "AI tarafından üretilen kodun %100'ü" olduğunu iddia eden şirketler genellikle hayal edebileceğiniz en kötü ürünü sunuyor. Kimseye karşı değilim ama genellikle GB'larla ifade edilen bellek sızıntıları, karışık kullanıcı arayüzü, eksik işlevsellik, sık sık çökmeler... Bunlar, onların düşündüğü "kalite mührü" veya "Ajan'ın her şeyi senin yerine yapsın"ın olumlu bir örneği kesinlikle değil.
Özel sohbetlerde, hem büyük şirketlerden hem de küçük ekiplerden şunu daha sık duyacaksınız: "Ajan Kodu Yazma" tarafından sıkıştırıldık ve çıkmaz sokaklara itildik. Kod incelemesi yok, tasarım kararlarını Ajan'a bırakma, gereksiz özellikleri yığma... Sonun iyi olması beklenemez.
Neredeyse tüm mühendislik disiplinlerini ve öznel değerlendirmeleri terk ettik ve bir "bağımlılık haline gelme" çalışma şekline düştük: Tek amacımız var - en fazla kodu en kısa sürede üretmek, sonuçlar ne olursa olsun, hiç dikkate alınmıyor.
Bir düzenleme katmanı kuruyor ve otomatik bir Ajan ordusunu yönetiyorsun. Boncuklar taktın, ama aslında neredeyse çıkarılamaz bir "zararlı yazılım" olduğunu tamamen bilmiyorsun. Sadece "herkesin böyle yaptığını" söylendiği için. Bunu yapmazsan "ngmi" olursun.
Sürekli olarak "oyun içi döngü" içinde kendini tüketiyorsun.
Bak — Anthropik bir grup Ajan ile bir C derleyici yaptı, şu anda bazı sorunlar var ama sonraki nesil model kesinlikle bunu düzeltebilir, değil mi?
Bir de — Cursor bir grup Ajan ile bir tarayıcı yaptı, şu anda temelde kullanılamaz, ara sıra manüel müdahaleye ihtiyaç duyuyor, ama sonraki nesil model bunun üstesinden gelebilir, değil mi?
"Dağıtık","böl ve hükmet","öz yönetimli sistem","kara ışık fabrikası","altı aylık yazılım sorununu çözme","SaaS öldü, ninem Claw kullanarak bir Shopify kurdu"...
Bu anlatılar hoş görünüyor.
Elbette, bu tür bir yaklaşım, senin gibi neredeyse kimse tarafından (ki buna kendin de dahilsin) kullanılmayan yan projen için belki gerçekten "uygun" olabilir. Belki, gerçekten de, bu şekilde gerçek anlamda kullanılabilir ve çöp olmayan bir yazılım ürünü yaratabilecek bir deha var. Eğer sen o kişiysen, sizi gerçekten takdir ederim.
Ama en azından benim çevremdeki geliştirici topluluğunda, bu yaklaşımın gerçekten etkili olduğu bir örnek görmedim. Tabii ki, belki de sadece hepimiz çok acemiyiz.
Ajan'ın sorunu şudur: Hata yaparlar. Bu başlı başına bir sorun değil, insanlar da hata yapar. Belki sadece bazı doğruluk hatalarıdır, kolay tanınır ve düzeltilmesi kolaydır, bir geri dönüş testi daha sağlam hale getirebilir. Belki de linter'ın yakalayamadığı kod kokuları vardır: burada gereksiz bir yöntem, orada mantıksız bir tür, hatta tekrar eden kodlar gibi. Bunlar tek başına büyük bir sorun değildir, insan geliştiriciler de bu tür küçük hatalar yaparlar.
Ama "makine" insan değildir. İnsanlar aynı hatayı birkaç kez tekrarladıktan sonra genellikle artık yapmazlar - ya biri tarafından azarlanırlar ya da gerçek bir öğrenme sürecinde düzeltirler.
Ajan bu öğrenme yeteneğine sahip değildir, en azından varsayılan olarak yoktur. Aynı hatayı tekrar tekrar yaparlar, hatta eğitim verilerine dayanarak farklı hataların harika kombinasyonlarını "yaratırlar".
E tabii ki onu "eğitmeye" çalışabilirsiniz: AGENTS.md'ye kurallar yazın, bu hatayı bir daha yapmaması için onu yönlendirin; geçmiş hataları ve en iyi uygulamaları sorgulamasını sağlayacak karmaşık bir hafıza sistemini tasarlayın. Bu belirli bazı sorun türleri için gerçekten etkili olabilir. Ama ön şart şudur - önce bu hatayı yaptığını gözlemlemelisiniz.
Daha önemli olan fark şudur: İnsanlar darboğazdır, ancak Ajan değildir.
İnsanın birkaç saat içinde 20.000 satır kod yazması mümkün değildir. Hata yapma oranı düşük olsa bile, bir gün yalnızca sınırlı sayıda hatayı sistemleştirebilir, bu hataların birikimi yavaştır. Genellikle, "hata nedeniyle yaşanan acı" belirli bir noktaya ulaştığında, insanlar (acıyı içgüdüsel olarak reddettikleri için) mola vererek düzeltme yaparlar. Ya da insan değiştirilir ve başkası gelip düzeltir. Sonuç olarak, sorunlar ele alınır.
Ancak önceden planlanmış bir Ajan "ordusu" kullandığınızda, darboğaz olmadığı gibi "acı" da yoktur. Bu başlangıçta önemsiz hatalar sürdürülemez bir hızda birikir. Döngüden çıkarılmış durumdasınız ve bu zararsız gibi görünen küçük sorunların bile nasıl devasa bir hale geldiğini fark etmezsiniz. Gerçekten acı çekmeye başladığınızda genellikle artık çok geçtir.
Bir gün yeni bir özellik eklemek istediğinizde mevcut sistem mimarisinin (esasen hatalı birikim) değiştirilemeyeceğini fark edersiniz; veya kullanıcılar son sürümde sorun yaşamaya başlar ve hatta veri kaybedilebilir.
O zaman fark edersiniz: Bu kod yığınına güvenemezsiniz artık.
Dahası, Ajanınızın ürettiği binlerce birim testi, anlık test ve uçtan uca test de artık güvenilir değildir. "Sistem normal şekilde çalışıyor mu"u belirlemenin tek yolu, manuel testlerden ibarettir.
Tebrikler, kendinizi (ve şirketi) zor durumda bıraktınız.
Artık sistemde neler olduğunu tamamen bilmiyorsunuz çünkü kontrolü Ajan'a devrettiniz. Ve Ajanlar, esasen "kompleksiteyi satan"lardır. Eğitim veri setlerinde birçok kötü mimari kararını görmüşlerdir ve güçlendirme öğrenme sürecinde bu kalıpları sürekli güçlendirmişlerdir. Sistemi tasarlamak için onlara izin verirseniz, sonuçları tahmin edilebilir.
Sonunda elde ettiğiniz şey: Çeşitli "endüstriyel en iyi uygulamaların" kötü taklidiyle dolu son derece karmaşık bir sistemdir ve kontrolü kaybetmeden önce bunları sınırlamamışsınız.
Ancak sorunlar bundan ibaret değil. Ajanlarınız birbirleriyle yürütme sürecini paylaşmaz, tam kod tabanını göremez ve daha önce sizin veya diğer Ajanların aldığı kararları anlayamaz. Bu nedenle, kararları her zaman "yerel"dir.
Bu doğrudan önce bahsedilen sorunlara yol açar: Fazla tekrarlanan kod, soyut bir yapı için soyutlama, çeşitli tutarsızlıklar. Bu sorunlar sürekli birikir ve sonunda çözümsüz karmaşık bir sistem oluştururlar.
Bu aslında insanların yazdığı kurumsal düzeydeki kod tabanına çok benziyor. Sadece bu tür karmaşıklık genellikle yılların birikimi sonucudur: acı birçok insana yayılmıştır, her biri "mutlaka iyileştirilmesi gereken" kritik eşiğe ulaşmamıştır, örgütün kendi hoşgörüsü de oldukça yüksektir, bu nedenle karmaşıklık ve örgüt birlikte "ortak evrim" geçirmiştir.
Ancak insan + Ajan kombinasyonu altında, bu süreç büyük ölçüde hızlanır. İki insan, bir yığın Ajan ile birlikte, bu karmaşıklığa birkaç haftada ulaşabilir.
Belki de Ajan'ın "enkazı temizlemesine", kodunuzu yeniden yapılandırmasına, optimize etmesine ve sistemi temiz hale getirmesine yardım etmesini umarsınız. Ancak sorun şudur: Artık bunu başaramazlar.
Çünkü kod tablosu çok büyük ve karmaşıklık çok yüksektir ve her zaman yalnızca belirli bir bölümü görebilirler. Bu yalnızca bağlam penceresinin yetersiz olması veya uzun bağlam mekanizmasının milyonlarca satır kod karşısında işe yaramaz olması kadar basit değildir. Sorun daha gizlidir.
Ajan'ın sistemini düzeltmeye çalışmadan önce, değiştirilmesi gereken tüm kodları ve yeniden kullanılabilecek mevcut uygulamaları bulmalıdır. Bu adıma, Ajan araması (Agentic search) adını veriyoruz.
Ajan bunu nasıl yapacağı, ona verdiğiniz araçlara bağlıdır: Bash + ripgrep olabilir, sorgulanabilir kod dizini, LSP hizmeti, vektör veritabanı...
Ancak hangi aracı kullanırsanız kullanın, özü aynıdır: kod tablosu ne kadar büyükse, getirme oranı o kadar düşüktür. Ve düşük getirme oranı demek şudur: Ajan tüm ilgili kodları bulamaz ve dolayısıyla doğru düzeltmeleri yapamaz.
İşte buradan başlayarak, o "kod kokusu" dediğimiz küçük hatalar ortaya çıkar, mevcut uygulamayı bulamaz, bu nedenle tekrar tekerlek icat eder, tutarsızlık getirir. Sonunda, bu sorunlar sürekli olarak yayılır, birleşir ve son derece karmaşık bir "çöp çiçeği" oluşturur.
Peki, bütün bunlardan nasıl kaçınabiliriz?
Ajan kod yazma işini sanki bir deniz canavarı gibi yapar, olağanüstü hızlı kod oluşturma hızı ve o "ara sıra sizi şaşırtan kesintilerle ancak bazen etkileyici" zeka tarzı sizi içine çeker. Bu ajanlar genellikle bazı basit görevleri inanılmaz hızda ve yüksek kalitede tamamlayabilirler. Gerçek sorun başladığında, bu şekilde bir düşünceye kapıldığınız zamandır: "Bu şey çok güçlü, bilgisayar, işimi yap!"
Görevi doğrudan Ajan'a devretmek elbette sorun değil. İyi Ajan görevleri genellikle şu özelliklere sahiptir: kapsam iyi bir şekilde sınırlanabilir, tüm sistemi anlamaya gerek yoktur; görev kapalı bir döngüdür, yani Ajan sonuçları kendisi değerlendirebilir; çıktı kritik bir yol değildir, sadece geçici araçlar veya iç kullanımlı yazılımlardır, gerçek kullanıcıları veya geliri etkilemez; ya da sadece düşüncelerinizi desteklemek için bir "lastik ördek" e ihtiyacınız vardır - temelde fikrinizi alıp internetin sıkıştırılmış bilgisi ve sentezlenmiş veriyle çarpıştırır.
Eğer bu koşullar sağlanıyorsa, o zaman bu, Ajan'a devredilmeye uygun bir görevdir, ancak insan olarak hala nihai kalite kontrol görevlisidir.
Örneğin, Andrej Karpathy'nin öne sürdüğü otomatik araştırma yöntemini kullanarak uygulama başlatma süresini optimize etmek mi? Harika. Ancak bunun tarafınızca, üretime uygun olmayan bir kod ürettiği konusunda net olmalısınız. Otomatik araştırmanın etkili olmasının nedeni, ona bir değerlendirme fonksiyonu vermiş olmanız ve belirli bir ölçüt etrafında (örneğin başlatma süresi veya kayıp) optimize etmesine izin vermiş olmanızdır. Ancak bu değerlendirme fonksiyonu yalnızca çok dar bir boyutu kapsamaktadır. Ajan, cesurca tüm değerlendirme fonksiyonunda olmayan şeyleri görmezden gelecektir, kod kalitesi, sistem karmaşıklığı ve hatta bazı durumlarda doğruluk bile (eğer değerlendirme fonksiyonunuz zaten sorunluysa).
Aslında temel fikir çok basittir: Ajan'ı sıkıcı olan, size yeni bir şey öğretmeyecek veya zaten denemeye zamanınızın olmadığı keşif çalışması gibi şeyler için kullanın. Sonra sonucu değerlendirmek ve gerçekten mantıklı ve doğru kısımları seçip son uygulamayı tamamlamak size kalsın. Tabii ki, bu son adımda Ajan'ın da yardımını alabilirsiniz.
Ancak üzerinde durmak istediğim şey şudur: Gerçekten, biraz yavaşlayın.
Düşünmek için zaman ayırın, aslında ne yaptığınızı, neden yaptığınızı düşünün. Kendinize bir "hayır" deme şansı verin, "hayır, buna ihtiyacımız yok." Ajan'a net bir üst sınır belirleyin: Günlük olarak kaç kod üretebileceğine izin verin, bu miktarı gözden geçirme kapasitenizle uyumlu olmalı. Mimari, API gibi sistem "genel görünümü"nü belirleyen tüm kısımlar size ait olmalı. Otomatik tamamlama ile "el yazısı kod hissini" bulabilir veya Ajan ile çift programlama yapabilirsiniz, ancak esas olan şudur: Kodun içinde olmanız gerekmektedir.
Çünkü, kodu kendiniz yazmak veya adım adım nasıl oluşturulduğunu izlemek, bu süreç size bir "sürtünme hissi" getirecektir. Bu sürtünme, tam olarak ne yapmak istediğinizi, sistem nasıl çalıştığını, genel olarak "hissi" nasıl olduğunu daha iyi anlamanızı sağlar. Bu, deneyim ve "zerafet" in devreye girdiği ve şu anda en gelişmiş modellerin bile henüz yerine geçemediği yerdir. Yavaşlayın, biraz sürtünmeyi kabul edin, öğrenme ve büyüme şekliniz budur.
Nihayetinde, elinizde hala bakımı yapılabilir bir sistem olacaktır - en azından Ajan'ın ortaya çıkışından öncekinden daha kötü olmayacaktır. Evet, önceki sistem de mükemmel değildi. Ancak kullanıcılarınız size minnettar olacak çünkü ürününüz "kullanışlı" olacak, çöpe çıkarılan bir yığın değil.
Yaptığınız işlevler daha az olacak, ama daha doğru olacak. "Hayır" demeyi öğrenmek, başlı başına bir yetenektir. Güvenle uyuyabileceksiniz çünkü en azından sistemin ne yaptığını, kontrolün sizde olduğunu hala bileceksiniz. Bu anlayış, ajansal aramanın geri çağrı sorununu telafi etmenizi, Ajan'ın çıktısını daha güvenilir hale getirmenizi, daha az onarıma ihtiyaç duymanızı sağlar.
Sistem bir sorunla karşılaştığında sorunu kendiniz çözebilirsiniz; tasarım zaten baştan yanlış olduğunda sorunu anlayabilir ve onu daha iyi bir forma dönüştürebilirsiniz. Bir Aracı olup olmaması aslında o kadar da önemli değil.
Tüm bunlar disiplin gerektirir. Tüm bunlar insan olmadan yapılamaz.
BlockBeats Resmi Topluluğuna Katılın:
Telegram Abonelik Grubu: https://t.me/theblockbeats
Telegram Sohbet Grubu: https://t.me/BlockBeats_App
Twitter Resmi Hesabı: https://twitter.com/BlockBeatsAsia