Kazanimlar:
- AI'ın yazılım geliştirme yaşam döngüsünde nerede gerçek hız kazandırdığını, nerede karar ve sorumluluğun mühendiste kaldığını ayırt edebilme
- Üretilen her kod ve tasarımı derleme, test ve gözden geçirmeyle doğrulayan üç katmanlı bir mühendislik disiplinini uygulayabilme
- Gizli kaynak kod, kimlik bilgisi ve müşteri verisini paylaşmadan AI'dan yararlanmak için bağlamı temizleme alışkanlığını edinebilme
Bir bilgisayar mühendisinin gününe baktığınızda tablo çoğu ekipte benzerdir: bir iş isteğini anlamak, tasarım yapmak, kod yazmak, başkasının kodunu okumak, hata ayıklamak (debugging; bir programın neden yanlış çalıştığını bulup düzeltme süreci), test yazmak, dokümantasyon hazırlamak, kod incelemek ve toplantıya katılmak. Yani asıl "mühendislik yargısı" olan kısma, yani bir çözümün doğru, güvenli ve sürdürülebilir olup olmadığına ayrılan zaman, tekrar eden işlerin altında ezilir. Yapay zeka (kısaca AI; büyük dil modeliyle metin ve kod üzerinde çalışan yazılım) tam da burada devreye girer. AI kararı sizin yerinize vermez; sizi karara hazırlar, kod iskeleti üretir, hatayı daraltır ve önünüze işlenmiş bir taslak koyar. Bu modül boyunca AI'ı "otomatik programcı" olarak değil, çıktısı her seferinde derlenip test edilen ve gözden geçirilen disiplinli bir çift programlama ortağı olarak konumlandıracağız.
Bu ilk ünitede üç şeyi netleştiriyoruz: AI, yazılım geliştirme yaşam döngüsünün (bir yazılımın fikirden üretime kadar geçtiği aşamalar: analiz, tasarım, kodlama, test, dağıtım, bakım) hangi aşamalarında gerçek değer katar; hangi kararlar kesinlikle mühendiste kalmalıdır; ve bunu yaparken uymanız gereken doğrulama ve gizlilik disiplini nedir. Bu çatı doğru kurulmadan sonraki ünitelerdeki teknikler tehlikeli hale gelebilir; çünkü yazılımda bir hata, milyonlarca kullanıcıya aynı anda ulaşır ve güvenlik açığına dönüşebilir.
Kavramlar: Halüsinasyon: AI'ın gerçekte var olmayan bir metot, kütüphane, API ya da davranışı inandırıcı biçimde uydurması. Bağlam: AI'a verdiğiniz girdi (kod, hata mesajı, gereksinim, kısıtlar). Doğrulama: Çıktının bağımsız bir yolla (derleme, test, dokümantasyon) kontrol edilmesi. Bu üç kavram tüm modülün belkemiğidir.
AI Hangi İşlerde Hızlandırıcı, Hangilerinde Riskli?
Yazılım işleri, sonuçları itibarıyla iki uçlu bir spektrumda yer alır. Bir ucunda geri alınabilir, düşük riskli hazırlık işleri; diğer ucunda üretim ortamına giren, veri kaybı, güvenlik açığı veya kesinti doğurabilecek geri dönüşü zor işler vardır. AI'ın değeri bu spektrumun neresinde durduğunuza göre değişir.
İş türü
AI'ın katkısı
Mühendisin rolü
Kod iskeleti / boilerplate
Tekrar eden yapıyı hızlı üretme
Mantık ve kenar durum kontrolü
Hata ayıklama
Hipotez ve olası neden listesi
Yeniden üretim ve kök neden teyidi
Test yazma
Test taslağı ve senaryo çıkarma
Anlamlı assert ve kapsam denetimi
Refactoring
Yeniden düzenleme önerisi
Davranışın testle korunması
Dokümantasyon
İlk taslak ve yapı
Koda karşı doğruluk kontrolü
Mimari / güvenlik kararı
Seçenek ve artı-eksi listesi
Nihai karar ve sorumluluk
Kural basittir: AI çıktısının riski, o çıktı hata yaptığında doğuracağı zarara eşittir. Bir değişken adını yanlış önermek zararsızdır; kimlik doğrulama (kullanıcının gerçekten iddia ettiği kişi olduğunu denetleme) mantığını yanlış kurmak, tüm sistemi ele geçirilebilir hale getirir. Bu yüzden çıktıyı kullanmadan önce sorulacak ilk soru şudur: "Bu yanlışsa ne olur ve bunu kim, ne zaman fark eder?"
Dikkat: AI akıcı ve kendinden emin kod üretir. Akıcılık, doğruluk garantisi değildir. Bir dil modeli, gerçekte var olmayan bir fonksiyon adını, yanlış bir parametre sırasını veya güvensiz bir kalıbı bile inandırıcı biçimde üretebilir. Yazılımda bu, kâğıt üzerinde kalmaz; derlenir, çalışır ve üretimde patlar.
Mühendiste Kalması Gereken Kararlar
Bazı kararlar asla tam otomatikleştirilmemelidir; teknik, yasal ve etik risk taşır:
- Üretime alma onayı: Bir kodun canlı ortama (production) çıkması ve bunun sorumluluğu.
- Güvenlik ve mimari: Kimlik doğrulama, yetkilendirme, şifreleme ve veri modeli gibi geri dönüşü pahalı kararlar.
- Lisans ve telif: Üretilen kodun ticari üründe kullanılabilirliği ve lisans uyumu.
- Gizli veri ile çalışma: Müşteri verisi, kaynak kod sırları ve kimlik bilgileriyle yapılan işlemler.
Uyarı: AI "bu kod güvenli ve production'a hazır" dese bile, güvenlik testi, kod incelemesi ve gerçek yük altında doğrulama yapılmadan bunu kabul etmek kabul edilemez. Güvenlik-kritik işlerde AI çıktısı, yetkin bir mühendisin onayının yerine asla geçmez; karar doğuran her çıktı, uygulanmadan önce bağımsız doğrulanmalı ve yetkili mühendis tarafından onaylanmalıdır.
Doğrulama Disiplini: Üç Katmanlı Kontrol
AI çıktısını gözü kapalı değil, kıdemli bir gözden geçiren (reviewer) gibi kullanmak için üç katmanlı bir kontrol uygulayın. Bu, tüm modülde tekrar edeceğimiz temel reflekstir.
- Derleme ve statik kontrol: Kod gerçekten derleniyor/çalışıyor mu? Tip hataları, kullanılmayan değişken, var olmayan API var mı? Statik analiz aracı (kodu çalıştırmadan inceleyen araç) ne diyor?
- Bağımsız yeniden üretim (test): Kodu küçük, bilinen girdilerle çalıştırıp beklenen çıktıyı aldığınızı görün. Kenar durumları (boş, sıfır, negatif, çok büyük) deneyin.
- Kaynak doğrulaması: AI'ın kullandığı her API, kütüphane sürümü ve dil özelliği resmî dokümantasyondan teyit edilmelidir.
Doğrulama promptu (çıktının denetimini kolaylaştırır):"Yazdığın kodda kullandığın TÜM dış kütüphaneleri, metotları ve dilözelliklerini listele. Her biri için hangi sürümde mevcut olduğunu belirtve 'dokümantasyondan doğrulanmalı' etiketi koy. Emin olmadığın hiçbir API'yiuydurma; emin değilsen açıkça 'emin değilim' yaz. Ayrıca ele almadığın kenardurumları da ayrı bir liste olarak yaz."
Kendi kodunu eleştir promptu:"Az önce yazdığın koda, seni işe alan kıdemli bir mühendis gibi eleştirel bak.Şu üç başlıkta somut madde ver: (1) mantık/kenar durum hataları,(2) güvenlik riskleri, (3) performans veya okunabilirlik sorunları.Her madde için 'neden sorun' ve 'önerilen düzeltme' yaz. Sorun yoksa'sorun bulamadım' de; süslemeye çalışma."
Zayıf Prompt / Güçlü Prompt
ZAYIF:"Bana bir kullanıcı doğrulama fonksiyonu yaz."(Sonuç: hangi dil, hangi kural, hangi hata davranışı belirsiz; genel geçer,çoğu zaman güvensiz veya bağlama uymayan kod.)GÜÇLÜ:"Python 3.11 için bir e-posta doğrulama fonksiyonu yaz. Girdi: string.Çıktı: geçerliyse True, değilse False. Kurallar: boş string False; RFC'yetam uyum gerekmiyor, temel biçim yeterli. Dış kütüphane KULLANMA.Fonksiyonun altına 5 örnekli bir test bloğu ekle: geçerli, boş, '@' yok,çift '@', boşluk içeren. Sadece bu kapsamda kal."
Fark, bağlamda gizlidir. Güçlü prompt; dili, sürümü, girdi-çıktı sözleşmesini, kısıtları ve test beklentisini içerir. Bu tek disiplin, halüsinasyon ve güvensiz kod riskini büyük ölçüde düşürür.
Mini Vakalar
Vaka 1 — Uydurulan metot. Bir geliştirici, bir tarih kütüphanesinde date.addBusinessDays(5) diye bir metot olduğunu AI'dan duyar ve emin dille anlatılır. Dokümantasyona bakınca böyle bir metodun olmadığını, doğru yolun manuel bir döngü olduğunu görür. Halüsinasyon, 10 dakikalık bir doğrulamayla üretime girmeden yakalanır.
Vaka 2 — Kenar durum kaybı. AI, bir "ortalama hesapla" fonksiyonu üretir; 1.000 satırlık veriyle test edilince çalışır. Ancak liste boşken sıfıra bölme hatası (division by zero) verir. Mühendis boş girdi testini eklediği için hatayı canlıya çıkmadan görür ve düzeltir. Tek bir kenar durum testi, gece 3'te gelecek bir üretim alarmını önler.
Vaka 3 — Gizlilik riski. Bir uzman, içinde gerçek bir veritabanı bağlantı dizesi ve API anahtarı olan bir dosyayı herkese açık bir araca yapıştırmak üzeredir. Kurum politikasını hatırlar; sırları <REDACTED> ile değiştirir, kodu temsili bir örneğe indirger ve öyle sorar. Böylece 5 dakikada yardım alır ama kimlik bilgileri dışarı çıkmaz.
Gizli Kod ve Kimlik Bilgileriyle Çalışma İlkesi
Yazılımın en hassas tarafı; kaynak kod sırları, kimlik bilgileri (API anahtarı, parola, token) ve müşteri/kişisel verisidir. Temel ilke: paylaşmadan önce temizle, mümkünse yalnızca problemin özünü temsili bir örnekle sor.
Anonimleştirilmiş prompt kalıbı:"Aşağıdaki fonksiyonda bir hata var. Gerçek iş mantığını ve gizli sabitleritemsili değerlerle değiştirdim (API anahtarı, tablo adları, alan adlarıjenerik). Sorun: X girdisinde Y hatası alıyorum. Sadece bu temsili koddamantık hatasını bul ve düzeltilmiş halini açıkla.[temsili kod]"
İpucu: Şüphede kalırsanız şu testi uygulayın: "Bu metni bir foruma açık açık yazsam kurumumun başı derde girer mi?" Cevap belirsizse bile, önce temizleyin. Sıfırlamak, sonradan sızıntıyı kovalamaktan her zaman ucuzdur.
Sık yapılan hatalar
- Çıktıyı derlemeden/test etmeden kullanmak. "AI yazdı" bir gerekçe değildir; her kod parçası çalıştırılarak doğrulanır.
- Bağlamsız istek yapmak. Dil, sürüm, girdi-çıktı ve kısıt verilmeyince kod genel geçer ve çoğu zaman güvensiz olur.
- Gizli bilgiyi düşünmeden paylaşmak. API anahtarı, parola ve müşteri verisi temizlenmeden dışarı çıkmamalıdır.
- Kesin dili doğrulukla karıştırmak. AI ne kadar emin konuşursa o kadar dikkatli olun; emin ton, kanıt değildir.
- Kararı AI'a devretmek. Üretime alma, güvenlik ve mimari kararı mühendiste kalır; AI yalnızca malzeme üretir.
Özetle
AI, yazılım işinin tekrar eden ve zaman yiyen kısımlarını hızlandırır: iskelet kod, test taslağı, hata daraltma, dokümantasyon. Ancak karar ve sorumluluk mühendiste kalır. Her çıktı üç katmanlı kontrolden (derleme/statik, test, kaynak) geçmelidir. Bağlamlı prompt yazmak ve gizli bilgiyi temizlemek, bu modülün her ünitesinde tekrar edeceğimiz iki temel alışkanlıktır. AI'ı disiplinle kullandığınızda hız kazanır, disiplinsiz kullandığınızda üretime hata ve açık taşırsınız.
Uygulama görevi
Kendi işinizden ya da hayali bir projeden küçük bir kodlama görevi seçin (ör. bir doğrulama fonksiyonu). Önce zayıf bir prompt yazın, çıktıyı alın. Sonra bu ünitedeki güçlü prompt kalıbını uygulayın: dil/sürüm, girdi-çıktı sözleşmesi, kısıtlar ve test beklentisi ekleyin. İki çıktıyı yan yana koyup farkı yazın. Ardından güçlü çıktıyı derleyip en az üç kenar durumla (boş, sıfır/negatif, beklenmedik biçim) test edin ve hangi testte ne bulduğunuzu not edin.
Kontrol listesi
- [ ] Promptuma dil, sürüm ve girdi-çıktı sözleşmesi ekledim.
- [ ] "Uydurma, emin değilsen söyle" ve kapsam kısıtını yazdım.
- [ ] Kodu derledim/çalıştırdım, statik uyarıları kontrol ettim.
- [ ] En az üç kenar durumla test ettim.
- [ ] Kullanılan API'leri resmî dokümandan doğruladım.
- [ ] Gizli kod/kimlik bilgisi varsa temizledim veya kurumsal aracı kullandım.
- [ ] Üretime alma ve güvenlik kararının insanda kaldığını teyit ettim.