Giriş ‒ Yapay zekanın geliştirici verimliliği konusundaki yanlış algılar ve gerçekler
- Mark Zuckerberg (Meta CEO'su), "2025 sonuna kadar tüm orta seviye mühendisleri yapay zeka ile değiştireceğini" açıklayınca, şirketlerin CTO'ları da benzer bir baskı altında kaldı.
- Konuşmacı, "yapay zekanın geliştiricilerin yerini tamamen alamayacağını" net biçimde belirtirken, yapay zeka kullanımının verimliliğe açıkça yardımcı olduğunu ancak bunun her zaman geçerli olmadığını, hatta verimliliğin azaldığı durumların da az olmadığını vurguluyor.
Araştırma tasarımı ve veriler
- 3 yıl boyunca, 600'den fazla şirket, 100 binden fazla yazılım mühendisi, milyarlarca satır kod ve on milyonlarca commit üzerinde ölçüm yapıldı.
- Verilerin büyük kısmı özel depolar (Private Repo) tabanlı olduğundan, geliştirme ekipleri ve şirketler düzeyinde gerçek verimlilik değişimlerini ölçmek mümkün oldu.
Mevcut araştırmaların sınırlamaları
- Vendor odaklı raporlar çoğunlukla kendi yapay zeka araçlarını tanıtma amacı taşıdığı için nesnellikten uzak olabiliyor.
- Basit commit/PR sayısı ya da ortalama çalışma süresindeki değişim gibi göstergeler gerçek verimliliği çarpıtabiliyor.
- Örneğin yapay zeka kullanımından hemen sonra bug veya yeniden çalışma (rework) amaçlı commit'ler de arttığı için, yüzeysel olarak verimlilik yükselmiş gibi görünebiliyor.
- "Greenfield (yeni proje) deneylerinde" yapay zekanın etkisi çok büyük görünürken, mevcut kod tabanında (brownfield) fark azalıyor.
- Geliştirici anketleri (self-report), gerçek verimlilikle güçlü bir korelasyon göstermiyor; algı ile gerçek arasında %30 puanı aşan farklar var.
Stanford'un verimlilik ölçüm modeli
- Uzman panel değerlendirmesine benzeyen yapay zeka tabanlı otomasyon modeli kullanıldı:
- Her commit için işlevsel değişim (added/removed/refactored/rework) ölçüldü
- Basitçe "satır sayısına" değil, "işlev, bakım yapılabilirlik ve kaliteye" odaklanıldı
- Eklenen işlev miktarı, refactoring ve son commit'lerde yeniden düzeltme (rework) oranı gibi unsurlar hassas biçimde incelendi.
Temel araştırma bulguları
- Genel olarak yapay zeka kullanımıyla ortalama verimlilik %15~20 arttı.
- Ancak bununla birlikte önemli miktarda "yeniden çalışma" (rework) da görüldüğünden, hissedilen fayda abartılma eğiliminde olabiliyor.
- Ekip, şirket ve görev türüne göre büyük farklılıklar bulunuyor.
Verimlilik farklarının nedenleri: görev zorluğu, proje türü, dil, kod tabanı büyüklüğü
| Proje türü | Düşük karmaşıklık | Yüksek karmaşıklık |
|---|---|---|
| Greenfield (yeni) | %30~40 ↑ | %10~15 ↑ |
| Brownfield (mevcut) | %15~20 ↑ | %0~10 ↑ |
- Düşük karmaşıklığa sahip yeni (greenfield) projelerde yapay zekanın etkisi büyük.
- Mevcut (brownfield) ve karmaşık sistemlerde etki belirgin biçimde azalıyor; bazı vakalarda verimlilik düşüşü de tespit edildi.
- Bu bulgular, konuşmada aktarıldığı üzere 27 şirket ve 136 ekipten oluşan örnekleme dayanıyor.
Dil popülerliği ve yapay zeka etkisi
- Python/Java/JavaScript (popüler diller) için yapay zekanın verimlilik artışı daha yüksekken,
- COBOL/Elixir/Haskell (popüler olmayan diller) için yapay zekanın katkısı neredeyse yok; hatta karmaşık işlerde zaman kaybı ve verimlilik düşüşü bile yaratabiliyor.
- Örneğin popüler olmayan bir dil ve yüksek zorluk birleştiğinde "hata çok, doğru kod üretemiyor" durumu görülüyor; yani hiç olmaması daha iyi olabiliyor.
Kod tabanı büyüklüğü ve yapay zeka etkisi
- Kod tabanı büyüdükçe yapay zekanın verimlilik artışı etkisi keskin biçimde azalıyor.
- Nedenler:
- Context window sınırı: LLM, birden fazla dosyanın ya da yüz binlerce ila milyonlarca satırın tüm bağlamını birlikte işleyemiyor.
- "Sinyal/gürültü oranı"nın düşmesi: Bağlam bilgisi arttıkça yapay zeka ilgili bilgiyi doğru seçmekte zorlanıyor.
- Alan bazlı ve servis bazlı karmaşıklık arttıkça gerçek yeniden uygulama zorluğu yükseliyor
- Gerçekte en yeni büyük LLM'lerde (Gemini 1.5 Pro vb.) "token sayısı" arttıkça doğruluk %90'dan %50'nin altına hızla düşebiliyor.
- Nedenler:
Genel değerlendirme: Yapay zeka ne zaman etkili?
- Yapay zeka çoğu durumda, özellikle de basit yeni kod yazımında, geliştirici verimliliğini açık biçimde artırıyor.
- Ancak karmaşık bakım işleri, eski (büyük) kodlar, niş diller ve çok sayıda bağımlılık içeren ortamlarda sınırlar oldukça belirgin.
- En iyi yapay zeka verimlilik stratejisi, şirketin, ekibin ve görevin özelliklerine göre dikkatle tasarlanmalı; bu alan için "one size fits all" yaklaşımı geçerli değil.
- Anketler, pazarlama metrikleri veya basit commit sayısı artışları güvenilir değil; gerçek kod işlevselliği, tekrar eden iş oranı ve yeniden çalışma miktarı gibi "gerçek dünya ölçümlerine" ihtiyaç var.
Ek yorumlar ve örnekler
- "Ghost engineer": Verilerde, mühendislerin yaklaşık %10'unun neredeyse hiç çalışmadan maaş aldığı vakalar da görüldü.
- Ekip liderleri ve CTO'ların gerçek sorunları hızla teşhis edebilmesi için "metrik tabanlı karar alma" araçlarının gerekliliği vurgulandı.
Sonuç
- Yapay zeka "çoğu durumda" verimliliği artırıyor, ancak hem abartılı hem de eksik değerlendirmelerden kaçınmak gerekiyor.
- İyi sonuç veren "somut koşulların" (basit/yeni/popüler dil/küçük codebase) belirlenip buna göre uygulanması gerekiyor; eleştirel değerlendirme olmadan ve ayrım yapmadan yaygınlaştırmak ters etki yaratabilir.
2 yorum
Ana yazılıma uygulamasanız bile, test programlarında veya projenin başlangıç aşamasında yapay zeka çok fazla zaman kazandırıyor.
Kod yazdırma kısmını bir kenara bıraksak bile, yapay zeka benimsendikten sonra asistan özelliklerinin geceyle gündüz kadar değiştiğini düşünüyorum. Artık yapay zekanın bir seçenek değil, zorunluluk olduğu bir döneme girdiğimizi düşünüyorum.
Gerçekten MVP'de çok yardımcı oluyor. Özellikle yorumlar, loglama ve geçmiş yazımında mutlaka kullanılması gerektiğini düşünüyorum.
Ancak kod tabanı büyüdükçe halüsinasyon görüyor, mevcut kodu unutuyor ve garip sonuçlar üretiyor. Context engineering kullanmayı ya da kod tabanını küçültmenin yollarını düşünmek gerekiyor.
Muhtemelen daha büyük prompt'lar kullanılabilirse iyileşecektir.
Şu anda Java, Python, JavaScript ve Go'da iyi çalışıyor gibi görünüyor. Genelde Copilot kullanıyorum, ayrıca Claude ve ChatGPT de kullanıyorum.