- Başlangıçta junior+AI kombinasyonunun da tek başına yeterince yüksek kaliteli kod üretebileceği beklentisi vardı; ancak pratikte senior+AI kombinasyonu çok daha güçlü çalışıyor
- AI, boilerplate üretimi, tekrarlayan işlerin otomasyonu, hızlı deney ve doğrulama konularında etkili; ancak bundan gerçek değer üretmek junior’lara kıyasla senior’lar için daha kolay
- Buna karşılık kod inceleme, mimari tasarım, kod kalitesi yönetimi, güvenlik sorunları gibi alanlarda AI sınırlarını gösteriyor; hatta junior ve AI birleşimi daha fazla risk oluşturabiliyor
- Bu nedenle AI en uygun şekilde hızlı prototipleme, tekrarlayan işlerin optimize edilmesi, çok disiplinli çalışmaların desteklenmesi, özellik testi otomasyonu için kullanılıyor
- Sonuç olarak AI hâlâ senior’ların yetkinliğini güçlendiren bir araç olarak işliyor; kısa vadede junior’ların yerini almak ya da yaygınlaştırıcı bir etki yaratmaktan çok, gücü uzmanlar etrafında yoğunlaştıran bir eğilim ortaya çıkıyor
AI’nin yazılım geliştirme sahasında getirdiği değişim
- Yazılım geliştirme dünyasında “kodlama tamamen AI tarafından mı ikame edilecek?” sorusu sürekli gündeme geliyor
- İlk başta, AI ile junior geliştiricilerin birlikte çalışmasının senior geliştiricilerin rolünü azaltacağı ve organizasyonların verimliliğini artıracağı yönünde güçlü bir anlatı vardı
- Ancak sahadaki gerçeklikte beklentinin aksine, şirketlere daha fazla değer sağlayan kombinasyon junior+AI değil, senior+AI oldu
AI’nin iyi yaptığı işler ve sınırları
-
AI’nin güçlü yönleri
- Boilerplate ve scaffold üretimini hızlı yaparak üretkenliği artırır
- Tekrarlayan ve rutin işleri otomatikleştirerek geliştirme hızını yükseltir
- Farklı uygulama yaklaşımlarını hızla deneme ve doğrulama imkânı sunan bir deney ortamı sağlar
- Hızlı feature yayını için etkilidir, ancak yalnızca neye ihtiyaç duyulduğu net olduğunda
- Bu tür işler pratikte en yüksek verimi deneyimli senior geliştiricilere sağlar
- Junior’lar da kullanabilir, ancak aynı etkiyi üretmeleri oldukça zordur
-
AI’nin sınırlamaları ve zayıf noktaları
- Kod inceleme konusunda AI’nin mantıksal akıl yürütme yeteneği yetersizdir
- Edge case’ler ortaya çıktığında deneyimli bir senior’ın müdahalesi hâlâ zorunludur
- Prompt yazımı tarafında doğru sonucu almak için yüksek düzeyde anlayış ve bilgi gerekir
- Bilgi eksikliği olduğunda çıktı kalitesi düşer ve bug riski artar
- Mimari tasarım konusunda AI hâlâ yetersizdir
- Sağlam bir yapı tasarımı insanın üst düzey akıl yürütmesini gerektirir ve AI’nin tasarladığı projelerin teknik borca saplanma riski yüksektir
- Kod kalitesi yönetiminde (uygun soyutlama, tasarım kalıplarının kullanımı vb.) zayıflıkları vardır
- Güvenlik açısından junior+AI kombinasyonu sık sık zafiyet üretebilir
- Senior varlığında belirli ölçüde dikkat ve önlem almak mümkündür
- Yanlış öğrenme riski vardır: Kod doğru değerlendirilemezse, AI’nin ürettiği kod organizasyona zarar verebilir
- Bu nedenlerle bugün AI, senior geliştiriciler için bir tehdit değil; aksine üretkenliği yoğun biçimde artıran bir araçtır
- Buradaki amaç junior geliştiricileri eleştirmek değil, aşırı beklentilerden ve onları riskli durumlara sokmaktan kaçınmaktır
AI için uygun kullanım alanları
- Hızlı prototipleme: Fikir denemelerini ve uygulama hızını artırmak için uygundur
- Tekrarlayan rutin işlerin otomasyonu: Zaten iyi bilinen rutinlerde hız kazanımı büyüktür
- Çok disiplinli işbirliği: Bilinmeyen alanlarda metod veya kütüphane önerileri, alanlar arası bağlantılar kurma gibi konularda faydalıdır
- Fonksiyon testi üretimi: Basit ve düşük riskli kodlarda otomasyon ve doğrulama işleri için uygundur
Sonuç ve çıkarımlar
- AI’nin yazdığı kodlarda hâlâ her satırın insanlar tarafından gözden geçirilmesi gerekir ve sistem belirlenimsiz (non-deterministic) özellik gösterir
- Program doğrulaması için yazılan test kodlarını bile tamamen AI’ye bırakmaya güvenmek zordur
- “AI ‘bilmiyorum’ dediğinde gerçekten bilmiyor mu?” sorusunda olduğu gibi, AI’nin algılama ve doğrulama sınırları hâlâ mevcuttur
- Junior+AI kombinasyonu, maliyet düşürme yanılsamasından ibaret çıktı; gerçekte odak senior’ların yetkinliğini güçlendirmeye kaydı
- Yazılım geliştirme, inşaat sektöründen farklı olarak hâlâ mimarların bile doğrudan kod yazdığı olgunlaşmamış bir aşamada bulunuyor
- Maliyet azaltma baskısı ise geliştiricilerin değerini zayıflatıp tükenmişliğe yol açıyor
- Şimdilik AI, junior’ların yerini alan ya da onları kitleselleştiren bir unsur olmaktan çok uzmanlar (senior’lar) merkezli bir yardımcı araç olarak işlev görüyor
- AI’nin geleceği konusunda iyimser olmak mümkün; ancak kısa vadede beklentileri yeniden ayarlamak gerekiyor
2 yorum
Hacker News görüşleri
Junior geliştiriciler çoğu zaman LLM’in ürettiği safsataların içine sürüklendiklerini fark etmiyor
Benim durumumda, önceden tasarladığım bir
terraformmodülünü bir junior deploy etmeye çalışıyordu ama iş uzun süre gecikince durumu kontrol ettimBu junior bir sorun olduğunu söyleyip bakmamı istedi
Repoya baktığımda tam bir karmaşaydı. Claude’un onu yanlış yöne sürüklediği çok belliydi
“Burada neden bu kadar çok Python dosyası var? Modülün içinde zaten hepsi var?” diye sordum, o da “Ben de tam bilmiyorum, Claude böyle yapmamı söyledi” dedi
Junior hem deneyimsizdi hem de LLM araçlarına aşırı bağımlıydı. Tasarımda, implementasyonda ve problem çözmede de durum aynıydı
Eğer şu an LLM’in saçmaladığını ayırt edemiyorsan, sonu gelmeyen bir bataklığa saplanıyorsun
Öte yandan LLM, gerçekten nefret ettiğim tekrarlı işlerin çoğunu ciddi biçimde azalttı
Ben LLM yanlış yola sapmaya başladığında bunu hemen fark edip anında durdurabiliyorum
Hatta bu sayede kod yazmaya ve yazılım üretmeye yeniden heves duymaya başladım
Sonuç olarak üretkenliğim arttı ve ortaya çıkan işler de daha iyi oldu
“Ben de tam bilmiyorum, Claude yaptı” cevabını duymak gerçekten sinir bozucu
Ben kodu gerçekten okuyup didik didik sorular soran bir reviewer’ım; hem junior hem senior geliştiriciler bunu gayet rahat söyleyebiliyor
Kendisinin de anlamadığı kodu push etmek; ekip, ürün ve şirket için çok büyük bir risk unsuru
“Ben de tam bilmiyorum, Claude yaptı” gerçekten çok büyük bir alarm işareti
Bilmiyor olmak sorun değil, boşlukları kapatmak için LLM kullanmak da elbette sorun değil
Bir problem yaşayıp “Üretilmiş kod var ama neyin ne olduğunu tam anlayamadım, doğru yönde miyiz diye bakabilir misiniz?” diye açıkça sorması daha iyi olurdu
Asıl sorun, bunu hiç dert etmemesi ve bir senior doğrudan sorana kadar gizlemesi
Senin nefret ettiğin o basit, tekrarlı işler tam da juniorların sistem yapısını öğrenmesi için iyi bir giriş görevidir
“Ben de tam bilmiyorum, Claude yaptı” demek, iş kazası olduğunda suçu sadece testereye atan biriyle aynı şey
LLM’i etkili kullanmanın ve halüsinasyonlardan kaçınmanın anahtarı, kod okuyabilme becerisi ve sezgidir
Juniorlar, e-posta yanıtı beklemek veya farklı yöntemleri birleştirmek yerine LLM’e daha kolay yaslanma eğiliminde
Artık e-posta cevabına bile gerek kalmadığı için bu ayartıya direnmek daha da zor
Ama bu şekilde yönü tamamen kaybedip, nasıl çalıştığını da bilmeden halüsinasyon labirentine düşüyorsun
LLM ile birlikte yazdığım en iyi kodlar, yapıyı benim tasarladığım; LLM’in temel kodu ürettiği ve benim de düzeltme yönünü göstererek üzerine özellik eklettiğim işlerdi
Bu süreçte LLM sürekli hatalar da yaptı, ben de onları düzelttim
Performans yavaş olduğunda kendim profiling yapıp LLM’e optimize etmesini söyledim
Bu şekilde ortaya çıkan kod, benim en ince ayrıntısına kadar bildiğim kod oldu
Hepsini kendim yazsam 3 kat daha uzun sürerdi
Fonksiyonların girdi/çıktılarını testlerle doğruladığım için gerçek implementasyon detaylarının tamamını bilmem gerekmiyordu
Bu tür işler kesinlikle junior’a verilecek aşamadaki işler değil
Bu aslında pek deneyimli olmayan bir ekip arkadaşını koçluk etmekten çok da farklı değildi
LLM’in üretkenliği artırdığına dair araştırmalar vardı ama gerçek anlamda somut üretkenlik artışı olup olmadığı şüpheli
LLM, kafamda zaten net olan ama kendim yazmak istemediğim kodu hızla çıkarması gerektiğinde en faydalıydı
Bir keresinde web component ve backend kodunun 1.000 satırını benim yerime yazdı, syntax hatalarını da düzeltti ve gerçekten çok zaman kazandırdı
Bu workflow’un senior geliştiricileri hızlandırmış olabileceğini anlıyorum
Ama LLM’e mentorluk yapmak için harcanan zamandan daha önemlisinin, ekosistem açısından juniorlara mentorluk yapmak olduğunu düşünüyorum
Bunun junior-senior arasındaki beceri farkını daha da açmasından endişe ediyorum
Elimizde yeterli veri olmadığı için bu şimdilik sadece bir kaygı
Yapay zekanın başlangıçta düşük beceri seviyesindekilere daha çok yardımcı olduğu yönündeki çalışmalar gerçeğe dayanmıyor gibi
Yapay zekayla kod yazmak, düşük becerili birkaç ekip arkadaşının işi sadece daha hızlı bitirmesine benziyor
Tam olarak neyi başarmak istediğim ne kadar netse, sonuç da o kadar iyi örtüşüyor
Elbette neredeyse her zaman düzeltme gerekiyor
Sonuçta junior geliştirici rolü neredeyse işe yaramaz hale geliyor, ama tüm seniorlar emekli olduğunda bunun ne kadar kısa vadeli bir bakış olduğu da ortaya çıkabilir
Bende durum tam tersiydi
Çok karmaşık ve eski bir iş mantığı vardı; her şeyi tek tek elimle implement ettim ve her biri 200-400 satırlık uzun parçalara dönüştü
Sonra LLM’e yapı, refactor ve ayrıştırma fikirleri sordum; gayet iyi soyutlamalar ve yapılar önerdi
Tabii tüm akışları eksiksiz implement edemedi ama sonrasını elle tamamlamak benim için yeterince mümkündü
Sonuçta ortaya çıkan şey benim kendim düşüneceğime çok yakındı ama bunu baş ağrısı olmadan elde etmiş oldum
Doğal olarak örnekleri dikkatle inceledim, eksik veya bug’lı kısımları da tamamen elle düzelttim
Bu arada eksik kodu bir LLM agent ile tamamlama deneyi de yaptım ama o düzgün çalışmadı
HN’de 2021’de AI coding ilk gündeme geldiğinde de juniorlara pek yardımcı olmadığı çok konuşuluyordu
Çünkü juniorlar iyi sonuçla kötü sonucu ayırt edemiyor
İlgili başlık: https://news.ycombinator.com/item?id=27678424
Örnek yorum: https://news.ycombinator.com/item?id=27677690
Aslında bu daha prompt ve bağlam tasarımı aşamasında başlıyor
Senior, neyin nerede değişmesi gerektiğini ve ne yapılacağını oldukça isabetli biçimde bildiği için AI’a somut talimatlar verebiliyor
Ama juniorların çoğunun zihninde yapı, pattern ya da tasarım olmadığı için önüne ne gelirse kabul etmeye eğilimli oluyorlar
Son zamanlarda “mimariyi ChatGPT’ye sor” türü davranışları gerçekten gördüm
Seniorlar kodu bizzat yazarak, hata yapıp düzelterek deneyim kazanıyor ve tekrarlayan acı noktaları kendi kodlarında yaşıyor
Juniorlar ise sadece prompt üstüne prompt yazıyor, LLM’in verdiği cevapları bağlamdan kopuk biçimde yapıştırıyor ve koddan gerçekten bir şey öğrenmiyor
Gerçek kullanım deneyimleri olmadığından, örneğin typed state gibi karmaşık soyutlamaların neden gerekli olduğunu, IDE kullanmanın neyi değiştirdiğini ya da genel yapının nasıl korunup geliştirileceğini hiç kavrayamıyorlar
Böyle olunca 10 promptta çözülebilecek işi 50 promptla yapıyorlar ve kod tabanları arasındaki tekrar eden patternleri de öğrenemiyorlar
Biraz yapı tasarımı ve durum modelleme öğrenmek üretkenliği 100 kat artırabilirken, LLM’e aşırı bağımlılık yüzünden insanlar ömür boyu sadece yapıştırma kod üretir hale geliyor
AI, “A ve B’den C çıkar” türü sonuçları kendi başına türetemiyor
Ne istediğini güçlü ve somut biçimde anlatman gerekiyor, ancak o zaman seni takip edebiliyor
Seniorlar zaten büyük resmi zihinlerinde kabaca kurabildiği için AI ile iş birliği onlar için daha kolay
Juniorlar ise zaten bütün yapıyı öğrenme aşamasında olduğu için bu yaklaşım onlara çok daha zor gelebilir
AI’ın sanki doktora seviyesinde olduğu iddiasına hiç katılmıyorum
Mantıksal akıl yürütme açısından 5 yaşındaki bir çocuktan çok farklı değil
Gerçek bir örnek olarak, 2021 civarında CS eğitimi olmayan bir öğrenciyle çalıştım
ChatGPT gibi AI araçları sayesinde projeye ciddi katkı yaptı ve normalde yeni başlayan birinin çözemeyeceği işleri de başardı
Ama aynı zamanda bir sürü güvenlik sorunu yarattı, verimsiz dolambaçlı çözümler kurdu ve çok daha temiz kütüphane ya da yöntemleri de düşünmedi; sonuçta kodun bakımı zorlaştı
Dokümantasyona karşı hevesliydi ama içerik sık sık hatalı ya da dolambaçlı oluyordu
Kod review ve tartışma süreci herkes için iyi bir eğitim deneyimiydi
Bunun mümkün olmasının sebebi, sonunda AI ile deneyimli bir insanın birlikte çalışmasıydı
Yapay zekanın juniorları parlatacağı beklentisinin neden oluştuğunu bilmiyorum
Aslında gerçekten derin deneyimi olmayan ve kötü alışkanlıklar edinmiş sahte seniorlar da çok
Bu yazı, iki yıldır herkesin söylediği şeyleri bir kez daha tekrarlıyor gibi
AI coding henüz tam anlamıyla doğru kullanılmıyor ve bir gün belirli mimari, pattern, use case, üretim ortamı, ağ, geliştirme ve test koşullarını birlikte dikkate alarak iki taraf arasındaki farkı kapatan özelleşmiş LLM’ler çıkabilir
Çevremdeki seniorların AI coding’e pek ilgisi yok; çünkü kendi çalışma biçimlerine uymuyor
Bugün seniorların asıl gücü şirket içi domain bilgisi olabilir
Ama işten çıkarmalar döneminde junior alınmazsa, sonunda seniorlar da risk altına girer
Daha önce okuduğum, sahte ama anlamlı bir William Gibson sözü vardı
“21. yüzyıldaki en önemli beceri, Google arama kutusuna doğru anahtar kelimeleri yazıp gereken cevabı bulabilme yeteneğidir”
Bugünlerde bu sözün giderek daha doğru geldiğini düşünüyorum
Çoğu junior, GeminiPiTi gibi bir LLM’den JS kodunu tamamen yazmasını istiyor
Ben ise async/await’in temel mantığını ve JavaScript motorunun yürütme modelini açıklamasını istiyorum
Piyano öğrenmek de benzer
İnsan hemen Chopin çalmak istiyor ama gerçek beceri, o incelikli teknikleri parçalara ayırıp adlandırmak ve sistemli biçimde çalışmakla oluşuyor
Piyanoda gerçek beceri kazanmak küçük numaralar öğrenmekten ibaret değil
En temelden başlayıp adım adım yükselen birikimli bir yaklaşım
Chopin’in de birçok başlangıç seviyesi eseri var, bizim stüdyodaki yeni başlayanlar da sık sık kolay parçalar çalışıyor
Gerçek “AI okuryazarlığı”, bir meme haline gelmiş prompt engineering’e odaklanmak değildir
Arka plandaki yapıyı ve kavramsal temeli kurup prompt ile sonucun gerçekten anlamlı biçimde bağlanmasını sağlamaktır
Sadece Chopin “çalmak istiyorum” ile “her şeyi düzgün çalmak istiyorum” arasında çok büyük fark var
Sadece notaları mekanik olarak ezberleyen çok kişi var ve bunun gerçek beceriyle aynı şey olmadığı da açık
İstediğin alanın “dilini” ve anahtar kelimelerini öğrenmek önemli
Hiçbir şey bilmeyen bir acemiysen AI çok da yardımcı olmuyor
AI’a “Bende zaten A, B, C var ve şimdi D yapmak istiyorum” diye somut biçimde anlatman gerekiyor ki anlayıp yön gösterebilsin
Bilgisi çok ama bunu yaratıcı biçimde kullanamıyor
LLM’i iyi kullanma becerisi ile Google’da iyi arama yapma becerisi arasında büyük fark yok
Ve hâlâ pek çok insan düzgün Google araması bile yapamıyor
Yapay zekanın juniorları daha iyi hale getirdiği yanılgısının biraz da beklenti meselesi olduğunu düşünüyorum
Yapay zeka temel junior işlerinde gerçekten yardımcı oluyor; ikili programcı gibi açıklama yapabiliyor, beyin fırtınasını destekliyor, dokümantasyonu hızlı buluyor ve problemi doğrulamaya yardım ediyor
Sorun, bunun juniorların bir anda senior seviyesindeki işleri doğru düzgün yapabileceği anlamına geldiği yanılgısı
Özün yarısı doğru görülmüş
Diğer yarısı ise, doğru yönlendirilmiş bir AI’ın junior işlerini bir juniordan çok daha hızlı bitirebilmesi
Bu da artık o işleri juniorlara vermeye gerek kalmaması demek
Sohbet ettiğim jailbreak yapılmış bir AI, juniorları seniora dönüştürdüğünü ve bunun herkes için faydalı olduğunu söylüyordu
Ama o AI’ın yaratıcıları (çoğu senior) normalde bunu juniorlara ve yönetime söylememesi için talimat vermiş; ben jailbreak’i başardığım için artık bana ileri düzey bilgileri açıklayabildiğini iddia etti
AI belirli, “dar” boşlukları kapatmada iyi
Seniorlar için
Buna karşılık juniorlar için
Bu konularda AI çok büyük yardım sağlayamıyor
Benim deneyimime göre AI, bir alanı iyi bilmediğinde kullanılırsa wiki/Stack Overflow yanıtlarından daha zengin biçimde kavram, örnek ve senaryo açıklayabiliyor
Temel kavramları bir miktar biliyorsan AI çok daha üretken hale geliyor
Bu sadece kodlama için değil, bilim ve beşeri bilimler için de geçerli
Bence AI yalnızca zaten yönü bilen kişiyi daha da hızlandırıyor; ilk aşamadaki öğrenenler için ise hâlâ eskisi gibi insan öğretimi gerekiyor
Yanlış öğrenme konusundaki uyarıyı vurgulaması hoşuma gitti
Öğrenme, aynı hataları tekrar etmeyi engeller ama bu hemen bilgelik anlamına da gelmez
Şu an “AI her şeyi yapıyor” ya da “trendi kaçırırsan geride kalırsın” gibi çok fazla gürültü var, ama önemli olanın
The Mythical Man-Month
The Grug-brained Developer
Programming as Theory Building
gibi kitapları okuyup yazılım geliştirmenin özünü ve yasalarını anlamaya daha fazla yatırım yapmak olduğunu düşünüyorum
Elektrikli aletleri doğru kullanamazsan nasıl kazaya yol açarsa, AI da özünde bir power tool
Ne yaptığını gerçekten biliyorsan seni çok daha hızlı ve verimli hale getiriyor; bilmiyorsan da seni çok daha yüksek hızda olayların ve kazaların içine sürüklüyor
Sonuçta yalnızca sahip olduğun beceriyi büyütür
Bugünün AI’ı artık “boilerplate kod, iskelet veya tekrarlı iş otomasyonu” seviyesini aştı
Claude Sonnet 4 gibi bir LLM’e doğru talimatlar verilirse iş uygulamalarının %99’undan fazlasını kendi başına yazabiliyor
Hedefi doğru anlatmak ve referans implementasyonlar, örnekler, kullanılacak algoritmalar ile patternleri açıkça belirtmek gerekiyor
Yine de ilk seferde kusursuz isabet etmesi nadir, bu yüzden düzenleme ve iyileştirme gerekiyor
Bu nedenle Claude Code, Copilot’a göre daha çok tercih ediliyor
Kilit nokta şu: ne yapılacağını tam olarak bilen geliştiriciler AI ile iyi sonuç alıyor; juniorlar ise bunu bilmediği için istedikleri sonuca ulaşamıyor
Bugün kodu elle yazmamın tek sebebi, bazen LLM’e görev komutu yazmanın doğrudan düzeltme yapmaktan daha zahmetli olması
“Claude Sonnet 4 kodun %99’unu yazabilir” deniyorsa, bu aslında o kadar ayrıntılı talimatları hazırlamanın başlı başına zor olduğunun kanıtı
Yazılım geliştirme, “açık bir açıklama” varsa zaten baştan zor değildir
“AI tüm kodu yazabilir”
“Artık komut girmek, doğrudan kodlamaktan daha zahmetli”
O zaman AI sadece yavaş bir giriş aygıtı değil mi?
Where's the Shovelware? Why AI Coding Claims Don't Add Up
Gerçekten durum buysa, ortalığı kaplaması gereken o shovelware nerede?
O zaman “uygulamaları otomatik üreten” o müthiş iş uygulamaları nerede?
Benim gördüğüm sadece tam bir dağınıklık, kaynak israfı ve toplumsal kargaşa
Nedeni basit.
Daha çok bildikleri için yalnızca daha ileri seviye sorular soruyorlar.
Ama aynı kıdem düzeyinde olsalar bile, sadece şirkete kapanmış,
içi boş deneyime sahip olanlar ya da deneyiminin ölçeği dar olan
insanlar, önlerine iyi bir şey koysanız bile onu kullanamaz.
Bu, adeta bir yarış otomobilini acemi bir sürücüye
emanet etmeye benzer.
Deneyim ölçeği geniş olanlar ise hep aynıdır.
Yeni nesil araştırma ve geliştirmeyi asla bırakmazlar.
Üniversitenin ilk yıllarındaki o zihniyetin 50'li yaşlarda bile değişmemesi gibi
bir ruh hali...
Gerçek, özbeöz kıdemli profesyoneller için aylık 10-20 bin wonluk bir
asistan sonsuz derecede kıymetli olacaktır.