Meta'nın bu hafta yapay zekâ kodlama pazarına girişi, üzerinde durmaya değer belirli bir iddiayla geldi. Şirketin terminal tabanlı yeni kodlama ajanı Muse Code, Mark Zuckerberg'in lansman paylaşımına göre kodu yalnızca her seferinde bir dosya yazarak üretmiyor — iş yeterince büyük olduğunda "izole iş ağaçlarında paralel çalışan ayrı alt ajanlara dallanıyor" ve Meta'nın kendi testlerinde, bir oyun için altı özelliği çakışma olmadan eşzamanlı olarak oluşturduğu bildiriliyor. Bu, bağımsız olarak doğrulanmış bir sonuç değil, lansman günü satıcının kendi ürünüyle ilgili yaptığı bir iddia; dolayısıyla spesifik sayıya şüpheyle yaklaşın. Ancak tarif ettiği iş akışının biçimi yalnızca Meta'ya özgü bir fikir değil — paralel, izole ajan yürütümü kodlama ajanı alanında varsayılan bir modele dönüşüyor ve bu işte "iyi olmanın" gerçekte ne anlama geldiğini değiştiriyor.
Son iki yılda yapay zekâ kodlama araçlarının temel vaadi büyük ölçüde tek bir iş parçacığında hız üzerine kuruluydu: bir ajan, bir görev, incelenecek bir diff. Çoğu mühendis bu beceriyi zaten kısmen içselleştirdi — diff'i oku, testleri çalıştır, yayına al. Çalışmayı izole iş ağaçlarında çalışan birden çok ajana dağıtmak bu modeli bozuyor. Artık tek bir düşünce akışından gelen tutarlı bir değişikliği incelemiyorsunuz. Hepsinin birbirleriyle çelişmeden, mantığı yinelemeden veya kod tabanının ortak bir parçasının nasıl davranması gerektiği konusunda sessizce farklı varsayımlara kapılmadan tek bir çalışan sistemde birleşmesi gereken, eşzamanlı ve bağımsız biçimde gerekçelendirilmiş birkaç değişikliği inceliyorsunuz.
Bunun eski becerinin daha hızlı bir versiyonu değil, gerçekten farklı bir beceri olmasının nedeni
Yapay zekâ tarafından yazılmış tek bir diff'i incelemek çoğunlukla bir doğruluk kontrolüdür: Bu, söylediği şeyi yapıyor mu; yakınındaki herhangi bir şeyi bozuyor mu? Birkaç paralel ajan çıktısını incelemek, yakın zamana kadar çoğu insanın pratik yapma fırsatı bulmadığı bir katman daha ekliyor; çünkü yakın zamana dek tek bir kişinin işi bunu gerektirmiyordu: diff'ler arası tutarlılık. İki ajan aynı yardımcı fonksiyonun kendi sürümlerini mi icat etti? Bir ajanın "izole" değişikliği, başka bir ajanın yeniden yazmanın ortasında olduğu bir dosyaya sessizce mi bağlandı? Birleştirme adımı gerçekten gerçek bir çakışmayı yakaladı mı, yoksa bir dalın varsayımını diğerinin yerine sessizce mi seçti? Bunlar geleneksel anlamda hatalar değil — her bir diff kendi testlerini geçebilir ve yine de birleştirildiklerinde tutarsız bir sistem ortaya çıkarabilir.
Bu, dağıtık mühendislik ekiplerinin insan katkıcılarla her zaman yönettiği sorunun aynısı; yalnızca günler yerine dakikalara sıkıştırılmış hâli. Fark şu: Bir görev belirsiz göründüğünde, insanlardan oluşan bir genç mühendis ekibi doğal olarak rehberlik ister; kendisine verilen parçayı tamamlamak üzere optimize edilmiş bir ajan ise çoğu zaman yanlış soruya kendinden emin, sözdizimi açısından temiz bir yanıt üretir. Bunu fark etmek, görevi en başta bölümlere ayıracak kadar iyi anlamış birini gerektirir — yani asıl darboğaz becerisi "kodu hızlı incelemek" değil, "bir işi güvenle paralel çalıştırılabilecek parçalara bölmek ve hangi parçaların bölünemeyeceğini bilmek"tir.
Özellikle kodlama araçlarının ötesindeki daha geniş örüntü
Bunun yalnızca geliştirici araçlarıyla sınırlı olmadığını fark etmekte yarar var. Google'ın aynı hafta tanıtılan arama kutusu yeniden tasarımı — metin, görseller, PDF'ler, video ve açık Chrome sekmelerini girdi olarak alabilen AI Overviews ile AI Mode'u tek bir akışta birleştiriyor ve işi bir sorgu ayrıştırıcısı yerine bir ajana devrediyor. Her iki sürümdeki ortak nokta aynı: arayüz, "yapay zekâya tek bir açık talimat ver ve tek bir açık çıktıyı kontrol et" anlayışından, "yapay zekâya kapsamı gevşek belirlenmiş bir hedef ve bir yığın girdi ver, adımları kendisinin belirlemesine izin ver" anlayışına doğru ilerliyor. Bu örüntü yalnızca kod düzenleyicilerinde değil, ajan tabanlı araçların kullanıma sunulduğu her yerde ortaya çıkıyor — bu da inceleme ve orkestrasyon becerisinin mühendislik rollerinin çok ötesinde, işinde tek bir istem yerine çok adımlı bir görev boyunca bir yapay zekâ sistemini yönlendirmesi gereken herkes için önemli olacağı anlamına geliyor.
Somut olarak ne çalışmalı?
Kod yazıyor veya kodu yönetiyorsanız, birkaç spesifik ve kontrol edilebilir alışkanlık bu beceriyi hakkında okumaktan daha hızlı geliştirir:
- İzole bir iş ağacının gerçekte ne olduğunu öğrenin (git'in
worktreeözelliği, aynı anda birden çok dalın ayrı dizinlere alınmasını sağlar); paralel değişikliklerin "çakışamayacağı" iddiasına güvenmeden önce bunu öğrenin. Yürütme sırasında izolasyon, birleştirme zamanında tutarlılığı garanti etmez — bu, yakından izlemeye değer ayrı bir adımdır. - Bir kodlama ajanına, işi parçalara ayırmasını gerektirecek kadar büyük bir görevi bilerek verin ve ortaya çıkan diff'leri okumadan önce işi nasıl böldüğünü okuyun. Ayrıştırma biçimi, çıktıya güvenip güvenemeyeceğiniz hakkında kodun kendisinden daha fazla bilgi verir.
- Diff'leri teker teker değil, gruplar hâlinde inceleme pratiği yapın. Birbiriyle ilişkili üç veya dört değişikliği aynı anda zihninizde tutup nerelerde uyuşmadıklarını fark etme becerisi, her birini ayrı ayrı inceleyip kendi değerleri üzerinden onaylamaktan farklıdır.
- Yalnızca başarıda değil, çakışma durumunda ne olduğunu sorun. Otomatik paralel birleştirme iddiasındaki herhangi bir araç, iki ajanın gerçekten aynı mantığa dokunduğunda ne yaptığını size gösterebilmelidir — bu hata yolu, mutlu yoldan daha fazla olmak üzere, aracı gerçek işleri teslim etmenin güvenli olup olmadığını gösterir.
Bunların hiçbiri işvereninizin belirli bir ürünü benimsemesini beklemenizi gerektirmiyor. Örüntü — parçalara ayır, dağıt, yeniden birleştir, doğrula — artık birden çok satıcının kodlama ajanlarında ve tüketici yapay zekâ arayüzlerinde aynı şekilde ortaya çıkıyor. Bu döngüyü yalnızca tek iş parçacıklı çıktıları incelemek yerine yönetmeye alışan kişiler, hangi şirketin ajanı sonunda öne çıkarsa çıksın geçerliliğini koruyacak bir beceri geliştiriyor.