Prompt Engineering Nedir? Vibecoding'de Neden Kritik?
Yapay zeka çağında yeni bir okur-yazarlık doğuyor: prompt engineering. Tıpkı bilgisayar okur-yazarlığının 90'larda, internet okur-yazarlığının 2000'lerde, veri okur-yazarlığının 2010'larda kritik hale geldiği gibi — 2020'lerin ikinci yarısında prompt engineering herkes için temel bir beceri haline geliyor.
Özellikle vibecoding yapıyorsan, prompt engineering bilmen gereken en önemli kavram. Çünkü vibecoding'de senin talimatların = senin ürünün. Ne kadar iyi talimat verirsen, o kadar iyi ürün ortaya çıkıyor.
Bu yazıda prompt engineering'i kavramsal derinliğiyle ele alıyoruz: ne olduğunu, neden önemli olduğunu, temel ilkelerini, ileri düzey tekniklerini, yaygın hataları ve vibecoding'deki özgün rolünü inceliyoruz.
Prompt Engineering Nedir?
Prompt engineering, yapay zeka modellerine en etkili ve verimli şekilde talimat verme sanatı ve bilimi. "Prompt", AI'a verdiğin girdiye — yani yazdığın talimata, soruya veya yönlendirmeye — verilen isim. "Engineering" ise bu girdileri sistematik, bilinçli ve optimize edilmiş şekilde tasarlamayı ifade ediyor.
Basitçe söylemek gerekirse: AI'a ne istediğini, onun anlayabileceği ve en iyi sonucu üretebileceği şekilde ifade etme becerisi.
Bu tanım basit görünebilir ama derinliği büyük. Çünkü AI modelleri — ne kadar gelişmiş olursa olsun — telepat değil. Senin kafandaki fikri doğrudan okuyamıyor. Aradaki köprü, senin yazdığın prompt. Ve bu köprünün kalitesi, AI'ın ürettiği sonucun kalitesini doğrudan belirliyor.
Prompt Engineering Bir Neden Bir "Mühendislik"?
Prompt yazmak neden "mühendislik" olarak adlandırılıyor? Çünkü rastgele yazmak yerine sistematik bir yaklaşım gerektiriyor. Tıpkı bir mühendis gibi:
- Problemi anlarsın: Ne istiyorsun? Amaç ne?
- Tasarım yaparsın: Bu amaca ulaşmak için nasıl bir talimat vermeli?
- Test edersin: Sonuç beklediğin gibi mi?
- İterasyon yaparsın: Değilse, prompt'u nasıl iyileştirebilirsin?
- Optimize edersin: Daha az kelimeyle daha iyi sonuç alabilir misin?
Bu döngü, yazılım mühendisliğindeki "yaz, test et, düzelt" döngüsüne çok benzer. Fark şu: yazılım mühendisi kod yazıyor, prompt mühendisi talimat yazıyor.
Vibecoding'de Neden Kritik?
Vibecoding, doğal dille AI'a talimat vererek uygulama geliştirme yöntemi. Bu tanımda "talimat verme" kısmı prompt engineering'in ta kendisi. Yani vibecoding'de prompt engineering sadece faydalı bir beceri değil — temel beceri.
Şöyle düşün: geleneksel programlamada senin aracın bir programlama dili (Python, JavaScript, vb.). Bu dili ne kadar iyi bilirsen, o kadar iyi yazılım yaparsın. Vibecoding'de ise senin aracın doğal dil — yani Türkçe veya İngilizce. Ve bu doğal dili AI ile iletişimde ne kadar etkili kullanırsan, o kadar iyi ürün ortaya koyarsın.
Prompt Kalitesi = Ürün Kalitesi
Vibecoding'de bu denklem çok net:
- Kötü prompt = kötü kod = bozuk/eksik/çirkin uygulama
- Orta prompt = orta kod = çalışan ama cilasız uygulama
- İyi prompt = iyi kod = profesyonel, temiz, kullanışlı uygulama
Aynı AI aracını (örneğin Claude Code) kullanan iki kişiden biri harika bir ürün çıkarırken diğerinin neden başarısız olduğunu düşündüysen, cevap büyük ihtimalle prompt kalitesinde gizli.
Vibecoding vs ChatGPT Kullanımı
Prompt engineering her AI etkileşiminde önemli ama vibecoding'deki rolü ChatGPT'den bir soru sormaktan çok farklı. İşte temel farklar:
ChatGPT'ye soru sormak: Genelde tek seferlik, kısa etkileşimler. "İstanbul'un nüfusu kaç?" gibi. Prompt basit olsa bile çoğu zaman işe yarar. Kötü prompt'un cezası: yanlış veya eksik bir bilgi — kolayca düzeltilebilir.
Vibecoding'de prompt yazmak: Uzun süreli, çok turlu, birikimli bir süreç. Her prompt bir öncekinin üzerine inşa ediliyor. Proje bağlamı giderek karmaşıklaşıyor. Kötü prompt'un cezası: yanlış mimari kararlar, bozuk dosya yapısı, debug edilmesi saatler alan hatalar. Ve bu hataları geri almak çok daha zor.
Bu nedenle vibecoding'de prompt engineering, ChatGPT kullanımındakinden çok daha sistematik ve bilinçli olmalı.
Temel İlkeler
İyi prompt yazmanın evrensel ilkeleri var. Bu ilkeleri anlamak, hem vibecoding'de hem de her türlü AI etkileşiminde seni daha etkili kılar.
1. Spesifiklik (Specificity)
En temel ve en önemli ilke: ne kadar spesifik olursan, o kadar iyi sonuç alırsın. Belirsiz bıraktığın her detay, AI'ın tahmin etmek zorunda kaldığı bir karar noktası. Ve AI'ın tahminleri senin istediğin olmayabilir.
Kötü: "Güzel bir site yap."
İyi: "Koyu temalı, minimalist bir tek sayfalık site yap. Arka plan #0C0A09, vurgu rengi turuncu #FB3A1D. Font: Plus Jakarta Sans. Hero bölümünde büyük bir başlık, altında 2 satırlık açıklama ve bir CTA butonu olsun."
Spesifiklik sadece tasarım için değil, davranış için de geçerli: "Form gönderildiğinde ne olsun?", "Hata durumunda kullanıcıya ne gösterilsin?", "Mobilde bu bölüm nasıl görünsün?" — bu soruların hepsini prompt'ta cevapla.
2. Bağlam (Context)
AI'a sadece ne yapmasını istediğini değil, projenin bütünsel bağlamını da ver. Bağlam şunları içerir:
- Proje hakkında: Bu proje ne? Kimin için? Amacı ne?
- Teknoloji: Hangi framework? Hangi veritabanı? Hangi stil kütüphanesi?
- Mevcut durum: Projede şimdiye kadar ne yapıldı? Hangi dosyalar mevcut?
- Hedef: Bu adımda tam olarak ne başarmak istiyorsun?
Claude Code gibi araçlar proje dosyalarını tarayarak bağlam toplar ama yine de senin verdiğin ek bağlam çok değerli. "Bu bir B2B SaaS ürünü, hedef kitlesi küçük işletme sahipleri, teknoloji stack'i Next.js + Supabase + Tailwind" gibi bir bağlam cümlesi, AI'ın kararlarını doğru yönde etkiler.
3. Rol Atama (Role Assignment)
AI'a bir rol vermek, ürettiği çıktının tonunu ve kalitesini etkiler. Vibecoding'de bu özellikle yararlı:
Rol olmadan: "Bir login sayfası yap."
Rol ile: "Sen deneyimli bir full-stack geliştiricisini. Clean code prensiplerini uygulayan, güvenlik konusunda titiz, kullanıcı deneyimini önemseyen bir yazılımcı gibi düşün. Bu perspektifle bir login sayfası oluştur."
Rol atamak, AI'ın hangi kalite standartlarında çalışacağını belirler. "Kıdemli bir mühendis gibi düşün" dediğinde, AI edge case'leri düşünür, hata yönetimini ekler, güvenlik kontrollerini uygular. Rol vermediğinde bunları atlayabilir.
4. Adımlama (Step-by-Step)
Büyük ve karmaşık görevleri tek seferde verme — küçük, yönetilebilir adımlara böl. Bu hem AI'ın daha başarılı çalışmasını sağlar hem de hata olduğunda hangi adımda bozulduğunu kolayca tespit etmeni.
Vibecoding'de bu ilke özellikle kritik. "Kullanıcı girişi, dashboard, profil, ayarlar ve ödeme olan bir uygulama yap" demen, AI'ı zorlar ve genelde parça parça bozuk sonuçlar alırsın. Bunun yerine:
- "Önce kullanıcı kayıt ve giriş sistemi oluştur"
- "Giriş yapan kullanıcılar için boş bir dashboard sayfası ekle"
- "Dashboard'a istatistik kartları ekle"
- "Profil sayfası oluştur"
- "Ayarlar sayfası ekle"
Her adım tamamlandığında test et, onay ver, sonra bir sonrakine geç.
5. Örneklerle Açıklama (Examples)
Bazen ne istediğini kelimelerle anlatmak zor. Bu durumda örnek göster. Bu, prompt engineering'de "few-shot" olarak da bilinen güçlü bir teknik.
Örnek olmadan: "API yanıtlarını formatla."
Örnek ile: "API yanıtlarını şu formatta döndür: { "success": true, "data": { ... }, "message": "İşlem başarılı" } Hata durumunda: { "success": false, "error": { "code": "NOT_FOUND", "message": "Kayıt bulunamadı" } }"
Somut örnekler, AI'ın ne istediğini tam olarak anlamasını sağlar. Belirsizlik ortadan kalkar.
İyi vs Kötü Prompt Örnekleri
Teoriyi pratiğe çevirelim. İşte gerçek vibecoding senaryolarından iyi ve kötü prompt karşılaştırmaları:
Senaryo 1: Proje Başlatma
Kötü prompt:
"Bir web uygulaması yap."
Neden kötü: Hangi uygulama? Kimin için? Hangi özellikler? Hangi teknoloji? AI tamamen karanlıkta. Kendisi karar verecek ve büyük ihtimalle senin istediğin olmayacak.
İyi prompt:
"Küçük işletmeler için bir müşteri randevu takip uygulaması yapacağız. Tech stack: Next.js 14 (App Router), Tailwind CSS, Supabase (veritabanı + auth). Özellikler: müşteri kaydı, randevu oluşturma/düzenleme/silme, takvim görünümü, bildirimler. Koyu tema, modern minimalist tasarım. Önce proje yapısını oluştur ve veritabanı şemasını tasarla. Henüz UI yapma."
Neden iyi: Proje tanımlı, teknoloji belirli, özellikler listelenmiş, tasarım yönü verilmiş, ilk adım net. AI tam olarak ne yapması gerektiğini biliyor.
Senaryo 2: Hata Bildirme
Kötü prompt:
"Sayfa çalışmıyor."
Neden kötü: Hangi sayfa? Ne tür bir hata? Ne zaman oluyor? Beklenen davranış ne? AI nereden başlayacağını bilmiyor.
İyi prompt:
"Randevu oluşturma formunu gönderdiğimde terminalde şu hata çıkıyor: 'Error: Column 'customer_id' cannot be null'. Form verilerini kontrol ettim, müşteri seçimi yapılıyor ama veritabanına kayıt sırasında customer_id gönderilmiyor gibi görünüyor. src/app/api/appointments/route.ts dosyasındaki POST fonksiyonunu kontrol edip düzeltir misin?"
Neden iyi: Hata mesajı aynen yapıştırılmış, tahmini sebep belirtilmiş, ilgili dosya gösterilmiş. AI doğrudan çözüme gidebilir.
Senaryo 3: Tasarım Talebi
Kötü prompt:
"Dashboard'u güzelleştir."
Neden kötü: "Güzel" subjektif. Senin güzelin başka, AI'ın ki başka. Renk mi değişsin? Layout mı? Animasyon mı eklensin? Belirsiz.
İyi prompt:
"Dashboard sayfasını şöyle iyileştir: 1) İstatistik kartlarına hafif gradient arka plan ekle (koyu tonlarda). 2) Kartların üzerine gelince hafif bir yukarı kayma animasyonu olsun (0.3s ease). 3) Grafik bölümünün altına son 5 aktiviteyi gösteren bir tablo ekle. 4) Tabloda zebra striping uygula. 5) Tüm sayısal değerlere Türk lirası formatı uygula (1.234,56 TL şeklinde)."
Neden iyi: Her değişiklik numaralandırılmış ve spesifik. AI her maddeyi tek tek uygulayacak ve sonucu kontrol edilebilir.
İleri Düzey Teknikler
Temel ilkeleri kavradıysan, şimdi daha gelişmiş prompt engineering tekniklerine bakalım. Bu teknikler özellikle karmaşık vibecoding projelerinde fark yaratır.
Chain-of-Thought (Düşünce Zinciri)
AI'dan bir problemi çözmeden önce adım adım düşünmesini istemek. Bu teknik, AI'ın daha doğru sonuçlar üretmesini sağlar.
Normal prompt: "Kullanıcı kayıt formunu oluştur."
Chain-of-thought prompt: "Kullanıcı kayıt formunu oluşturmadan önce şunları düşün: 1) Hangi alanlar gerekli? (isim, e-posta, şifre, şifre tekrar) 2) Hangi validasyon kuralları olmalı? (e-posta formatı, şifre uzunluğu, şifre eşleşmesi) 3) Hata durumunda kullanıcıya nasıl geri bildirim verilmeli? 4) Başarılı kayıt sonrası ne olmalı? Bu adımları düşündükten sonra formu oluştur."
AI düşünce sürecini gösterdiğinde, senin de süreci takip edebilmen ve yanlış bir karar noktasında müdahale edebilmen kolaylaşır.
Few-Shot Prompting (Örnekle Öğretme)
AI'a birkaç örnek vererek istediğin çıktı formatını veya davranışı öğretme tekniği. Vibecoding'de bileşen tutarlılığı sağlamak için çok yararlı.
"Mevcut ürün kartı bileşenine benzer yapıda bir 'Hizmet Kartı' bileşeni oluştur. Ürün kartında olduğu gibi: üstte ikon, altında başlık, altında açıklama, en altta buton olsun. Aynı padding, border-radius ve hover efektini kullan. Sadece renk şemasını mavi tonlarına çevir."
Bu prompt, mevcut bir bileşeni referans alarak (few-shot) yeni bir bileşen oluşturuyor. AI, referans bileşenin yapısını inceleyip aynı paterni uygulayacak.
System Prompt (Sistem Talimatı)
System prompt, AI'a etkileşimin başında verilen, tüm konuşma boyunca geçerli olan temel talimat. Claude Code'da CLAUDE.md dosyası bu işlevi görüyor. Projenin kurallarını, tercihlerini ve standartlarını buraya yazarsın.
Örneğin bir CLAUDE.md dosyası şöyle olabilir:
"Bu proje bir SaaS uygulaması. Next.js 14 App Router, Tailwind CSS, Supabase kullanıyoruz. Türkçe yorum yaz. Bileşen isimleri PascalCase olsun. Her bileşen kendi dosyasında olsun. Server component'ları tercih et, client component sadece interaktivite gerektirdiğinde kullan. Hata yönetimi her API çağrısında olmalı."
Bu system prompt, her talimatında bu kuralları tekrar etme ihtiyacını ortadan kaldırır. AI projede tutarlı kararlar verir.
Negatif Prompting (Ne İstemediğini Belirtme)
AI'a sadece ne istediğini değil, ne istemediğini de söylemek. Bu teknik, gereksiz karmaşıklığı ve istenmeyen özellikleri önler.
"Bir blog listeleme sayfası yap. Ekstra kütüphane kullanma, Astro'nun yerleşik özelliklerini kullan. Yorum sistemi ekleme, sosyal paylaşım butonları ekleme, newsletter formu ekleme. Sadece: başlık, tarih, özet ve yazıya link."
"Ekleme" kısmı çok önemli. AI bazen "yardımcı olmak" adına fazladan özellikler ekler. Negatif prompting bunu önler.
Constraint Prompting (Kısıt Belirleme)
Teknik kısıtları açıkça belirtme. Özellikle vibecoding'de performans ve basitlik için kritik.
"Bu sayfada: maximum 3 bağımlılık kullan, JavaScript bundle boyutu 50KB'ı geçmesin, tüm görseller lazy load olsun, First Contentful Paint 1.5 saniyenin altında olmalı. Bu kısıtları karşılayan en basit çözümü uygula."
Prompt Engineering'de Yaygın Hatalar
İyi prompt yazmak kadar, kötü prompt hatalarından kaçınmak da önemli. İşte en sık yapılan hatalar:
1. Çok Genel Olmak
"Güzel bir uygulama yap" gibi genel talimatlar, AI'ı belirsizliğe sürükler. Her prompt'ta en az bir somut detay ver — renk, boyut, davranış, yapı.
2. Çok Fazla Şeyi Tek Seferde İstemek
10 özelliği tek prompt'ta istemek, AI'ı aşırı yükler. Sonuçta bazıları eksik, bazıları bozuk olur. Adımlara böl, her adımda 1-3 şey iste.
3. Bağlam Vermemek
AI projen hakkında hiçbir şey bilmiyormuş gibi davranma. Proje bağlamını, teknoloji tercihlerini ve mevcut yapıyı paylaş.
4. Hata Mesajını Paylaşmamak
"Çalışmıyor" demek yerine hata mesajını yapıştır. AI hata mesajlarını analiz etmekte çok başarılı — ama görmediği hatayı çözemez.
5. İlk Sonucu Kabul Edip Devam Etmek
AI'ın ilk ürettiği sonucu test etmeden bir sonraki adıma geçmek, sorunları biriktirir. Her adımda test et, doğrula, sonra ilerle.
6. Çelişkili Talimatlar Vermek
"Minimalist olsun ama her yerde animasyon olsun" veya "Basit olsun ama 20 özelliği olsun" gibi çelişkili talimatlar AI'ı kararsız bırakır. Tutarlı ol.
7. AI'ın Bilmesini Beklediğin Şeyleri Söylememek
AI telepat değil. "Biliyorsun işte, daha önce konuştuk" gibi belirsiz referanslar iş yapmıyor. Her prompt kendi içinde yeterli olmalı, veya açıkça önceki bağlama referans vermeli.
Vibecoding'de Prompt Engineering vs ChatGPT'de Prompt Engineering
Prompt engineering her yerde geçerli bir beceri ama vibecoding'deki uygulaması ChatGPT veya benzeri sohbet araçlarındaki kullanımdan önemli farklılıklar taşır. Bu farkları anlamak, vibecoding'de daha etkili olmanı sağlar.
Kalıcılık
ChatGPT: Her konuşma bağımsız. Kötü bir prompt verdiysen, yeni bir konuşma aç ve yeniden başla. Maliyeti düşük.
Vibecoding: Her prompt projenin durumunu değiştirir. Kötü bir prompt dosyaları bozabilir, mimariyi yanlış yöne çekebilir. Geri almak zor ve maliyetli. Bu nedenle prompt'lar daha dikkatli ve planlanmış olmalı.
Bağlam Birikimi
ChatGPT: Tek seferlik sorular. Bağlam çoğu zaman kısa.
Vibecoding: Yüzlerce dosya, binlerce satır kod, onlarca bağımlılık. Bağlam devasa ve birikimli. Prompt'lar bu bağlamı dikkate almalı — "bu projede" neresi olduğunu AI bilmeli.
Çıktı Türü
ChatGPT: Metin çıktısı. Yanlışsa okursun ve düzeltirsin.
Vibecoding: Dosya değişiklikleri, paket yüklemeleri, konfigürasyon güncellemeleri. Yanlışsa bozuk bir uygulaman olur. Çıktının doğruluğunu test etmen şart.
Süre ve Derinlik
ChatGPT: Birkaç dakikalık etkileşimler.
Vibecoding: Saatlerce, günlerce süren projeler. Prompt stratejin proje boyunca tutarlı olmalı. İsimlendirme kuralları, dosya yapısı, mimari kararlar — hepsi prompt'larında yansımalı.
Pratik Alıştırmalar
Prompt engineering teoriyle değil, pratikle öğrenilir. İşte becerini geliştirmek için yapabileceğin alıştırmalar:
Alıştırma 1: Aynı Proje, Farklı Prompt'lar
Basit bir proje seç (ör. to-do uygulaması). Önce kötü bir prompt ile başla ("bir to-do uygulaması yap"). Sonucu gör. Sonra aynı projeyi çok detaylı bir prompt ile yeniden yap. İki sonucu karşılaştır. Fark seni şaşırtacak.
Alıştırma 2: Prompt Dönüştürme
Aşağıdaki kötü prompt'ları bu yazıdaki ilkeleri kullanarak iyi prompt'lara dönüştür:
- "Bir dashboard yap."
- "Veritabanı bağla."
- "Tasarımı düzelt."
- "Login ekle."
- "Hızlandır."
Her birini spesifiklik, bağlam, adımlama ve örnekleme ilkelerini uygulayarak yeniden yaz. Bu alıştırmayı düzenli yapmak, prompt yazma refleksini geliştirir.
Alıştırma 3: Referans Analizi
Beğendiğin bir web sitesini seç. Bu sitenin her bölümünü (hero, özellikler, fiyatlandırma, footer) ayrı ayrı tanımlayan prompt'lar yaz. Mümkün olduğunca detaylı ol — renkler, boyutlar, spacing, tipografi, animasyonlar. Sonra bu prompt'ları Claude Code'a ver ve sonucu referansla karşılaştır.
Alıştırma 4: Kısıtlı Prompt
Bir özellik için en kısa ama en etkili prompt'u yazmaya çalış. Gereksiz kelime yok, ama tüm kritik bilgiler mevcut. Bu, prompt optimizasyonunu öğretir — uzun prompt yazmak kolay, kısa ve etkili prompt yazmak zor.
İyi Prompt Yazmanın Kuralları ile İlişki
Bu yazıyı okuyanlar, Vibecoding'de İyi Prompt Yazmanın 10 Kuralı yazımızla bu yazı arasındaki farkı merak edebilir. İlişkiyi açıklayalım:
Bu yazı (Prompt Engineering Nedir?): Kavramsal ve teorik temeli oluşturuyor. Prompt engineering'in ne olduğunu, neden önemli olduğunu, arkasındaki ilkeleri ve ileri düzey teknikleri açıklıyor. "Neden?" ve "nasıl çalışıyor?" sorularına cevap veriyor.
İyi Prompt Yazmanın 10 Kuralı: Pratik ve uygulamalı. Her biri somut bir kural, somut bir kötü/iyi örnek çifti ile açıklanmış. "Ne yapmalıyım?" sorusuna cevap veriyor. Elinin altında tutacağın bir checklist.
İkisini birlikte oku: önce bu yazıyla kavramsal temeli anla, sonra 10 kuralı pratik rehber olarak kullan. Teoriyi anlayan biri, kuralları daha bilinçli uygular.
Sonuç: Prompt Engineering Yeni Okuryazarlık
Prompt engineering, yapay zeka çağının temel okuryazarlığı. Tıpkı 90'larda bilgisayar kullanmayı öğrenen insanların avantaj kazandığı gibi, bugün prompt engineering öğrenen insanlar yarının avantajını yakalıyor.
Vibecoding'de bu beceri sadece faydalı değil, olmazsa olmaz. Senin prompt'un senin ürünün. AI ne kadar güçlü olursa olsun, aldığı talimat kadar iyi çalışır. Ve o talimatı veren sensin.
Temel ilkeleri öğren: spesifik ol, bağlam ver, adımlara böl, örnekle açıkla. İleri teknikleri keşfet: chain-of-thought, few-shot, system prompt. Hatalardan kaçın: genel olmaktan, çok fazla istemekten, test etmemekten. Ve en önemlisi: pratik yap. Her prompt bir öğrenme fırsatı.
İyi prompt yazmanın 10 pratik kuralını öğrenmek için bir sonraki yazımızı oku. Ve ilk vibecoding projenle bu bilgileri pratiğe dök.
WP Okulu'nun vibecoding atölyesinde, Claude Code ile gerçek projeler üzerinde prompt yazma becerini geliştiriyorsun. 8 kişilik grupta, Anthropic sertifikalı eğitmen eşliğinde 3 haftada kendi ürününü geliştir. Atölye detaylarını incele →