1. Başlamadan Önce: Proje Tanımı
Kodlamaya başlamadan önce bir metin dosyasına şunları yaz:
- Proje ne yapıyor (tek cümle)
- Hangi teknolojiler kullanılacak
- MVP’de olması gereken özellikler (maksimum 3-5)
- Kesinlikle bu aşamada yapılmayacaklar
Bu dosya her yeni chat/context açtığında AI’a vereceğin proje manifestosu olacak. Böylece her seferinde sıfırdan anlatmazsın.
2. Tech Stack Seçimi
AI’a “ne kullanayım” diye sorma, kendin karar ver veya şöyle sor:
“Şu özelliklere sahip bir proje yapacağım: [özellikler]. Şu teknolojileri düşünüyorum: [seçenekler]. Tradeoffları karşılaştır.”
Bilmediğin stack seçme. AI hatasız kod üretmez, hata geldiğinde debug edebileceğin teknolojiyi seç. Tanımadığın frameworkle vibe coding yapmak, bilmediğin bir dilde kavga etmek gibidir.
3. Proje İskeletini Kur
İlk promptun büyük özellik değil, boş ama çalışan bir iskelet olsun:
“Şu stack ile boş bir proje oluştur: [stack]. Folder structure, config dosyaları, basic routing ve bir hello world endpointi olsun. Çalıştırma komutlarını da yaz.”
Bunu çalıştır, çalıştığını doğrula, sonra git init + ilk commit.
4. Özellik Ekleme Döngüsü
Her özellik için şu döngüyü takip et:
a) Prompt yaz — tek bir iş tanımla
Kötü: “Kullanıcı sistemi yap, login olsun, profil sayfası olsun, admin paneli olsun”
İyi: “Kullanıcı kayıt endpointi yap. Email ve şifre alsın, şifreyi bcrypt ile hashlesin, veritabanına kaydetsin. Validasyon hataları için uygun HTTP kodları dönsün.”
Bir prompt = bir iş. Karmaşık işi alt görevlere böl.
b) Çıktıyı oku
Kodu körü körüne yapıştırma. En azından şunlara bak:
- Ne import etmiş, gereksiz bağımlılık var mı
- Hardcoded değerler var mı (.env’ye alınması gereken)
- Hata yönetimi var mı yoksa sadece happy path mi yazmış
c) Çalıştır ve test et
Manuel olarak dene. Beklediğin sonucu veriyor mu? Edge case’leri dene: boş input, yanlış format, olmayan ID.
d) Test yazdır
Bu adımı atlama. Her özellik sonrası:
“Bu fonksiyon/endpoint için unit testleri yaz. Happy path, edge case ve hata senaryolarını kapsa.”
Testler geçiyorsa → commit at. Geçmiyorsa → AI’a hata mesajıyla birlikte gönder.
e) Commit
Her çalışan durumda anlamlı commit mesajıyla kaydet. git commit -m "feat: user registration with validation" gibi. “asdfg” commitler atma, iki gün sonra rollback yapman gerektiğinde ağlarsın.
5. Context Window Yönetimi (Çoğu Kişinin Atladığı Kısım)
AI’ın hafızası sınırlı. Uzun bir chat’te 50 mesaj sonra önceki kararları unutur, çelişkili kod üretir.
Kurallar:
- Her yeni özellik grubunda yeni chat aç
- Yeni chat’in başına proje manifestosunu + mevcut dosya yapısını + ilgili kod dosyalarını yapıştır
- “Şu ana kadar şunları yaptık” özeti ver
- Tek bir chat’te tüm projeyi bitirmeye çalışma
Eğer chat’te tutarsızlık görmeye başladıysan (önceki kodla çelişen çıktı, var olan fonksiyonu tekrar yazması vs), context dolmuştur. Yeni chat aç.
6. Code Review Yaptır
Bir özelliği bitirdikten sonra:
“Şu dosyayı incele. Potansiyel bugları, güvenlik açıklarını, performans sorunlarını ve iyileştirme önerilerini listele.”
Sonra:
“Bu önerileri uygula.”
Bu iki adımlı süreç, tek seferde “mükemmel kod yaz” demekten çok daha iyi sonuç verir. Çünkü üretme ve değerlendirme farklı görevler, AI’ı ayırınca ikisini de daha iyi yapar.
7. Refactor Noktaları
Her 3-4 özellikten sonra dur ve:
“Şu dosyaları incele. Tekrar eden pattern’ler, ortak çıkarılabilecek utility fonksiyonlar ve yapısal iyileştirmeler öner.”
Vibe coding’de kod hızla büyür ve çabuk spagettiye döner. Düzenli refactor yapmazsan 20. özellikte proje yönetilemez hale gelir.
8. Hata Debug Döngüsü
Hata alınca şunu yapma: “çalışmıyor düzelt”
Şunu yap:
“Şu hatayı alıyorum: [tam hata mesajı]. İlgili kod şu: [kod]. Hatanın nedenini açıkla ve düzeltmeyi öner.”
- Tam hata mesajı ver (stack trace dahil)
- İlgili kodu ver
- Ne bekliyordun, ne oldu — ikisini de söyle
AI’ın 3 denemede çözemediği bir bug varsa, farklı bir yaklaşım sor veya yeni chat aç ve sorunu temiz context ile anlat. Aynı chat’te 10 kere “hala çalışmıyor” döngüsüne girme.
9. Dokümantasyon
Proje bittiğinde değil, her adımda yap:
- AI’a her modül/dosya için dosya başı yorum yazdır
- README’yi güncel tut: kurulum, çalıştırma, env değişkenleri
- Karmaşık iş mantığı varsa kısa bir açıklama dosyası oluştur
“Bu projenin README dosyasını güncelle. Kurulum adımları, environment değişkenleri, çalıştırma komutları ve proje yapısının kısa açıklaması olsun.”
10. Deploy Öncesi Checklist
Production’a atmadan önce AI’a şunu sor:
“Bu projeyi production’a deploy etmek istiyorum. Güvenlik, performans, hata yönetimi ve konfigürasyon açısından kontrol listesi oluştur ve eksikleri belirt.”
Sonra tek tek düzelttir. Özellikle şunlara dikkat et: API anahtarları .env’de mi, CORS ayarları doğru mu, rate limiting var mı, hata logları düzgün mü, SQL injection / XSS koruması var mı.
Özet Akış
Proje tanımı → İskelet → [Özellik promptu → Oku → Test et →
Test yazdır → Commit] × N → Refactor → Code review →
Dokümantasyon → Deploy checklist
Tüm sürecin temeli şu: AI kod üretir, sen karar verirsin. Hangi kodu kabul edeceğine, ne zaman commit atacağına, ne zaman yeni context açacağına, ne zaman geri alacağına sen karar verirsin. Bu kararları AI’a bırakırsan vibe coding değil, şans oyunu oynarsın.