AI’ın kod yağdırdığı çağda, sular çekilince kimin çıplak yüzdüğü ortaya çıkar
(evan-moon.github.io)Temel özet
- ChatGPT’nin ortaya çıkışından yalnızca 3 yıl sonra, geliştiricinin bir günü "kod yazma"dan "AI çıktısını denetleme"ye kayıyor
- Geliştiricinin rolü ortadan kalkmıyor; daha çok kod yazan kişiden inceleme ve onay yetkisine sahip kişiye doğru ağırlık merkezi değişiyor
- AI hukuki bir kişilik değil ve sorumluluk üstlenemez; EU AI Act gibi düzenlemeler de sorumluluğu insanlara atfeden yönde güçleniyor
- AI çağında gereken temel yetkinlik, prompt tekniği değil; uzun vadeli değişiklik maliyetini öngörme, soyutlama kararı verme, örtük bilgiyi dile dökme gibi bugün de
iyi geliştiriciler için gerekli olan şeylerle özünde aynı - Bunu Fred Brooks’un rastlantısal karmaşıklık ile özsel karmaşıklık kavramlarıyla açıklarsak, AI’nın çözdüğü şey yalnızca rastlantısal karmaşıklık; alanın
özsel karmaşıklığı ise hâlâ insan yargısı gerektiriyor - Araç ustalığının (prompt engineering vb.) geçerlilik süresi araç değiştirme döngüsüne bağlıyken, tasarım yargısı ve örtük bilgiyi dile dökme yeteneği
yazılımın özsel karmaşıklığı var olduğu sürece geçerliliğini korur
Ayrıntılı özet
ChatGPT’den sonraki 3 yıl
- 2022’nin sonunda ChatGPT ilk çıktığında, bu hızda gelişeceği öngörülmemişti
- Geleneksel geliştirici tanımı: "doğal dilde gereksinimi analiz etme → tasarım → doğrudan uygulama" adımlarının tümünü yapan kişi
- Bugün ise günün büyük bölümünü "AI’ya bağlam aktarma → üretilen kodu okuyup düzeltme ve yeniden isteme" süreci kaplıyor
- AI kodlama ajanları artık basit yardımcı düzeyini aşıp, fonksiyon ve modül düzeyinde insanın yazdığı koddan ayırt edilmesi zor bir seviyeye geldi
Yazardan karar vericiye
- Kod üretme eylemi "doğrudan kod yazma"dan "kod hakkında karar verme"ye kayıyor
- Buradaki "karar", yalnızca AI çıktısının istenildiği gibi olup olmadığını kontrol etmek değil; iş niyetinin teknik uygulamaya doğru çevrilip çevrilmediğini
doğrulamak anlamına geliyor - Temel soru şu: "AI’nın yazdığı kod nedeniyle bir ödeme hatası çıkarsa sorumluluk kimde?"
- AI hukuki bir kişilik olmadığı için, kodu inceleyip onaylayan geliştirici ve organizasyon sorumluluk sahibidir
- 2024’te yürürlüğe giren EU AI Act, sağlık, finans, altyapı gibi yüksek riskli alanlarda AI sistemleri için insan gözetimini zorunlu kılıyor
- Otonom araç kazalarında sorumluluğun üreticiye ve sürücüye gitmesi, FDA onaylı tıbbi AI’da son kararın doktorda olması, 2010 Flash Crash’te ise
algoritmayı işleten tarafın düzenleme konusu olması buna örnek - Otomasyon gelişip derinleştikçe sorumluluk yapısı bulanıklaşmıyor; tersine daha da net biçimde insan tarafına bağlanma eğilimi gösteriyor
AI çağında geliştiriciden beklenen yetkinlikler
① Uzun vadeli değişiklik maliyetini öngörebilme
- AI, "çalışan kod" üretmek için optimize edilmiş durumda (öğrenme verilerindeki en sık kalıpları yeniden üretir)
- Şu anda çalışan kod ile 6 ay sonra da bakımının kolay olduğu kod, tamamen farklı ölçütlere göre değerlendirilir
- Kötü tasarımın maliyeti, kodun yazıldığı anda değil, değişiklik gerektiği anda ortaya çıkar
- LinkedIn’de "AI ile yaptık ama bakımı zor olduğu için geliştirici işe aldık", "özellik ekleyemeyip projeyi kapattık" türü paylaşımlar artıyor
② Kodu çok yönlü değerlendirme yeteneği
- İşlevsel doğruluğun ötesinde (testle doğrulanabilir), yapısal kalite, performans etkileri ve güvenlik boyutları aynı anda dikkate alınmalı
- AI’nın kod üretim hızı arttıkça, üretim hızı ile inceleme yeteneği arasındaki denge kolayca bozuluyor
- İnsanların doğrudan yazdığı dönemde kod üretim miktarının fiziksel bir üst sınırı vardı; AI ise saniyeler içinde yüzlerce satır üretebiliyor
- İnceleme kriterleri, paralel inceleme sistemi ve otomatik geçitler yetersizse teknik borç çok daha hızlı birikiyor
- Birçok şirketin AI kullanımından sonra verimlilik artışı hissedememesinin nedeni şu: kod üretimi hızlandı ama AI kodunu inceleme süreci darboğaz haline geldi
③ Soyutlama yeteneği
- AI da arayüz tanımı, sınıf ayrımı, modül ayrımı yapabiliyor ve biçimsel olarak bunu iyi yapıyor
- Belirleyici fark şu: AI’nın soyutlaması istatistiksel ortalamalara dayanıyor; deneyimli geliştiricinin soyutlaması ise sınırlı kaynaklar ve belirsiz bir gelecek
içindeki ödünleşim kararlarına dayanıyor - AI çıktısı kodun tehlikeli yanı, dışarıdan bakınca iyi görünmesi: dosyalar uygun biçimde ayrılmış, isimlendirme teamüllere uygun, kalıplar tanıdık
- Sorun, değişiklik gerektiğinde ortaya çıkıyor: "Sadece bir ödeme yöntemi ekleyecektik ama 'derli toplu görünen' yapının birçok yerini aynı anda değiştirmemiz
gerektiğini ancak o zaman fark ettik" - Frontend örneğinde AI, veri çekme, durum yönetimi ve UI render işlemlerini tek bir devasa bileşene doldurabiliyor; ya da tam tersine, basit bir grafik
için 3 özel hook + bir context provider kurabiliyor
④ Örtük bilgiyi açık hale getirebilme
- "Bir tuhaflık var" türü sezgiyi, "bu fonksiyonun iki farklı sorumluluğu var" gibi somut bir dile çevirebilmek gerekir ki AI’ya doğru talimat verilebilsin
- Burada gereken şey few-shot, chain-of-thought gibi biçimsel prompt teknikleri değil; neyin yapılacağını açıkça tanımlama ve hangi bağlamın önemli
olduğuna karar verip bunu aktarma becerisidir - Araç ustalığının ömrü, araç değiştirme döngüsüne bağlıdır (
jQuery → React,Webpack → Vite) - Tasarım yargısı ve örtük bilgiyi dile dökme becerisinin ömrü ise yazılımın özsel karmaşıklığı var olduğu sürece sürer
Kasıtlı beceri gelişimi tasarımına duyulan ihtiyaç
- "Aracın yapamadığı şeye odaklan" deniyor ama paradoks şu ki, tam da bunu geliştirme fırsatları giderek azalıyor
① AI’ya devredilmemesi gereken iki nokta: tasarım ve inceleme
- Kod yazımından önce gelen tasarım aşamasında, prompt yazmadan önce arayüzü ve sorumluluk sınırlarını tanımlarsanız, AI çıktısıyla kendi tasarım kararınızı
karşılaştırabilirsiniz - PR incelemesini AI’ya bırakıp sorun görünmüyorsa onaylamak, "beden eğitimi dersinde sahaya çıkıp tüm süreyi bankta oturarak geçirip geri dönmek" gibi
② Kasıtlı olarak doğrudan kod yazılan zaman
- Tasarım sezgisi, uygulamanın zorluğunu bilmeden oluşmaz. Yaşanmamış bir zorluk, sezgiye dönüşmez
- Junior geliştirici için AI tarafından üretilen kodu incelemek, "henüz araba kullanmayı öğrenen birinden otonom aracın kararlarını değerlendirmesini istemek"
gibidir - Gelecekte kod yazma yeteneği, her gün yapılan işten çok, muhakemeyi korumaya yönelik bir antrenman olacak (incelemeci ehliyeti alma süreci gibi)
③ "Neden"i dile dökme pratiği
- "Tuhaf duruyor" noktasında kalırsa bu sadece sezgidir; "bu fonksiyon iki sorumluluk taşıyor" noktasına gelirse bu artık dildir
- AI’nın ürettiği kod çalışıyor diye orada durmamak; "neden bu yapı seçildi?", "başka bir yapı olsaydı ödünleşimler ne olurdu?" sorularını kendine sorma
alışkanlığı
Sonuçta öz değişmedi
- Fred Brooks (1986): rastlantısal karmaşıklık (araçların sınırları) ile özsel karmaşıklık (problemin kendi içinde olan) ayrımı
- AI’nın çözdüğü şey rastlantısal karmaşıklık: boilerplate, tekrar eden kalıplar, sözdizimi hataları
- Özsel karmaşıklık (iş gereksinimlerinin muğlaklığı, çelişen tasarım hedeflerini dengeleme, gelecekteki değişikliklerin belirsizliği), AI gelişse bile
ortadan kalkmaz - İnsan, yargının ve sorumluluğun öznesi olarak kaldığı sürece, bu yargı için gerekli yetkinliklerin özü değişmez
- Kod üretimi otomatikleştikçe, ortaya çıkan ürünü denetleme yargısının ağırlığı daha da belirginleşecek
14 yorum
İyi görüşlerinizi paylaştığınız için teşekkür ederim!
Yazıda "sorumluluk"tan söz etmemin nedeni, insanların her açıdan yapay zekadan daha az hata yapması değil; modern toplumun hukuki ve etik sistemlerinin "sorumluluk üstlenen özne" olarak yalnızca insanı (veya tüzel kişiyi) varsaymasıdır.
gcback'in de dediği gibi, istatistiksel güvenliğin kanıtlanması hâlinde gelecekte sorumluluk çerçevesinin kendisi değişebilir; ancak en azından yakın vadede, "yapay zekanın yol açtığı bir kaza için kim hapse girecek ya da tazminat ödeyecek?" şeklindeki toplumsal ikilemin teknolojinin hızına yetişmesinin zor olacağını düşünüyorum..!
Ben de aynı fikirdeyim. Keyifle okudum.
Acaba sular gerçekten çekiliyor mu, yoksa yükseliyor mu? "Yapay zeka çağında geliştiriciden beklenen yetkinlikler" deniyor; bilemiyorum... Geliştirici diye bir şey var olmaya devam ederse tabii.
İşlerinde fiilen yapay zekayı kullanan biri olarak, AI geliştirme -> AI çıktılarının denetlenmesi sözüne gerçekten derinden katılıyorum.
Ayrıca yapay zeka, özsel karmaşıklığın giderilmesinde de büyük yardım sağlıyor. [Gereksinim analizi sırasında çelişki kontrolü, tekrar kontrolü, özsel değer üzerine soru sorma]
Yapay zekaya körü körüne inananların daha da çoğalması gerekiyor.
Sebebi ne?
Bunun da geçiş dönemi olduğunu düşünüyorum.
Ünlü futbol teknik direktörleri arasında da eski futbolcu olmayan birçok kişi var sonuçta.
Sadece seçilmiş biri değil; kavrayışı çok güçlü olduğu için ün kazandığını düşünüyorum.
Ama futbol deyince aklıma Jung Mong-gyu geliyor.
Eski bir oyuncu olmasa bile futbol teknik direktörlüğü yapabilecek niteliklere sahip olduğu ve maç sonucunun sorumluluğunu üstlenebilecek kişinin teknik direktörlük yapması gerekir.
Doğru, oyuncu kökenli olmayan teknik direktörler de var.
Ama böyle teknik direktörler, oyuncu kökenli olmadıkları için değil... oyuncu kökenli olmamalarına rağmen oyunculardan daha derin bir içgörüye sahip oldukları için öne çıkıyor gibi görünüyor. O alanda fiilen 'insanüstü' denebilecek bir düzeydeler.
Ben de katılıyorum
Son dönemde harness ya da loop yaklaşımına bakınca, insanlar yalnızca spesifikasyonu veriyor ve review ya da QA bile yapay zekalar arasında kendi kendine halledilen bir yöne gidiyor gibi görünüyor
Katılıyorum.
Sonuçta denetim ve doğrulama seviyesi de kaçınılmaz olarak yapay zekanın insanlardan daha yüksek hale gelecektir; bu yüzden maliyetin de şu anda insanların sorumluluk aldığı maliyetten daha düşük olması muhtemel görünüyor.
İster insan ister yapay zeka olsun, bu istatistiksel olarak daha az hata yapan tarafın kazandığı bir oyundur.
Yönetmenliğin demokratikleşmesi mi? haha Yönetmenlik, nitelik olduğu için yapılır; nitelik yokken de yönetmenlik yapılacak diye bir şey yok.