Yapay zeka yazılımcının yerini mi alıyor?
Hayır; ama yazılımcının çalışma biçimini değiştiriyor. İyi bir yapay zeka asistanı, sıkıcı ve tekrarlı işleri hızlandıran, takıldığınızda ikinci bir göz sağlayan ve yeni bir dili veya kütüphaneyi hızla öğrenmenize yardım eden bir yardımcıdır. Mimari kararlar, ürün ihtiyacının anlaşılması, sorumluluk alma ve sonuçlardan hesap verme hâlâ insanın işidir.
Bu rehberde, yapay zekayı yazılımda gerçekten fayda sağlayacak şekilde kullanmanın yollarını ve dikkat etmeniz gereken tuzakları bulacaksınız.
1. Sıfırdan kod üretme
En bariz kullanım: ne istediğinizi tarif edip kod almak. İyi sonuç için şunları belirtin:
- Dil ve sürüm: "Python 3.12", "Node.js 20", "React 18 + TypeScript".
- Girdi ve çıktı: fonksiyonun ne aldığı, ne döndürdüğü.
- Kısıtlar: harici kütüphane kullanılıp kullanılmayacağı, performans beklentisi, hata yönetimi.
- Stil: mevcut kodunuzun biçimi, adlandırma kuralları.
Örnek prompt:
Python 3.12 ile, bir CSV dosyasındaki "urun" sütununa göre en çok geçen
N değeri döndüren bir fonksiyon yaz. Yalnızca standart kütüphane kullan,
dosyayı satır satır oku (bellek dostu olsun), dosya yoksa anlamlı bir hata ver.
Altına 2 örnek kullanım ve kısa bir açıklama ekle.
Küçük ve net bir görevde, çıktı çoğunlukla ilk seferde çalışır. Büyük ve belirsiz bir görevde ise (ör. "bir e-ticaret sitesi yaz") sonuç yüzeysel kalır; bunu parçalara bölün.
2. Hata ayıklama
Hata ayıklamada yapay zeka çok işe yarar. Etkili bir hata sorusu şunları içerir:
- Ne yapmaya çalıştığınız
- Ne olması gerektiği
- Ne olduğu (tam hata mesajı ve stack trace)
- İlgili kod (yalnızca ilgili kısım; yüzlerce satır gerekmez)
- Sürüm ve ortam bilgisi
Örnek:
Node.js 20'de bu fonksiyonu çağırdığımda "TypeError: Cannot read properties
of undefined (reading 'map')" hatası alıyorum. Beklediğim: kullanıcı listesinin
isimlerini dizi olarak almak. Kod aşağıda. Hatanın nedenini açıkla ve
düzeltilmiş halini ver.
[kod]
Yalnızca "çalışmıyor, düzelt" demek yerine hatanın metnini vermek, cevabın doğruluğunu belirgin biçimde artırır. Model bir düzeltme önerdiğinde, neden bu düzeltmenin gerekli olduğunu da sorun; böylece sorunu gerçekten anlarsınız.
3. Kodu açıklatma ve öğrenme
Başkasının yazdığı karmaşık bir fonksiyonu, bir regex'i ya da bilmediğiniz bir kütüphaneyi açıklatın:
- "Bu kodu satır satır açıkla."
- "Bu düzenli ifade ne yapıyor? Örnek eşleşen ve eşleşmeyen metinler ver."
- "Bu kodun zaman karmaşıklığı nedir? Daha iyisi mümkün mü?"
- "React'teki
useEffectileuseMemoarasındaki farkı, bir örnekle anlat."
4. Refactor ve kod temizliği
Çalışan ama dağınık kodu sadeleştirmek için:
- "Bu fonksiyonu daha küçük, tek sorumluluğu olan parçalara böl."
- "Tekrarlanan kodu ortak bir yardımcı fonksiyona çıkar."
- "Bu kodu okunabilirlik açısından iyileştir, ama davranışı değiştirme."
Önemli: refactor sonrası davranışın değişmediğini testlerle doğrulayın. Modelin "davranışı değiştirme" talimatına uyduğundan emin olmak için testleriniz yoksa, önce test yazdırın (aşağıda).
5. Test yazma
Yapay zeka, test yazmada çok verimlidir; özellikle sınır durumlarını (boş girdi, çok büyük sayı, hatalı tip) düşünmede:
Aşağıdaki fonksiyon için pytest ile birim testleri yaz. Normal durumları,
sınır durumlarını (boş liste, None, negatif sayı) ve hata durumlarını kapsa.
Her testin ne denediğini kısa bir yorumla yaz.
Test üretildikten sonra mutlaka çalıştırın. Bazen model, yanlış beklenti içeren bir test yazar; testin kendisi hatalı olabilir. Başarısız bir testte önce testin mi, kodun mu yanlış olduğunu değerlendirin.
6. Kod inceleme
Bir pull request'i göndermeden önce yapay zekaya kendi değişikliğinizi incelettirebilirsiniz:
- "Bu kodda olası hataları, güvenlik açıklarını ve performans sorunlarını listele."
- "Bu SQL sorgusunda SQL enjeksiyonu riski var mı?"
- "Hata yönetimi eksik olan yerleri göster."
Yapay zekanın incelemesi, insan incelemesinin yerini tutmaz; ama gözden kaçan basit hataları yakalamada iyi bir ön filtredir.
7. SQL, regex, shell ve diğer "yan" işler
Sıklıkla çok zaman alan ama bilgi gerektiren küçük işler yapay zekanın en parlak olduğu alanlardır:
- SQL: "Siparişler ve müşteriler tablosu şöyle; son 30 günde en çok harcama yapan 10 müşteriyi getiren sorgu yaz."
- Regex: "Türkiye telefon numaralarını (0 ile veya +90 ile başlayan) eşleştiren bir düzenli ifade yaz."
- Shell: "Bir klasördeki 30 günden eski .log dosyalarını bulup silen bir komut yaz; önce silmeden listelesin."
- Dönüşüm: "Bu JSON'u CSV'ye çeviren bir Python betiği yaz."
Özellikle silme, taşıma gibi geri dönüşü olmayan komutlarda, çalıştırmadan önce komutu anlayın.
8. Web arayüzü ve hızlı prototip
HTML, CSS ve JavaScript ile bir sayfa, bir form veya küçük bir araç hazırlatmak çok hızlıdır. Cocorex AI'nın kod modunda, modelin ürettiği HTML sayfası yan panelde canlı önizlemeyle açılır; kodu görür, önizlemede nasıl göründüğünü anında kontrol eder, "başlığı büyüt, rengi mavi yap" gibi takip mesajlarıyla şekillendirirsiniz.
Yapay zeka kodunda sık görülen sorunlar
Var olmayan fonksiyon ve kütüphane uydurma. Model, gerçekte bulunmayan bir fonksiyon adı ya da paket adı üretebilir. Üretilen kodu çalıştırın; "bunun gerçek bir API olduğundan emin misin, dokümantasyon bağlantısı ver" diye sorun.
Eski sürüme göre yazma. Model, eğitim verisindeki eski sürümlerin sözdizimini kullanabilir. Sürümü belirtin ve gerekirse güncel dokümantasyonu bağlam olarak yapıştırın.
Güvenlik açıkları. Üretilen kodda parola sabit yazılabilir, girdi doğrulaması eksik olabilir, güvensiz bir yöntem kullanılabilir. Güvenlikle ilgili her kodu ayrıca gözden geçirin.
Aşırı karmaşıklaştırma. Model bazen basit bir iş için gereksiz soyutlama ekler. "Mümkün olan en basit çözümü ver" demek işe yarar.
Bağlamı unutma. Uzun bir konuşmada model, daha önce belirlediğiniz bir kuralı unutabilir. Önemli kısıtları gerektiğinde tekrar edin.
Güvenlik ve gizlilik: Neleri paylaşmamalısınız?
Kod, yapay zekaya yapıştırıldığında, cevap üretilebilmesi için sağlayıcılara iletilir. Bu nedenle:
- API anahtarlarını, parolaları, token'ları ve gizli sertifikaları asla yapıştırmayın. Gerekirse
YOUR_API_KEYgibi yer tutucularla değiştirin. - Şirketinize ait gizli iş mantığını veya müşteri verisini paylaşmadan önce, şirket politikanızı kontrol edin.
- Veritabanı dökümlerini (gerçek kişisel veriler içeren) yapıştırmayın; örnek veri kullanın.
İş akışı önerisi
- Planla: Önce ne yapmak istediğinizi kendiniz bir iki cümleyle netleştirin.
- Küçük parçalar iste: Bir fonksiyon, bir bileşen, bir sorgu.
- Oku ve anla: Kodu kopyalamadan önce ne yaptığını anlayın.
- Çalıştır ve test et: Üretilen kodun gerçekten çalıştığını doğrulayın.
- Düzelt ve ilerle: Hata varsa, hata mesajıyla birlikte geri bildirin.
- İnsan incelemesi: Önemli değişiklikleri bir meslektaşınıza gözden geçirtin.
API ile otomatikleştirme
Yapay zekayı kendi araçlarınızın içine de koyabilirsiniz: commit mesajı üretme, hata loglarını özetleme, test üretme betikleri, dokümantasyon üreticisi. Cocorex API OpenAI ve Anthropic uyumlu olduğu için, bu araçları mevcut SDK'larla yazabilir ve yalnızca adresi değiştirerek bağlayabilirsiniz. İlk istek rehberimiz ile başlayın.
Dil dil ipuçları: Hangi dilde nelere dikkat?
Yapay zeka çoğu popüler dilde iyi kod üretir; ama her dilin kendine özgü tuzakları vardır.
Python
- Sürümü belirtin (3.8 ile 3.12 arasında sözdizimi ve kütüphane farkları vardır).
- Tip ipuçları ve
dataclass,pathlib,f-stringgibi modern yapıları isteyin: "Modern Python 3.12 idiomları kullan." - Sanal ortam ve bağımlılık: "Gerekli paketleri
requirements.txtformatında listele." - Sık hata: Var olmayan bir paket veya fonksiyon uydurmak;
pip installile deneyin, olmadığını görürseniz geri bildirim verin.
JavaScript / TypeScript
- Ortamı belirtin: tarayıcı mı, Node.js mu, hangi sürüm?
importmırequiremı? - TypeScript'te katı mod ve tipleri isteyin: "
strict: trueile,anykullanmadan." - Çerçeve ve sürüm: "React 18, fonksiyonel bileşenler ve hook'lar" gibi.
- Sık hata: Eski sürüm API'leri (ör. eski Express/React kalıpları) önermesi.
SQL
- Veritabanı türünü söyleyin (PostgreSQL, MySQL, SQLite, SQL Server); sözdizimi farklıdır.
- Tablo şemasını (sütun adları ve tipleri) mutlaka verin; model tahmin ederse hatalı sütun adı kullanır.
- "Performans için indeks önerisi ver" ve "Bu sorgunun yürütme planını nasıl okurum?" gibi ek sorular çok faydalıdır.
- Güvenlik: Üretilen sorguyu çalıştırmadan önce anlayın;
DELETE/UPDATEiçeren sorgulardaWHEREkoşulunu kontrol edin, önceSELECTile deneyin.
Shell / Bash / PowerShell
- İşletim sistemini belirtin (Windows PowerShell, macOS, Linux).
- Yıkıcı komutlar (
rm -rf,Remove-Item -Recurse) için "önce yalnızca listele, silme" isteyin. - Komutu çalıştırmadan, her parçasının ne yaptığını açıklatın.
HTML / CSS
- Tek dosyada, responsive (mobil uyumlu) ve erişilebilir olmasını isteyin.
- Renk paleti, yazı tipi, boşluk gibi tasarım tercihlerini belirtin.
- Kod modunda, çıktı yan panelde canlı önizlenir; "mobilde nasıl görünüyor?" gibi takip istekleriyle rafine edin.
Diğer diller (Java, C#, Go, Rust, PHP…)
- Sürüm, çerçeve ve derleme aracını (Maven/Gradle, .NET sürümü,
go.mod) belirtin. - Rust ve C++ gibi derleyici-sıkı dillerde, derleme hatalarını birebir yapıştırın; model hatayı çoğu zaman doğru çözer.
- Kullanılan kütüphanenin sürümünü yazın; API'ler sürümler arasında değişir.
Gerçekçi bir hata ayıklama örneği
Bir geliştirici, bir Node.js betiğinde şu hatayı alıyor:
TypeError: Cannot read properties of undefined (reading 'length')
at ozetle (/app/index.js:14:28)
Kötü soru: "Kodum çalışmıyor, düzelt."
İyi soru:
Node.js 20 kullanıyorum. Aşağıdaki fonksiyonu çağırdığımda şu hatayı alıyorum:
TypeError: Cannot read properties of undefined (reading 'length') at ozetle (index.js:14:28).
Beklenen: kullanıcının yorumlarının uzunluğu toplamını döndürmesi.
Fonksiyon ve çağırdığım yer:
function ozetle(kullanici) {
return kullanici.yorumlar.length;
}
console.log(ozetle({ ad: "Ali" }));
Hatanın nedenini açıkla, güvenli bir düzeltme öner ve aynı hatayı önlemek için bir test örneği ver.
Böyle bir istekte model, nedenin yorumlar alanının olmaması olduğunu bulur; kullanici.yorumlar?.length ?? 0 gibi bir düzeltme ve bir test önerir. Önemli olan, sizin de neden olduğunu anlamanızdır; sadece düzeltmeyi kopyalamak, benzer hatayı başka yerde tekrar yapmanıza yol açar.
Yapay zekaya kod incelettirirken sorulacak 12 soru
Bir değişikliği göndermeden önce, kodunuzu yapay zekaya yapıştırıp şunları sorun:
- Bu kodda olası hatalar (bug) neler?
- Kenar durumlarını (boş girdi, null, çok büyük değer) doğru ele alıyor mu?
- Güvenlik açığı var mı (enjeksiyon, güvensiz girdi, sabit parola)?
- Performans sorunu olabilecek yerler hangileri?
- Hata yönetimi yeterli mi? Hatalar sessizce yutuluyor mu?
- Adlandırma ve okunabilirlik açısından neyi iyileştirirsin?
- Tekrarlanan kod var mı?
- Hangi testlerin eksik olduğunu düşünüyorsun?
- Bu kod geriye dönük uyumluluğu bozar mı?
- Bağımlılıklarda eski veya güvensiz bir paket var mı?
- Kaynak sızıntısı (açık kalan dosya, bağlantı) var mı?
- Bu değişikliği bir meslektaşına anlatsaydın, neyi vurgulardın?
Cevapları eleştirel okuyun; her öneri doğru değildir.
Yapay zeka destekli geliştirmede güvenlik kontrol listesi
- [ ] Gizli bilgiler (anahtar, parola, token) kodda yok; ortam değişkeni kullanılıyor.
- [ ] Kullanıcı girdisi doğrulanıyor ve temizleniyor (SQL enjeksiyonu, XSS, komut enjeksiyonu).
- [ ] Parolalar güçlü bir algoritmayla hashleniyor (bcrypt/argon2); düz metin saklanmıyor.
- [ ] Kimlik doğrulama ve yetkilendirme kontrolleri her uçta var.
- [ ] Hata mesajları iç ayrıntıları (yol, sorgu, anahtar) sızdırmıyor.
- [ ] Bağımlılıklar güncel ve bilinen açıkları yok; yapay zekanın önerdiği paket gerçekten var ve güvenilir.
- [ ] Dosya yükleme, dış istek (URL getirme) gibi riskli işlemlerde kısıtlar uygulanıyor (SSRF, yol geçişi).
- [ ] Günlüklere hassas veri yazılmıyor.
- [ ] CORS, çerez bayrakları (HttpOnly, Secure, SameSite) doğru ayarlı.
- [ ] Üretilen kod, insan tarafından incelendi ve test edildi.
Yapay zeka bazen güvenli görünen ama açık içeren kod üretir. Özellikle kimlik doğrulama, ödeme, dosya işleme ve veritabanı sorgularında ekstra dikkatli olun.
Telif ve lisans konusunda notlar
- Yapay zekanın ürettiği kodun, eğitim verisindeki açık kaynak kodlara benzeyebileceğini unutmayın. Büyük, ayırt edici bir kod bloğu üretildiğinde, benzer açık kaynak projeleri araştırmak ve lisans uyumunu kontrol etmek iyi bir pratiktir.
- Şirketiniz için yazıyorsanız, yapay zeka kullanım politikanızı ve müşteri sözleşmelerinizdeki kod sahipliği maddelerini kontrol edin.
- Üçüncü taraf kütüphane önerilerinde, lisansı (MIT, Apache, GPL…) projenize uygun mu diye bakın.
Yeni bir dil veya kütüphane öğrenmek için kullanın
Yapay zeka, harika bir özel öğretmendir:
- "Python'a yeni başladım, bana 4 haftalık bir öğrenme planı hazırla; her hafta küçük bir proje olsun."
- "Go'daki
goroutineilechannel'ı, JavaScript bilen birine, benzerlikler ve farklarla anlat." - "Bu kod parçasını yorum satırlarıyla, her adımı açıklayarak yeniden yaz."
- "Bu konuda 5 alıştırma ver; çözümlerini ben yazayım, sen değerlendir."
- "React'teki
useEffectile Vue'dakiwatch'ı karşılaştır."
Öğrenirken, yapay zekanın verdiği kodu kopyalamak yerine kendiniz yazmaya çalışın; sonra karşılaştırın. Gerçek öğrenme, yazarak olur.
Sürüm yönetimi ve belge hazırlama
Yapay zeka, geliştirme sürecinin yan işlerinde de zaman kazandırır:
- Commit mesajı: "Şu değişiklik farkı için açık ve kısa bir commit mesajı öner (emir kipinde, 50 karakter başlık)."
- Pull request açıklaması: Değişikliği, nedenini ve test adımlarını özetletin.
- README ve dokümantasyon: Kodu verip "Bu proje için kurulum, kullanım ve örnekler içeren bir README hazırla" deyin.
- Kod yorumu ve fonksiyon dokümanı: Mevcut fonksiyonlara docstring/JSDoc ekletin.
- Değişiklik günlüğü (changelog): Sürüm notlarını commit listesinden çıkarttırın.
Üretilen metinleri mutlaka okuyun; yapay zeka yapmadığı bir şeyi yapmış gibi yazabilir.
Yapay zeka ile çalışırken yaygın tuzaklar ve çözümleri
| Tuzak | Belirti | Çözüm |
|---|---|---|
| Uydurma API/paket | "No module named …" ya da fonksiyon yok | Resmî dokümantasyondan doğrulayın; doğru sürümü belirtin |
| Eski sürüm sözdizimi | Uyarılar, kullanımdan kalkmış fonksiyonlar | Sürümü yazın; güncel dokümantasyonu bağlam olarak yapıştırın |
| Aşırı karmaşık çözüm | Basit iş için çok katmanlı kod | "En basit çözümü ver" |
| Bağlam kaybı | Önceki kısıtları unutur | Önemli kısıtları tekrar yazın; yeni sohbet açın |
| Yarım kod | "…geri kalanı aynı" | "Dosyanın tamamını eksiksiz ver" |
| Güvenlik açığı | Girdi doğrulaması yok | Güvenlik kontrol listesi uygulayın |
| Yanlış kenar durumu | Boş/null durumunda hata | Kenar durumu testleri yazdırın |
| Tembel test | Her şeyi geçen anlamsız test | Testin gerçekten başarısız olabileceğinden emin olun |
Takım içinde yapay zeka kullanımı
- Ortak kurallar belirleyin: Hangi tür kod/veri yapay zekaya yazılabilir, hangisi yazılamaz?
- Her zaman insan incelemesi: Yapay zeka destekli kod da diğer kod gibi gözden geçirilir.
- Kaynak belirtmek: Büyük bölümleri yapay zekayla üretilen kodu, ekip kültürünüze uygun şekilde işaretleyin (yorum, PR notu).
- Öğrenme fırsatı: Genç geliştiriciler yapay zekanın verdiği kodu anlamadan kullanmamalı; mentorlar bunu teşvik etmeli.
- Ölçün: Gerçekten zaman kazandırıyor mu? Hata oranı nasıl değişiyor?
Sık sorulan sorular
Yapay zeka yazdığı kodun testini de yapar mı? Test yazabilir, ama çalıştırmaz (Cocorex AI'da kod çalıştırma yoktur; yalnızca HTML önizleme). Testleri kendi ortamınızda çalıştırın.
Büyük bir projeyi tek seferde yazdırabilir miyim? Önermeyiz; küçük, net parçalar halinde ilerleyin.
Hangi model kod için en iyi? Göreve göre değişir; Model seçimi sayfasına bakın ve aynı görevi iki modelde deneyin.
Hata mesajı çok uzun, hepsini yapıştırmalı mıyım? Hatanın ilk satırlarını ve ilgili stack trace'i yapıştırın; ilgisiz binlerce satırı değil.
Kodumu yapıştırmak güvenli mi? Gizli anahtarları ve müşteri verisini çıkarın; şirket politikanıza bakın. Gizlilik makalemizi okuyun.
Yapay zeka yazılımcıların yerini alacak mı? Rutin kod yazımının bir kısmını otomatikleştiriyor; ama problem anlama, tasarım, sorumluluk ve iletişim insanın işi olmaya devam ediyor. Yapay zekayı iyi kullanan geliştiriciler daha verimli oluyor.
Sonuç
Yapay zeka, doğru kullanıldığında yazılım geliştirmeyi belirgin biçimde hızlandırır: boş sayfa korkusunu ortadan kaldırır, sıkıcı işleri üstlenir ve öğrenmeyi kolaylaştırır. Ama kodun doğruluğunun ve güvenliğinin sorumluluğu hâlâ sizdedir. Oku, anla, test et üçlüsünü bir alışkanlık haline getirin.