- Etkili yazılım mühendisleri, gereksinimler ve kod hakkında net zihinsel modeller kurup bunları sürdürür; ardından bunları tekrar tekrar karşılaştırıp güncelledikleri bir döngü yürütür
- LLM'ler kod yazma ve düzenleme, test yazma, hata ayıklama gibi işleri yapabilse de doğru bir zihinsel modeli sürdürme konusunda yetersiz kaldıkları için karmaşık görevlerde zorlanır
- Günümüz LLM'leri, bağlam eksikliği, yakınlık önyargısı ve halüsinasyon sorunları nedeniyle kod ile gereksinimler arasındaki farkı doğru biçimde saptayıp uygun düzeltmeleri yapmakta sınırlıdır
- İnsanlar duruma göre tüm bağlamı geçici olarak akılda tutabilir ya da ayrıntıları bir süreliğine geri plana atıp büyük resmi görebilir; LLM'ler ise bunu gerçekleştiremez
- LLM'ler gereksinimlerin basit olduğu işlerde faydalıdır; ancak karmaşık yazılım geliştirmede yazılım mühendisinin gereksinimlerin açıklığı ve kodun davranışı konusunda doğrudan sorumluluk alması gerekir ve LLM'ler yardımcı araç rolündedir
Yazılım mühendisliği döngüsü
- Deneyimli mühendisler şu adımları tekrar ederek çalışır
1. Gereksinimlerin zihinsel modelini kurmak
2. Bu modele uygun kod yazmak
3. Yazılan kodun gerçekte ne yaptığını anlamak
4. Farkları belirleyip kodu veya gereksinimleri düzeltmek
- Bu döngünün özü, doğru ve sürdürülebilir zihinsel modellere sahip olabilme becerisidir
LLM'lerin sınırları
- LLM'ler kod yazma, sorun tespit edip düzeltme, test yazıp çalıştırma, log ekleme, debugger kullanma gibi işlevleri yerine getirebilir
- Ancak zihinsel modeli sürdüremedikleri için şu sorunlar ortaya çıkar
- Kendi yazdıkları kodun iyi çalıştığını varsaymak
- Test başarısız olduğunda kod mu yoksa test mi düzeltilmeli sorusunda tahmine dayanmak
- Kafa karıştığında tüm kodu silip baştan yazmak
- İnsanlardan farklı olarak, test başarısız olduğunda modeli gözden geçirip düzeltme yönünü belirleme ya da tıkandığında konuşarak problemi çözme esnekliğine sahip değildirler
- Yazılım mühendisleri çalışmanın ortasında test çalıştırır ve sorun çıktığında hangi kısmın düzeltilmesi gerektiğini net biçimde değerlendirebilir
- Bazen işe en baştan dönmek bile soruna dair anlayışın derinleşmesiyle sonuçlanır
Gelecekteki olasılıklar
- Modeller ileride daha da gelişirse bu durum değişebilir; ancak yazılım mühendisliği basit kod üretiminin ötesini gerektirir
- İnsanlar önemli sorunları çözerken tüm bağlamı geçici olarak hatırlayıp onunla çalışabilir, belli bir meseleye odaklanabilir ya da büyük resmi görebilir
- Önemli olan bağlam bilgisini sürekli büyütmek değil, gerekli bilgiyi seçici biçimde ele alan bir düşünme tarzıdır
- LLM'lerde, insanlar gibi bağlamı geçici olarak saklama ve geri çağırma ya da büyük resim ile ayrıntılar arasında gidip gelerek düşünme yeteneği yoktur
- Günümüz LLM'lerinin başlıca kısıtları
- Bağlam eksikliği (Context omission): Gerekli bilginin eksik olduğu kısımları iyi saptayamaz
- Yakınlık önyargısı (Recency bias): Bağlam penceresi içinde en son gelen bilgilere aşırı ağırlık verir
- Halüsinasyon (Hallucination): Var olmayan ayrıntılar üretir
- Bellek özellikleri eklenirse kısmi iyileşme olabilir; ancak karmaşıklık belli bir eşiği aştığında yine de bağlamı anlama ve modeli sürdürme konusunda başarısız olur
- Birbirine benzeyen iki zihinsel modeli aynı anda koruyup aralarındaki farkı analiz etme, ardından gereksinimlerde mi yoksa kodda mı değişiklik yapılacağına karar verme becerisi eksiktir
Mevcut rolü ve kullanım alanı
- LLM'ler hızlı kod üretimi ile gereksinim ve belgeleri birleştirmede güçlüdür; bu yüzden basit ve net işlerde yeterince kullanılabilir
- Ancak basit olmayan problemlerde yeterli bağlamı korumak ve yinelemeli iyileştirme yapmak zordur
- Bu nedenle gereksinimlerin netleştirilmesi ve kod doğrulaması hâlâ yazılım mühendisinin sorumluluğundadır
- İnsanların ve ajanların (LLM'lerin) birlikte yazılım ürettiği bir ortam hedeflense de, bugünün koşullarında mühendis yön vermeli, LLM ise araç olarak kullanılmalıdır
Henüz yorum yok.