Acil servisin triyaj masasında nöbet tutarken ya da ambulansla bir eve girdiğinizde, karşılaştığınız insanlardan duyacağınız ilk cümleler genellikle son derece dramatik, bulanık ve duygusal bir panik içerir:
"Ölüyorum doktor bey, kalbim patlayacak gibi!"
"Karnım öyle bir ağrıyor ki içim parçalanıyor!"
"Annem nefes alamıyor, hemen bir şey yapın!"
Eğer acil tıp çalışanları hastaların bu ilk çığlıklarına göre hareket etseydi, acil servisler her gün binlerce yanlış teşhis ve gereksiz cerrahi müdahaleyle dolup taşardı. Çünkü acı çeken bir insan, bedeninde neyin ters gittiğini rasyonel olarak analiz edemez. Kalp krizi geçirdiğini sanan bir hastanın sadece ağır bir mide spazmı (reflü) yaşadığı; veya "Sırtım tutuldu, rüzgarda kaldım" diyen bir hastanın ölümcül bir aort yırtılması (diseksiyon) ile karşı karşıya olduğu yüzlerce vakaya şahit olursunuz.
Tıpta teşhisin %80'i tahlillerden veya pahalı MR cihazlarından değil; doğru alınmış bir Anamnezden (Hasta Öyküsü) gelir.
Bunun için acil tıpta OPQRST adı verilen katı bir sorgulama protokolü uygulanır:
- O (Onset): Bu ağrı tam olarak ne zaman ve nasıl başladı? Dinlenirken mi, hareket halindeyken mi?
- P (Provocation): Ağrıyı artıran veya hafifleten bir pozisyon var mı?
- Q (Quality): Ağrının karakteri nasıl? Bıçak saplanır gibi mi, mengenede sıkıştırılır gibi mi, yanma hissi mi?
- R (Radiation): Ağrı bir yere yayılıyor mu? Sol kola mı, çeneye mi, sırta mı?
- S (Severity): 1 ile 10 arasında bir puan versen kaç dersin?
- T (Time): Ağrı sürekli mi var, yoksa dalgalar halinde gelip gidiyor mu?
Bu sorular, hastanın panik dolu sis perdesini aralar ve hekimi altta yatan gerçek biyolojik arızaya götürür.
Peki, yazılım dünyasında "Gereksinim Analizi" (Requirement Gathering) toplantılarına oturduğumuzda ne yapıyoruz?
"Uygulama Çalışmıyor" Krizinin Anatomisi
Yazılım projelerinde müşteriden veya iş biriminden gelen talepler, acil servisteki hastanın çığlıklarından farksızdır.
Müşteri veya ürün yöneticisi toplantı odasına hışımla girer:
"Kullanıcılar sisteme giriş yapamıyor, her şey çöktü!"
Veya daha tehlikelisi, doğrudan kendi hatalı teşhisini dayatır:
"Ana sayfadaki giriş butonunu kırmızı yapmamız ve ekranın tam ortasına devasa bir açılır pencere (pop-up) koymamız lazım. İki güne yetiştirin!"
Deneyimsiz bir yazılımcı veya ajans hemen başını sallar: "Tamam, butonu kırmızı yapıp ortalayalım, pop-up ekleyelim." İki gün sonra özellik canlıya alınır; ama dönüşüm oranları (conversion rate) yerlerde sürünmeye devam eder. Müşteri daha da öfkelenir: "Yaptınız ama yine çalışmıyor!"
Çünkü siz hastanın ağrısının nereden kaynaklandığını sormadınız; hastanın panikle önerdiği saçma sapan tedaviyi uyguladınız.
Eğer masaya bir mühendis gibi otursaydınız, tıptaki OPQRST protokolünü yazılıma uyarlardınız:
- Onset (Başlangıç): "Kullanıcıların giriş yapamadığını tam olarak ne zaman fark ettiniz? Son deployment'tan sonra mı, yoksa yeni reklam kampanyası başladıktan sonra mı?"
- Provocation (Tetikleyici): "Bu sorun sadece Safari mobilde mi yaşanıyor, yoksa Chrome masaüstünde de var mı? Wi-Fi kullanıcılarında mı, hücresel veride mi?"
- Quality (Hatanın Karakteri): "Kullanıcı butona bastığında sayfa sonsuz bir yükleme döngüsüne mi giriyor, yoksa anında 'Hatalı Şifre' uyarısı mı veriyor?"
- Radiation (Etki Alanı): "Bu sorun sadece bireysel kullanıcıları mı etkiliyor, kurumsal hesapları da kapsıyor mu? Ödeme adımı da bu durumdan etkilendi mi?"
- Severity (Şiddet): "Giriş yapamayanların oranı toplam trafiğin yüzde kaçı? Şirketin cirosuna anlık etkisi ne?"
Bu soruları sormaya başladığınız an, o devasa "Uygulama çöktü" efsanesi bir anda buharlaşır. Gerçek teşhis ortaya çıkar: Meğer son pazarlama kampanyasında Instagram'dan gelen kullanıcıların tarayıcısı (in-app browser) çerezleri (cookie) engelliyordur ve oturum açılamıyordur.
Çözüm kırmızı buton veya pop-up değildir; iki satırlık bir authentication yönlendirmesidir.
Yanlış Anamnez Projeyi Batırır
Tıpta yanlış hasta öyküsü almak hastayı mezara götürür. Apandisiti olan birine gaz sancısı teşhisi koyup evine gönderirseniz, o apandisit birkaç saat sonra patlar ve hasta peritonitten hayatını kaybeder.
Yazılımda da yanlış gereksinim analizi, şirketleri iflasa sürükler.
Müşterinin "Bizim çok gelişmiş bir raporlama modülüne ihtiyacımız var" sözünü sorgulamadan kabul edip; ekibi 4 ay boyunca devasa filtreleme sistemleri, dinamik grafikler ve PDF dışa aktarma modülleri geliştirmeye kilitlersiniz. Dört ayın ve yüz binlerce liranın sonunda o modül yayına girer.
Ve ne olur biliyor musunuz? Müşteri o ekranda sadece sağ üstteki "Excel Olarak İndir" butonuna basar. Geri kalan hiçbir filtreyi, hiçbir karmaşık grafiği hayatında bir kez bile kullanmaz. Çünkü onun asıl semptomu "Ben veriyi muhasebecime ham olarak göndermek istiyorum" ihtiyacıdır. Siz doğru soruları sormadığınız için, 4 ay boyunca boş bir fanteziyi ameliyat etmişsinizdir.
Dinlemek Bir Mühendislik Refleksidir
İyi bir mühendis olmak, sadece kod sözdizimini (syntax) ezbere bilmek veya en yeni framework'leri kullanmak değildir. İyi bir mühendislik, karşınızdaki insanın karmaşık, çelişkili ve panik dolu ifadelerinin arkasındaki gerçek patolojiyi çekip çıkarabilme sanatıdır.
Müşteriniz ya da yöneticiniz size bir problemle geldiğinde; klavyeye sarılmadan önce arkanıza yaslanın.
Onun heyecanını ve korkusunu sakinleştirin.
Reçeteyi onun yazmasına izin vermeyin.
Doğru soruları sorun. Belirtilerin kökenine inin.
Çünkü doğru konulmuş bir teşhis, yazılacak binlerce satır gereksiz koddan çok daha kıymetlidir.