Programcılar için Prompt Mühendisliği El Kitabı
(addyo.substack.com)1. Giriş: Prompt’lar geliştirme verimliliğini belirler
- Yapay zeka kodlama yardımcılarının performansı, prompt kalitesine bağlıdır. Net istekler daha rafine kod üretirken, belirsiz sorular işe yaramaz çıktılar doğurur.
- Prompt yazma becerisi artık geliştiriciler için temel bir yetkinliktir ve bu, bir geliştirme partnerini eğitmeye benzer.
- Bu yazı, pratik örnekler ve karşılaştırmalar üzerinden “iyi soruların” nasıl “iyi kod” ürettiğini gösteriyor.
2. Etkili prompt’ların 7 ilkesi
① Bağlam sağlama
- Yapay zeka kullanıcının proje arka planını bilmediği için dil, framework, kütüphane, hata mesajı ve amaç gibi unsurlar açıkça belirtilmelidir.
- Örnek: “Node.js + Express + Mongoose ortamında user fetch sırasında TypeError oluşuyor” gibi teknik arka planı içeren bir ifade.
② Hedefi netleştirme
- "Kod çalışmıyor" demek faydalı değildir. “Beklenen sonuç ○○ ama gerçekte △△ oluyor. Bunun nedeni ne?” gibi net şekilde sormak gerekir.
③ Karmaşık işleri bölme
- Tüm işlevi tek seferde sormaktansa adım adım istemek daha etkilidir. Örnek: bileşen > state yönetimi > API entegrasyonu.
④ Girdi/çıktı örnekleri ekleme
- İstenen çıktı örneğini göstermek, yapay zekanın niyeti anlama becerisini artırır. (örn.
[3,1,4]→[1,3,4])
⑤ Rol verme
- “Kodu kıdemli bir React geliştiricisi gibi incele” türü rol tanımları, yanıtın derinliğini ve kalitesini artırır.
⑥ Etkileşimli yinelemeli iyileştirme
- İlk yanıtın kusursuz olması gerekmez. Geri bildirim verildiğinde yapay zeka aynı akışı sürdürerek giderek daha rafine sonuçlar üretir.
⑦ Kod tutarlılığını koruma
- Fonksiyon adları, format ve yorumlar gibi kodun kendisi tutarlı yazıldığında, yapay zeka da bu akışı korur ve kalite yükselir.
3. Debugging için prompt stratejileri
① Hatayı açık belirtme ve beklenen davranışla karşılaştırma
- Hata mesajı, sorunun belirtisi, beklenen sonuç ve giriş değerleri birlikte verildiğinde yapay zeka daha doğru teşhis yapar.
② Satır bazında iz sürme isteme
- “Bu değişken değerinin nerede bozulduğunu adım adım izle” gibi istekler, karmaşık mantık hatalarında etkilidir.
③ Minimum yeniden üretilebilir kod sağlama
- Tüm kod yerine sorunun ortaya çıktığı çekirdek kodu vermek, yapay zekanın nedeni daha doğru analiz etmesini sağlar.
④ Net takip soruları
- “Neden böyle bir sonuç çıkıyor?” yerine “Bu bölümde hangi koşul yanlış kurulmuş olabilir?” gibi doğrudan sorular daha iyidir.
⑤ Örnek karşılaştırma: kötü soru vs. iyi soru
- Sadece “kod çalışmıyor” derseniz tahmine dayalı cevaplar alırsınız; hata mesajını ve kodu birlikte verirseniz daha doğru çözümler elde edersiniz.
4. Refactoring ve optimizasyon için prompt stratejileri
① Refactoring hedefini netleştirme
- Sadece “refactor et” demek yerine “okunabilirliği artır, performansı iyileştir, API’yi güncelle” gibi somut geliştirme hedefleri verilmelidir.
- Hedef belirsizse yapay zeka rastgele iyileştirmeler deneyebilir veya kodu istenmeyen bir yöne çevirebilir.
② Dil/ortam bağlamı sağlama
- “React class component → function component dönüşümü”, “Node.js 14 ortamı” gibi proje stili veya teknik kısıtlar belirtilirse daha uygun dönüşümler yapılabilir.
③ Açıklama da isteme
- Refactor edilmiş kodla birlikte “neden böyle değiştirdiğini” açıklamasını istemek, hem kod kalitesi incelemesi hem de öğrenme açısından fayda sağlar.
④ Rol tabanlı istekle seviyeyi yükseltme
- “Kıdemli bir TypeScript geliştiricisi gibi refactor et” gibi istekler daha modern ve daha derin iyileştirme önerileri üretir.
5. Yeni özellik geliştirmek için prompt stratejileri
① Özelliği aşamalara bölerek isteme
- Karmaşık bir özelliği bile “özellik yapısını tasarla → UI oluştur → mantığı bağla” sırasıyla istemek daha istikrarlı sonuçlar verir.
② Mevcut kod stilini sağlama
- Benzer bileşenler veya kurum içi konvansiyonlar gösterilirse, proje tutarlılığına uygun kod üretilir. Örnek: “UserList temel alınarak ProductList oluştur.”
③ Yorum/TODO ile niyeti aktarma
- IDE içinde “// TODO: istek geçerlilik doğrulamasını uygula” gibi doğal dil yorumları yazıldığında Copilot buna uygun kod bloklarını otomatik üretebilir.
④ Girdi/çıktı örnekleri verme
- Giriş değerleri ve beklenen çıktı örnekleri eklendiğinde yapay zeka bunları karşılamaya çalışır ve doğruluk artar.
⑤ Geri bildirim temelli yinelemeli iyileştirme
- İlk sonuç beklentiyi karşılamasa bile “filter yerine map kullanın” gibi geri bildirim verildiğinde yapay zeka bunu hemen yansıtarak gelişir.
6. Başarısız olan prompt’ların 7 deseni (Anti-patterns)
① Belirsiz istek
- “Bu kod neden çalışmıyor?” gibi sorular yalnızca anlamı zayıf, genel cevaplar üretir. Hata mesajını, kodu ve beklenen sonucu ekleyin.
② Aşırı talep
- “Tüm uygulamayı oluştur + kimlik doğrulama ekle + deployment script’i dahil et” gibi birleşik istekler eksiklere veya karışıklığa yol açar; adım adım bölmek gerekir.
③ Sorunun olmaması
- Sadece kodu bırakıp istek belirtmezseniz yapay zeka özet çıkarabilir ya da alakasız sonuçlar verebilir; bu yüzden sorunun amacını netleştirmek gerekir.
④ Başarı kriterinin belirsiz olması
- “Daha hızlı yap”, “daha iyi hale getir” gibi ifadelerin ölçütü belirsizdir. Örnek: “O(n) zaman karmaşıklığına düşür” gibi ölçülebilir kriterler verilmelidir.
⑤ Yapay zekanın sorusunu görmezden gelme
- Yapay zeka “Bu functional mı yoksa class tabanlı mı?” diye soruyorsa, optimize edilmiş bir çıktı almak için buna yanıt vermelisiniz.
⑥ Tutarlılık eksikliği
- Stil, söz dizimi ve terimler sürekli değişirse yapay zeka da zorlanır. Tek bir stil korunursa yanıt kalitesi yükselir.
⑦ “Yukarıdaki kod” gibi belirsiz referanslar
- Diyalog uzadıkça “yukarıdaki kod” ifadesi belirsizleşir. Mümkünse kodu yeniden verin ya da fonksiyon adını açıkça belirtin.
7. Sonuç: Yapay zekayla iş birliği yinelemeli bir diyalogdur
- Prompt mühendisliği artık geliştiricinin temel iletişim becerilerinden biridir. Bağlam sağlama, net hedefler ve yinelemeli iyileştirme bunun temelini oluşturur.
- Yapay zeka yalnızca bir kodlama yardımcısı değil, aynı zamanda bir iş birliği ortağı ve öğrenme partneridir. Doğru kullanıldığında sadece verimliliği değil, geliştirme becerisini de artırır.
- Deney, geri bildirim ve rol tanımlama gibi farklı stratejiler kullanılırsa yapay zeka gerçek bir ekip üyesi gibi değerlendirilebilir.
- Nihai hedef daha hızlı ve daha doğru kod üretimi olsa da, aynı zamanda daha iyi bir geliştirici olmak için bir öğrenme aracı olarak da aktif şekilde kullanılmalıdır.
İyi vs kötü prompt karşılaştırma tablosu
| Ayrım | Debugging | Refactoring | Özellik geliştirme |
|---|---|---|---|
| İyi prompt | TypeError burada oluşuyor. Beklenen değer ○○ ama NaN çıkıyor. Nedeni tespit eder misin? |
Bu fonksiyondaki tekrarları kaldırıp performansı iyileştir. fetch kısmını helper olarak ayır ve hata mesajlarını koru. |
Arama kutusu olan bir ProductList bileşeni oluştur. /api/products üzerinden JSON alıp listeyi filtrelesin; hata ve loading durumlarını da içersin. |
| Kötü prompt | Fonksiyonum neden çalışmıyor? |
Refactor eder misin? |
Arama özelliği yapar mısın? |
5 yorum
İnsan programcılarla muhatap olma biçiminden pek de farklı değilmiş.
Programcılar için Prompt Engineering Playbook
GN+ özet botunun hazırladığı sürüme de birlikte göz atın. Hacker News özet yorumlarını da okumaya değer.
Önce siz paylaşmışsınız..
Teşekkürler.
Ne olur ne olmaz diye defalarca söyleyip bunu yapmayın desen de, 10 kişiden 1’i yine aynısını yapan tiplerden biri oluyor -_-
İnsan ne anlar ki!