Mutfaksim basit bir soruyla başladı: dolapta bunlar var, ne çıkar?
Bu, tarif aramaktan farklı bir soru. Tarif ararken sen ne yapacağını biliyorsun ve malzemeyi tamamlıyorsun. Burada tersi: malzeme sabit, sonuç değişken.
İçinde ne var
- Elindekiyle eşleştirme — malzemeleri giriyorsun, ne çıkabileceğini ve neyin eksik olduğunu görüyorsun.
- Ölçeklendirme — dört kişilik tarifi yedi kişiye çıkarmak, ondalık bir çarpım değil: bazı malzemeler doğrusal ölçekleniyor (un, süt), bazıları ölçeklenmiyor (tuz, kabartma tozu, pişirme süresi).
- Teknik kütüphanesi — “mühürlemek”, “dinlendirmek”, “terbiye etmek” gibi adımlar için ayrı ayrı açıklama ve kısa görüntü.
- Kişisel not — bir tarife beş üzerinden puan vermek yerine “fırında 10 dk fazla tut” yazabilmek. İnsanlar tarifi puanlamıyor, düzeltiyor.
Beş tarif yemeği tuzluyordu ama malzeme listesinde tuz yoktu. Yazarken herkesin “zaten var” saydığı bir şey.
Kullanıcı için en can sıkıcı hata türü bu: listeyi alıp markete gidiyorsun, evde bir şeyin eksik olduğunu anlıyorsun. Otomatik bir denetim ekledim — adımlarda geçen her malzeme listede olmak zorunda.
Sonra: site kendini yayımlasın
İçerik düzenli üretiliyor ve sosyal medyaya elle taşınıyordu: ekran görüntüsü al, metni kopyala, uygulamayı aç, yapıştır. Her defasında beş dakika ve her defasında biraz daha isteksiz.
Klasik bir otomasyon adayı. Üç hatayla birlikte geldi.
İlk sürpriz: iki ayrı yol, iki ayrı izin adı
Platformun iki farklı entegrasyon yolu var ve hangisine sahip olduğun hesabının türüne bağlı. Daha can sıkıcısı: ikisinde izinlerin adları farklı. Belgeler bunu net söylemiyor; ancak hata mesajından anlıyorsun.
Çözüm ikisini birden desteklemek oldu: sistem hangi yolun mevcut olduğunu keşfediyor ve ona göre ilerliyor.
Hata 1: yarış durumu
Yayınlama akışı iki adım: önce görselin bulunduğu adresi bildiriyorsun, sonra “yayınla” diyorsun. İkinci adımda platform, birinci adımda verdiğin adresten görseli kendisi çekiyor. Ve kodum bu çekişi beklemiyordu.
1. kart görselini üret ve sunucuya yaz
2. adresi bildir
3. hemen "yayınla" de
↑ platform henüz görseli çekmedi → gönderi görselsiz
Bazen çalışıyordu — görsel önbellekteyse ya da ağ hızlıysa. Bazen çalışmıyordu. Aralıklı hataların tipik imzası.
Düzeltme: ikinci adım artık kaynağın işlenme durumunu soruyor ve hazır olana kadar bekliyor. “Bekle ve dene” yerine durumu sor. Kör bir gecikme koymak çözüm değil, sadece hatayı seyrekleştirir.
Hata 2: sonsuza kadar kilitlenen konu
Aynı içeriğin iki kez yayımlanmaması için bir kilit vardı: yayına başlamadan önce konu “işleniyor” diye işaretleniyor, bitince bırakılıyor.
Sorun: hata durumunda bırakılmıyordu. Bir yayın başarısız olduğunda konu sonsuza kadar “işleniyor” kalıyor ve bir daha hiç yayımlanmıyordu. Sessizce.
Bir kilidin her koşulda bırakılacağı garanti edilmeli — başarıda, hatada ve süreç çökmesinde. Sonuncusu en zoru, çünkü kodun hiç çalışmaz. Çözüm kilide bir son kullanma zamanı koymak.
Artık kilit hem hata yolunda bırakılıyor hem zaman aşımına sahip. İkisi birden gerekli.
Hata 3: kuru çalıştırma yalan söylüyordu
Gerçekten yayımlamadan önce ne olacağını gösteren bir kuru çalıştırma modu vardı. Ve aynı içeriği iki kez listeliyordu.
Sebep: kuru çalıştırma kendi ayrı kod yolunu kullanıyordu. Aday listesini farklı bir sorguyla topluyor ve tekilleştirmeyi atlıyordu. Yani gösterdiği şey, gerçek akışta olacak şey değildi — bu, olmamasından kötü, çünkü ona güveniyordum.
// yanlış
if (kuru) { adaylari_ayri_hesapla(); yazdir(); return; }
gercek_akis();
// doğru
const plan = gercek_akis_planla(); // aynı kod, her zaman
if (kuru) { yazdir(plan); return; } // sadece son adım atlanıyor
uygula(plan);
Ve bir kural: yayımlarken yalan söyleme
Otomatik yayınlamada en kolay hata, sistemin yapmadığı şeyi yaptım sanması.
“Gönderi paylaşıldı” bildirimi, platform gerçekten kabul etmeden gönderilmemeli. Akışın son adımı, platformun döndürdüğü gönderi kimliğini kaydetmek. Kimlik yoksa yayın olmamış sayılıyor — istek başarılı görünse bile.
Bu, sesli asistanın “ışığı kapattım” demeden önce doğrulaması ile aynı kural.
Aynı dönemde çıkan diğer küçük şeyler
- Sunucuda Türkçe karakterler bozuk çıkıyordu — yerelde sorunsuz. Kodlama ayarı iki ortamda farklıydı.
- Profil görseli 32 piksele indiğinde tanınmaz oluyordu. Küçük boyutta okunan şey detay değil, siluet.
- Bir bölüm başlığı, altındaki metin değiştikten sonra doğru olmaktan çıkmıştı ve aylarca öyle kaldı.
- Sekiz düz bağlantı üç gruba ayrıldı; menüde hiç görünmeyen bölümler ortaya çıktı.
Sonuncusu en öğretici. Metni güncellerken başlığı unutmak çok kolay, ve kimse şikâyet etmiyor — sadece sayfa biraz daha az anlamlı oluyor.
Ne öğrendim
Otomasyon işi ortadan kaldırmıyor; işin türünü değiştiriyor. Beş dakikalık elle taşıma gitti; yerine bir yarış durumu, bir kilit tasarımı ve bir kuru çalıştırma doğruluğu geldi.
Değer mi? Evet — ama sebebi zaman değil. Elle yapılan iş bazen atlanıyordu; otomatik olan atlanmıyor. Otomasyonun asıl kazancı hız değil, tutarlılık.