Kazanimlar:
- Bir kodlama asistanının bir dil modeli olarak nasıl çalıştığını ve token, bağlam penceresi, halüsinasyon kavramlarını açıklayabilme
- AI'nın güçlü ve zayıf olduğu yazılım görevlerini bir zihinsel haritayla ayırt edebilme
- Öner-üret-doğrula temel çalışma döngüsünü kendi görevlerine uygulayabilme
Bir yazılım geliştiricinin günü nadiren "sıfırdan kod yazmak"la geçer. Gerçek zaman; başkasının yazdığı kodu okumak, bir hatayı yeniden üretmeye çalışmak, log (uygulamanın çalışırken ürettiği kayıt satırları) taramak, test yazmak, PR (pull request — bir kod değişikliğinin ekip incelemesine sunulduğu birleştirme isteği) açıklaması yazmak ve dokümantasyon güncellemekle geçer. Yapay zeka (AI), bu görünmeyen işlerin neredeyse tamamına dokunabilen bir hız çarpanıdır. Ama onu güvenle kullanmanın ilk şartı, ne olduğunu ve ne olmadığını doğru anlamaktır.
Bu ünitede önce bir kodlama asistanının temelinde yatan teknolojiyi sade bir dille açıyoruz; ardından modelin güçlü ve zayıf yönlerini bir zihinsel harita hâline getiriyoruz; son olarak tüm modül boyunca kullanacağımız temel çalışma disiplinini kuruyoruz: öner, üret, doğrula. Bu üç adım, sonraki on bir ünitenin de belkemiğidir.
Not: Bu modül genel bir eğitimdir. Güvenlik-kritik yazılımlarda (ödeme işleme, sağlık, kimlik doğrulama, kritik altyapı) AI çıktısı, yetkin bir mühendisin incelemesi ve onayının yerine geçmez. AI bir asistandır; imzayı atan mühendistir.
Bir Kodlama Asistanı Aslında Ne Yapar?
Kodlama asistanlarının çoğu bir büyük dil modeli (large language model, LLM — çok büyük miktarda metin ve kod üzerinde eğitilmiş, bir sonraki en olası "parçayı" tahmin eden bir yapay zeka) üzerine kuruludur. Model kodu bir insan gibi "anlamaz"; devasa örnek havuzundan öğrendiği örüntülere dayanarak, verdiğiniz bağlama en olası devamı üretir. Bu basit görünen mekanizma pratikte şaşırtıcı derecede yetkin sonuçlar verir — çünkü yazılımın büyük kısmı tekrar eden örüntülerden oluşur: bir HTTP isteği, bir döngü, bir null kontrolü, bir test kalıbı.
Burada üç terim kritiktir. Token (jeton), modelin metni bölerek işlediği en küçük birimdir; kabaca birkaç harf ya da bir kelime parçasıdır. Bağlam penceresi (context window), modelin aynı anda "görebildiği" token miktarıdır; kodunuz, hata mesajınız ve talimatınız bu pencereye sığmak zorundadır. Prompt (istem), modele verdiğiniz talimat ve bağlamın tümüdür. Aldığınız çıktının kalitesi doğrudan bu ikisine bağlıdır: modele ne kadar iyi bağlam ve ne kadar net talimat verirseniz, o kadar iyi sonuç alırsınız. Kötü girdi, akıllı model olsa bile kötü çıktı üretir — yazılımın klasik "çöp girer, çöp çıkar" kuralı AI için de geçerlidir.
Güçlü ve Zayıf Yönler Haritası
AI'yı doğru işlere yönlendirmek için nerede parladığını, nerede tökezlediğini bilmek gerekir. Bu haritayı ezberlemek, bir sonraki her görevde "bu işi AI'ya mı yaptırayım, kendim mi?" sorusuna saniyeler içinde yanıt vermenizi sağlar.
Güçlü olduğu yerler: Kalıplaşmış kod (boilerplate — her projede benzer biçimde tekrarlanan iskelet kod) üretmek, bir dilden diğerine çeviri, düzenli ifade (regex — metin içinde desen arayan özel bir yazım) yazmak, bir fonksiyonu açıklamak, test iskeleti çıkarmak, hata mesajını yorumlamak, dokümantasyon taslağı hazırlamak, değişken/fonksiyon ismi önermek ve küçük refactoring'ler (kodun davranışını değiştirmeden yapısını iyileştirme).
Zayıf olduğu yerler: Sizin şirkete özel iş kurallarınızı bilmek, kod tabanınızın tamamını hatırlamak, kodu gerçekten çalıştırıp doğrulamak, en güncel kütüphane sürümlerini kesin bilmek, güvenlik açıklarını yüzde yüz garantiyle yakalamak. En tehlikelisi ise halüsinasyon: modelin var olmayan bir fonksiyonu, kütüphaneyi veya API'yi (uygulamalar arası veri alışverişini sağlayan arayüz) son derece ikna edici bir dille uydurmasıdır. Kod, düz metinden farklı olarak "çalışıp çalışmadığı" test edilebilir olduğundan, bu risk aslında sizin lehinize çevrilebilir — yeter ki doğrulama adımını atlamayın.
Görev tipi
AI'nın rolü
İnsanın rolü
Boilerplate/iskelet üretmek
Taslağı üretir
Uyarlar, gözden geçirir
Kod açıklama
Hızlı özet verir
Kritik kısmı kodda doğrular
Test yazma
Vaka önerir
Kapsamı ve doğruluğu onaylar
Güvenlik-kritik mantık
Yardımcı fikir
Karar ve sorumluluk tümüyle insanda
API/kütüphane kullanımı
Örnek üretir
Var olduğunu ve sürümü doğrular
Mimari karar
Seçenek sıralar
Bağlamı bilerek seçer ve savunur
Adım Adım: Temel Çalışma Döngüsü
- Görevi netleştirin. Ne istediğinizi bir cümleyle yazamıyorsanız, model de yazamaz. Belirsizlik girdiye ne kadar erken sızarsa, çıktıda o kadar büyür.
- Bağlam verin. İlgili kodu, tam hata mesajını, dil/çerçeve sürümünü ve kısıtları prompt'a ekleyin. "Şunu düzelt" değil, "Python 3.11, FastAPI 0.110; bu fonksiyon 500 hatası veriyor, istek gövdesi boş gelince patlıyor" deyin.
- Rol ve format dayatın. "Kıdemli bir Go geliştiricisisin; yalnızca kodu ve iki cümlelik gerekçeyi ver" gibi bir çerçeve, çıktıyı odaklar.
- Küçük iste. Tek dev istek yerine adımlara bölün; her adımı ayrı doğrulayın. Büyük değişiklikler, doğrulaması zor ve hata saklamaya elverişli oldukları için risklidir.
- Doğrulayın. Çalıştırın, test edin, gözle okuyun. Doğrulanmamış AI kodu bir "taslak"tır, "çözüm" değil. Bu döngünün en pazarlıksız adımıdır.
Üç Mini Vaka
Vaka 1 — Zaman kazancı gerçek ama ölçülü. Bir ekip, yeni CRUD (Create-Read-Update-Delete; veri oluşturma, okuma, güncelleme, silme) uç noktalarını AI ile iskeletleyince ilk taslak süresi yaklaşık 40 dakikadan 8 dakikaya indi. Ancak gözden geçirme ve testle birlikte toplam süre 25 dakika oldu; yani gerçek kazanç 40'tan 25'e, yaklaşık %38. "10 kat hızlandık" beklentisi yerine ölçülen bu oran, sürdürülebilir bir kazançtır.
Vaka 2 — Halüsinasyon pahalıya patlıyor. Bir geliştirici, AI'nın önerdiği requests.get_json() çağrısını doğrulamadan kullandı; böyle bir metot yoktu (doğrusu response.json()). Kod derlenmeyince 20 dakika kayboldu. Basit bir "bu metot gerçekten var mı?" doğrulaması, kaybı sıfırlardı.
Vaka 3 — İyi bağlam çıktıyı ikiye katlıyor. Aynı hata için iki geliştiriciden biri yalnızca "hata alıyorum" yazdı, diğeri tam yığın izini (stack trace — hatanın hangi satırlardan geçtiğini gösteren döküm), sürümü ve girdi örneğini ekledi. İkincisi ilk denemede doğru çözümü aldı; ilki üç tur harcadı. Fark modelde değil, girdideydi.
Dört Kopyalanabilir Şablon
Genel amaçlı, güçlü bir başlangıç prompt'u:
Rol: Deneyimli bir {{dil}} geliştiricisisin.Görev: {{ne_istiyorum}}Bağlam:- Çerçeve/sürüm: {{framework_ve_surum}}- Kısıtlar: {{performans, stil, bağımlılık kuralları}}Kurallar:- Var olmayan kütüphane/fonksiyon kullanma; emin değilsen "doğrula" diye işaretle.- Önce kısa plan, sonra kod, sonra 2 cümle gerekçe ver.- Test edilebilir, çalışır kod üret.
Belirsizliği modele geri sordurmak için:
Aşağıdaki görevi çözmeden önce, eksik veya belirsiz bulduğun EN FAZLA 3noktayı soru olarak listele. Ben yanıtlamadan kod YAZMA.Görev: {{görev}}
Çıktıyı kendi kendine denetlettirmek için:
Aşağıdaki kodu ürettin. Şimdi rolünü değiştir ve bu kodu eleştir:- Çalışmayabilecek 3 durumu (kenar durum) listele.- Uydurmuş olabileceğin API/fonksiyon var mı? İşaretle.- Düzeltilmiş sürümü ver.Kod:{{kod}}
Bir kararı seçeneklere dökmek için:
{{problem}} için 2-3 çözüm yaklaşımı öner.Her biri için: kısa açıklama, artı/eksi, ne zaman tercih edilmeli.Tablo halinde ver. Benim yerime SEÇME; sadece seçeneği netleştir.
Zayıf prompt / Güçlü prompt
Zayıf: "Bu koddaki hatayı düzelt." (Hangi hata? Hangi dil? Beklenen davranış ne?)
Güçlü: "Python 3.11 / FastAPI 0.110. Aşağıdaki uç nokta, istek gövdesi boş geldiğinde KeyError ile 500 dönüyor; boş gövdede 400 ve anlamlı mesaj dönmesini istiyorum. Önce nedeni açıkla, sonra düzeltilmiş fonksiyonu ver, sonra bu senaryo için bir test yaz. [kod]"
Güçlü sürüm; dili, sürümü, gerçek hatayı, beklenen davranışı ve çıktı biçimini verir. Model artık tahmin etmek zorunda değildir.
Sık yapılan hatalar
- Doğrulamadan güvenmek. En sık ve en pahalı hata. Kod derlenip testten geçmeden "çözüldü" demeyin.
- Bağlamsız soru sormak. Sürüm, hata metni ve kısıt olmadan gelen yanıt genel geçer ve çoğu zaman yanlıştır.
- Tek devasa istek. 300 satırlık bir üretimi tek seferde isteyip gözden geçirememek, hataları görünmez kılar.
- Modelin özgüvenini kanıt sanmak. AI kendinden emin bir dille yanlış da söyleyebilir; ton, doğruluk göstergesi değildir.
- Şirket sırrını gelişigüzel yapıştırmak. Gizli anahtar, müşteri verisi veya özel kaynak kodu, onaylı olmayan araçlara girilmemelidir (bu konuyu 10. ünitede derinleştireceğiz).
İpucu: Her AI çıktısına "bu bir taslaktır" gözüyle bakın. Bu tek zihinsel alışkanlık, modül boyunca göreceğiniz risklerin çoğunu baştan söndürür.
Özetle
Kodlama asistanı, bir sonraki en olası parçayı tahmin eden bir dil modelidir; kodu anlamaz, örüntü üretir. Bu yüzden tekrar eden, kalıplaşmış işlerde güçlü; bağlamınıza özgü, doğrulama gerektiren işlerde temkinli kullanılmalıdır. En büyük risk halüsinasyondur ve tek panzehri doğrulamadır. Tüm modül boyunca izleyeceğimiz disiplin nettir: görevi netleştir, bağlam ver, küçük iste, her çıktıyı doğrula.
Uygulama görevi
Son bir hafta içinde yaptığınız üç yazılım görevini yazın (ör. bir bug fix, bir test, bir README güncellemesi). Her biri için "güçlü ve zayıf yönler haritası"na bakarak bunu AI'ya yaptırsaydınız AI'nın ve sizin rolünüzün ne olacağını bir cümleyle belirleyin. Ardından bu görevlerden birini yukarıdaki "başlangıç prompt'u" şablonuyla AI'ya verin ve çıktıyı çalıştırıp doğrulayın; kaç dakika kazandığınızı ve kaç hata düzeltmeniz gerektiğini not edin.
Kontrol listesi
- [ ] LLM'in kodu "anladığını" değil, örüntü ürettiğini kavradım.
- [ ] Token, bağlam penceresi ve prompt kavramlarını bir cümleyle açıklayabiliyorum.
- [ ] AI'nın güçlü ve zayıf olduğu görev tiplerini ayırt edebiliyorum.
- [ ] Halüsinasyonun ne olduğunu ve tek panzehrinin doğrulama olduğunu biliyorum.
- [ ] "Öner, üret, doğrula" döngüsünü kendi görevime uyarladım.
- [ ] Güçlü prompt ile zayıf prompt arasındaki farkı somut bir örnekte gösterebiliyorum.