VibeUniBaşvuru

Örnek Oturum · İyi Bir Vibe Coding Seansının Anatomisi

Aşağıda gerçekçi bir oturum kaydı var: sandbox not uygulamasına arama kutusu ekleniyor. Sol taraf oturumun akışı, 🖍 işaretli kutular kenar notları — "burada neden böyle yapıldı" açıklamaları. Bu dosyayı Seviye 1'i bitirdikten sonra okuyun; her hamlenin dersini tanıyacaksınız.


KULLANICI:

Bağlam: sandbox klasöründeki not uygulaması; notlar tek sayfada listeleniyor. Hedef: liste üstüne arama kutusu — yazdıkça notları başlık ve içerikte filtrelesin. Kısıtlar: yeni paket kurma; mevcut renk/tasarımı değiştirme; sadece ilgili dosyalara dokun. Kabul: 3+ notla arama çalışıyor; kutu boşken tüm liste görünüyor; npm run build hatasız.

🖍 Kenar notu: 4-parça şablon (ders 1.1) eksiksiz. Özellikle kabul kriterindeki "kutu boşken tüm liste" maddesine dikkat — bu bir uç durumdur. Uç durumu baştan yazmak, sonra hata ayıklamaktan ucuzdur.

KULLANICI: (Shift+Tab — plan mode'a geçer)

🖍 Kenar notu: İş birden çok dosyaya dokunabilir; kullanıcı "önce plan" dedi (ders 1.3). Küçük bir yazı düzeltmesi olsaydı plan mode tören olurdu.

AI (plan): Şu planı öneriyorum: (1) app/page.tsx içine arama durumu ve kutu ekle; (2) filtre mantığını ayrı yardımcı fonksiyona koy; (3) components/NoteList.tsx'e filtrelenmiş listeyi geçir; (4) boş-sonuç durumu için "sonuç bulunamadı" mesajı ekle; (5) styles/theme.css'te kutu için yeni renk değişkeni tanımla.

KULLANICI: 5. adımı çıkar — kısıtlarda "tasarımı değiştirme" var, mevcut giriş alanı stilini aynen kullan. 4. adım iyi fikir, kalsın. Onaylıyorum.

🖍 Kenar notu: Plana gerçek bir itiraz (ders 1.3): AI "iyileştirme" refleksiyle kısıt dışına taşmıştı (yeni renk değişkeni). Kullanıcı planda yakaladı — iş yapıldıktan sonra yakalasa geri aldıracaktı. Ayrıca planın iyi önerisini (boş-sonuç mesajı) kabul etti: denetim, körü körüne reddetmek değildir.

AI: (değişiklikleri yapar, diff gösterir: app/page.tsx +18/−2, components/NoteList.tsx +9/−1)

KULLANICI: Diff'te page.tsx'te silinen 2 satır ne, neden gitti?

🖍 Kenar notu: Diff'in üç sorusu (ders 1.4): dosyalar doğru ✓ (plandakiler), boyut orantılı ✓ (~30 satır), silinenler? — işte o soruluyor. Silinen satır sorusu refleks olmalı.

AI: Silinen 2 satır, not listesini doğrudan render eden eski satırlardı; artık filtrelenmiş liste üzerinden render ediliyor. Davranış aynı, kaynak değişti.

KULLANICI: Tamam. Build çalıştır, çıktıyı kısaltmadan göster.

AI: (çalıştırır) npm run buildHATA: Type error: Property 'baslik' does not exist... Did you mean 'title'?

🖍 Kenar notu: Kapı çalıştı (ders 2.3). "Bitti" beyanına gerek kalmadan mekanik hakem konuştu. Kullanıcı build'i commit'ten ÖNCE istedi — doğru sıra.

KULLANICI: Düzeltmeden önce: kök neden ne? Basit dille anlat.

AI: Filtre fonksiyonunu yazarken not alanının adını baslik varsaydım; oysa bu projede alan adı İngilizce: title. Kök neden: mevcut veri yapısını okumadan isim tahmin etmem. Düzeltme: fonksiyonda basliktitle.

🖍 Kenar notu: Kök neden döngüsü (ders 2.4): "düzelt" değil, "önce açıkla" istendi. Açıklama ikna edici: ne bozuktu (yanlış alan adı), neden oldu (tahmin), niye tekrarlamaz (gerçek şemaya bakıldı). Bu aynı zamanda küçük bir halüsinasyon örneği — AI var olmayan alan adını kendinden emin kullandı (ders 1.7).

AI: (düzeltir) Build → BAŞARILI. İsterseniz kabul kriterlerini deneyelim.

KULLANICI: Ben deniyorum. (uygulamayı açar: 4 not ekler, "market" arar → 1 sonuç ✓; kutuyu boşaltır → 4 not görünüyor ✓; olmayan kelime arar → "sonuç bulunamadı" ✓)

🖍 Kenar notu: Doğrulama merdiveninin 1. basamağı (ders 1.5): kendin dene. Kullanıcı kabul kriterlerini TEK TEK işaretledi — "açtım, güzel duruyor" değil.

KULLANICI: (YENİ, temiz bir oturum açar)

Bu projede "arama kutusu: başlık+içerikte canlı filtre, boş kutuda tam liste" işinin bittiği iddia ediliyor. Bağımsız denetçi ol: değişiklikleri incele, kriterleri kanıtla kontrol et, uç durumları listele. Hiçbir şeyi düzeltme — GEÇTİ/KALDI + kanıt raporu ver.

İKİNCİ AJAN (rapor): Kriterler: GEÇTİ (kanıt: filtre fonksiyonu her iki alanda arıyor; boş sorgu tüm listeyi döndürüyor; build günlüğü temiz). Uç durum notu: arama BÜYÜK/küçük harfe duyarlı — "Market" yazınca "market" notu bulunuyor ama "MARKET" yazınca da bulunuyor ✓; ancak Türkçe 'İ/i' dönüşümünde bir nota rastlanmadı, 'İstanbul' başlıklı notu 'istanbul' araması bulamayabilir. Test edilmesini öneririm.

🖍 Kenar notu: İkinci ajanın değeri (ders 1.5): işi yapan oturumun hiç düşünmediği bir uç durum (Türkçe büyük İ) buldu. Temiz bağlam = önyargısız göz. Kullanıcı raporu da sorgusuz kabul etmeyecek: iddiayı bizzat deneyecek.

KULLANICI: (dener: "İstanbul" notu, "istanbul" aramasında gerçekten çıkmıyor) Bulgu doğru. (ana oturuma döner) İkinci bir denetimde şu bulgu çıktı: Türkçe 'İ/i' dönüşümünde arama kaçırıyor. Kök nedenini bul, düzelt, build + kriterleri tekrar doğrula.

AI: (düzeltir: karşılaştırma Türkçe-uyumlu küçük harfe çevrilerek yapılıyor; build ✓)

KULLANICI: Doğruladım. Bu hâli commit'le; açıklamaya arama özelliğini ve Türkçe harf düzeltmesini yaz.

🖍 Kenar notu: Kayıt noktası (ders 2.2): doğrulanmış sağlam adım → commit. Yarın bir şey bozulursa dönülecek yer burası.

AI: Commit atıldı: "Not arama: başlık+içerik canlı filtre; TR harf duyarlılığı düzeltildi."


Bu oturumun karnesi

Hamle Ders Sonuç
4-parça istem + uç durumlu kabul kriteri 1.1 Tahmin payı kapandı
Plan mode + kısıt-taşması itirazı 1.3 Kapsam sızması işten önce yakalandı
Diff'te silinen satır sorusu 1.4 Şeffaf gerekçe alındı
Build kapısı commit'ten önce 2.3 Hata mekanik yakalandı
Kök neden isteme 2.4 Yama değil kalıcı düzeltme
Kendin deneme + ikinci-ajan denetimi 1.5 Görünmeyen uç durum (Türkçe İ) bulundu
Doğrulanmış adımda commit 2.2 Güvenli kayıt noktası

Toplam ek süre: belki 10 dakika. Karşılığı: kullanıcıya hiç ulaşmayacak iki hata ve tam olarak ne yapıldığını bilen bir ürün sahibi. Denetim, yavaşlamak değildir — hatayı ucuzken yakalamaktır.