Bir fikrin var. Birkaç gün, belki birkaç saat harcıyorsun. Ekranlar açılıyor, buton çalışıyor, veri kaydediliyor. "Oldu" diyorsun. Ve orada büyük bir yanılgı başlıyor: çalışan bir prototipi, bitmiş bir ürünle karıştırmak.

Prototip Neyi Kanıtlar, Ürün Neyi Taşır?

Prototip tek bir şeyi kanıtlar: bu fikir teknik olarak mümkün. Bir kullanıcı, bir senaryo, ideal koşullar — hepsi çalışır, çünkü hiçbiri henüz zorlanmadı. Ürün ise başka bir şey taşımak zorunda: gerçek kullanıcıların gerçek verilerini, aynı anda birden fazla isteği, internetin yavaşladığı anı, birinin formu yanlış doldurduğu anı, birinin üç kere art arda "Kaydet"e bastığı anı. Prototip "çalışıyor mu?" sorusuna cevap verir. Ürün "her koşulda çalışıyor mu?" sorusuna cevap vermek zorundadır. Bu ikisi aynı soru değil.

Yapay Zekâ Bu Farkı Bulanıklaştırdı

Bugün bir fikri koddan çıkarmak, birkaç yıl öncesine göre inanılmaz hızlı. Yapay zekâ araçlarıyla bir hafta sonu içinde çalışan bir uygulama çıkarmak mümkün — arayüzü, veritabanı bağlantısı, temel akışıyla. Bu, gerçek bir kazanç. Ama beraberinde tehlikeli bir yanılsama getiriyor: hız arttıkça, "bitti" hissi de erken geliyor. Bir şeyin hızlıca ortaya çıkması, onun sağlam olduğu anlamına gelmiyor. Kod çalışıyor olabilir; ama kaç kullanıcıyla, hangi veri boyutuyla, hangi hata senaryosuyla çalıştığı test edilmemiş olabilir.

Bunu eleştiri olarak söylemiyorum — ben de bu araçları kullanıyorum, hızlı prototipleme için gerçekten değerliler. Mesele araç değil, aracın bize verdiği hissin yanlış yorumlanması.

Test Etmemenin Bedeli Genelde Geç Görülür

Bir uygulamayı tek başına, kendi verinle, sakin bir ortamda denediğinde her şey sorunsuz görünür. Sorun, gerçek kullanıcılar devreye girdiğinde başlar: aynı anda gelen istekler, beklenmedik formatta girilen veriler, yavaş bir bağlantıda yarıda kesilen bir işlem, birinin sayfayı üç kere art arda yenilemesi. Tek kullanıcıyla hiç görünmeyen bir hata, yüz kullanıcıyla günde birkaç kez tetiklenen bir soruna dönüşür. Ve o noktada artık teknik bir mesele değil, bir güven meselesi haline gelir — kullanıcı şikayet eder, geri döner mi bilinmez, kötü bir yorum bırakır.

Bunun acı tarafı şu: bu sorunların çoğu, ürün canlıya çıkmadan önce, sadece birkaç farklı senaryo denenerek yakalanabilirdi. Fark, yeteneksizlik değil — zaman baskısı ve "zaten çalışıyor" rahatlığı.

Hız ile Sağlamlık Aynı Anda Olabilir

Buradaki çözüm "yavaş git" değil. Çözüm, hızı doğru yere harcamak. Yapay zekâ sadece kod yazmakta değil, test senaryosu üretmekte, uç durumları listelemekte, hata mesajlarını düşünmekte de kullanılabilir — ve kullanılmalı. Ama hangi senaryonun test edileceğine, neyin "yeterince test edilmiş" sayılacağına karar vermek, hâlâ bir insan işi. Araç hızlandırır; karar vermek, sorumluluk almak geliştiricide kalır.

Ürün Olmanın Şartı

Bir şeyin ürün sayılması için çalışması yetmiyor. Hata verdiğinde kullanıcıyı yarı yolda bırakmaması, beklenmedik girdilerde çökmemesi, yoğun kullanımda yavaşlasa bile durmaması gerekiyor. Bunlar "sonra eklenir" denilen ama genelde en son eklenen şeyler — ve tam da bu yüzden, çoğu zaman ilk kullanıcı dalgasında sınanan şeyler oluyor.

Buna iyi bir örnek, banka uygulamalarının çalışma mantığı. Bir para transferinde aslında birden fazla işlem art arda gerçekleşir: senin hesabından düşülür, karşı hesaba eklenir, işlem kaydı tutulur. Eğer bu adımlardan biri bile ortada bir yerde başarısız olursa — bağlantı kopar, sunucu çöker, ne olursa olsun — sistem tüm işlemi geri alır (rollback), sanki hiçbir şey olmamış gibi. Ya hepsi birden gerçekleşir, ya da hiçbiri (buna teknik dilde "atomiklik" deniyor). Aksi hâlde, parayı senin hesabından düşüp karşı tarafa hiç ulaştırmayan bir sistem ortaya çıkardı — ki bu tam olarak kullanıcı güvenini bir daha geri gelmeyecek şekilde kıran türden bir hata. Prototip aşamasında böyle bir senaryoyu test etmek akla bile gelmeyebilir, çünkü "normal" akışta her şey sorunsuz görünür. Ama ürün, tam olarak bu "normal olmayan" anlarda sınanır.

Prototip bir fikrin mümkün olduğunu gösterir. Ürün ise o fikrin, gerçek dünyanın dağınıklığında hâlâ ayakta durabildiğini kanıtlar. İkisi arasındaki mesafe, çoğu zaman sandığımızdan uzun.