İlk özellik çalıştı. İkincisi eklendi.
Birincisi bozuldu.
Bu döngü kod bilmemekten çıkmıyor. Yazılı bir davranış listesinin olmamasından çıkıyor. Bu yazı o listeyi kurmayı anlatıyor.
Liste on maddeyi geçmiyor ve elle koşuluyor. Test altyapısı kurmak gerekmiyor.
Kurmak isteyen için de kapı açık. Ama sıra şu: önce liste, sonra otomasyon. Neyi otomatikleştireceğini bilmeden kurulan test, çoğu projede terk ediliyor.
Bozulan şey yeni kod değil
Yeni bir istek verdiğinde ajan mevcut yapıya dokunuyor. Dokunduğu yerin eski davranışı bozulduysa bunu kimse fark etmiyor.
Sen yeni özelliğe bakıyorsun. Eskisini denemek aklına gelmiyor, çünkü çalışıyordu.
Kullanıcı ise ikisini birlikte kullanıyor. Bozulmayı ilk fark eden de genellikle o oluyor.
Üçüncü özellikte durum daha kötüleşiyor. Artık hangi davranışın ne zaman bozulduğunu da bilmiyorsun.
Bu noktada çoğu kişi ürünü bırakıyor. Bırakma sebebi de teknik değil: güven kalmıyor.
Kırılganlık burada doğuyor. Kodun kalitesinden önce, kontrolün yokluğundan.
Aynı şey deneyimli ekiplerde de oluyor. Fark şu: onlarda bu kontrolü bir makine yapıyor, sende bir liste yapacak.
Çalışan davranışların listesi
Yeni özellik eklemeyi bir saatliğine durdur ve bugüne kadar çalışan her davranışı tek cümleyle yaz.
Kullanıcı kayıt açabiliyor. Listede kayıtlar görünüyor. Tarih boşsa uyarı çıkıyor. Silinen kayıt geri gelmiyor.
Cümleler kısa ve gözle kontrol edilebilir olsun. "Uygulama düzgün çalışıyor" bir madde değil; kontrol edilemiyor.
Liste on maddeyi geçmiyorsa doğru yoldasın. Geçiyorsa ürünün zaten kapsam sorunu var demektir.
Bu liste senin tek gerçek ölçütün. Her yeni istekten sonra baştan koşuluyor.
Koşturmak beş dakika sürüyor. Bozulan bir davranışı bir hafta sonra bulmak bir günü yiyor.
Bozmayı dene, kullanmayı değil
Tek bir gösteri akışını tamamlamak kanıt değil. Ürünü kullanıcı gibi değil, sinirli bir kullanıcı gibi dene.
Boş gönder. Aynı kaydı iki kez ekle. Çok uzun bir isim gir. Sayfayı yenile. Geri tuşuna bas.
Bu beş deneme kod okumadan yapılıyor ve bozulmaların çoğunu yakalıyor. Hepsini yapmak beş dakika sürüyor.
Beşi ezberlenecek kadar az. Bir hafta sonra sıralamayı düşünmeden uyguluyorsun.
Yakaladığın her bozulmayı listeye bir madde olarak ekle. Liste böyle büyüyor ve büyüdükçe işe yarıyor.
Listeyi ajana da verebilirsin. Her değişiklikten sonra kendisi koşturup sonucu raporlayabiliyor; ama son bakan yine sen ol.
"Düzelttim" bir kanıt değil
Ajan bir hatayı düzelttiğini söylüyor. Bu cümle bir rapor, kanıt değil.
Her düzeltmeden sonra bozulan durumu kendi elinle tekrar dene. Sonra listedeki diğer maddeleri de koştur.
Ajanın kendi düzeltmesini kontrol etmesini de isteyebilirsin. Ama son bakan sen ol; onun gördüğü şey senin ekranın değil.
Bu bir güven meselesi değil, yöntem meselesi. İnsan geliştiriciler de kendi düzeltmelerini test ediyor.
Ajanın raporu ile senin ekranın arasındaki fark çoğu zaman küçük bir varsayımdan çıkıyor. O varsayımı yalnız sen görebiliyorsun.
İki denemeden sonra temiz oturum
Ajan aynı hatayı üçüncü kez düzeltmeye çalışıyorsa sorun kodda değil.
Sohbet uzadıkça ajan kendi eski kararlarını unutuyor ve çelişen talimatları harmanlıyor. Bu noktada daha çok açıklama yapmak işi kötüleştiriyor.
Oturumu temizle. Bozulan davranışı, beklediğin sonucu ve denediğin iki yolu tek mesajda yaz.
Bu üç bilgi olmadan açılan temiz oturum da aynı yere gidiyor. Temizlik bağlamı siliyor, bilgiyi senin taşıman gerekiyor.
Çoğu zaman üçüncü deneme temiz oturumda ilk seferde çalışıyor.
Temiz oturuma geçerken kalıcı proje notunu da güncelle. Kaybolan bağlamın bir kısmı oraya yazılmışsa geri gelmiyor.
Kalıcı kuralları bir yere yaz
Projede tekrar eden kararlar var: tarih biçimi, dil, hangi alanların zorunlu olduğu, nereye dokunulmayacağı.
Bunları kalıcı bir proje notuna geçir. Her oturumda yeniden anlatmak hem zaman alıyor hem de her anlatımda biraz farklı çıkıyor.
Farklı anlatım da farklı sonuç üretiyor. Aynı ürünün iki ekranı böyle birbirinden ayrılıyor.
Notu kısa tut. Uzun bir kural listesi okunmuyor ve okunmayan kural, yazılmamış kuralla aynı.
Bir kural değiştiğinde notu da güncelle. Eskimiş bir kuralı tutarlı biçimde uygulamak, hiç kural olmamasından iyi değil.
Notta ne olmayacağını da yaz. Dokunulmayacak dosyalar ve değiştirilmeyecek davranışlar, en çok iş gören maddeler.
Değişikliği küçük tut
Büyük bir istek verildiğinde ajan çok yere dokunuyor ve bozulmayı bulmak zorlaşıyor.
Küçük istek verildiğinde bozulan şeyle yapılan değişiklik arasındaki bağ görünür kalıyor.
Bu bağ kaybolduğunda geriye tek yol kalıyor: her şeyi tek tek denemek.
Bir seferde tek davranış değiştir. Çalıştığını gör, kaydet, sonra sıradakine geç.
Kaydetmeyi atlama. Çalıştığını görüp kaydetmeden devam etmek, geri dönüş noktasını da kaybetmek demek.
Bu sıra yavaş geliyor. Pratikte hızlandırıyor, çünkü geri dönmek gereken mesafe hep kısa kalıyor.
Küçük değişiklik aynı zamanda daha iyi tarif demek. Büyük bir isteği net yazmak zor; küçük bir isteği net yazmak kolay.
Geri dönüş yolunu hazır tut
Her çalışan sürümü işaretle. Ne zaman işaretlediğini ve neyin çalıştığını bir satırla yaz.
Bozulduğunda uzun bir düzeltme turuna girmek yerine çalışan noktaya dönmek çoğu zaman daha hızlı.
Dönmek yenilgi de değil. Çalışan bir sürümden yeniden başlamak, bozuk bir sürümü onarmaya çalışmaktan kısa.
Bu kurulumu ilk gün yap. Bozulduktan sonra kurmaya çalışmak, en kötü anda öğrenmek demek.
Teknik yardım alacaksan da en verimli yer burası. Yarım saatlik bir kurulum, aylarca iş görüyor.
Kurulumdan sonra öğrenmen gereken tek şey iki komut: nereye döneceğim ve nasıl işaretleyeceğim.
Nerede sınır var
Tek başına kontrol edebileceğin bir alan var, bir de olmayan.
Giriş sistemi, ödeme, gerçek kişisel veri ve birden çok hesabın aynı veriye erişmesi bu kontrolün dışında. Bir eğitmenin başka birinin kayıtlarını görmemesi, o bölümü ekrandan gizlemekle çözülmüyor.
Bu katmanlarda kodu okuyabilen birine inceletmek gerekiyor. Yanlış yapıldığında bedelini kullanıcı ödüyor.
İnceleme istemek de bir yenilgi değil. Hangi katmanın inceleneceğini bilmek, ürün sahibi olmanın parçası.
Kim için
Vibe coding ile bir şey çıkarmış ve ikinci özellikte tıkanmış herkes için. Kod bilgisi gerekmiyor.
Otomatik test altyapısı kurmak isteyen için değil. Burada anlatılan kontrol elle yapılıyor ve on maddeyi geçmiyor.
Ürünü büyütmeye karar verdiğinde bir sonraki adım zaten bu listeyi otomatikleştirmek oluyor; liste hazır olduğu için o iş de kısalıyor.
Bugün yapılacak tek şey
Yeni özellik isteme.
Ürününü aç ve bugün çalışan her davranışı tek cümleyle yaz. On maddeyi geçme. Sonra beş bozma denemesini uygula ve yakaladığın her şeyi listeye ekle.
Bu bir saatlik iş. Karşılığında ürünün ne zaman bozulduğunu öğrenen tek kişi sen oluyorsun.
Bir sonraki istekten sonra aynı listeyi baştan koştur. Liste bir şey yakaladıysa işini yapmış demektir.
Yakalamadıysa da bilgi. İki hafta üst üste hiçbir şey yakalamayan madde, ya yanlış yazılmış ya da artık gereksiz.
Listeyi canlı tut. Ölü madde, listeyi okumayı da zorlaştırıyor.