Dün sabah, daha doğrusu perşembe akşamı servis elemanımız şöyle bir mesaj göndermiş.
“Son yaptığımız güncellemenin hatayı düzelttiğinden emin olabilir miyiz?”
Sorunun biraz anlaşılır olabilmesi hikayenin biraz daha başına gideyim.
Çarşamba günü müşteride bir sorun çıktı diye beni aradılar. Müşterideki makineye bağlandım ve servis elemanının yardımıyla sorunu incelemeye başladım. Sistem ürünlerle eğitildikten sonra eğitimde kullanılan ürünler beklenen sonuçları vermiyordu. Görüntü işlemeci arkadaş da ürünler için yanlış parametrelerin kullanıldığını, eğitim sonrası parametrelerin bunlar olmadığını söylemişti. Makineye bağlandıktan sonra üretim hızının yüksek olduğunu gördüm ve sistem üzerindeki yükğ azaltmak için bir iki parametreyi değiştirdim. Bu değişikliklerden sonra ürün görüntülerinin kaybolduğunu gördük. Kayıtlara bakınca görüntü işleme programıyla haberleşmede bir sorun olduğunu gördüm. Haberleşme fiziksel olarak doğru çalışıyordu ama sunucu programındaki bir hata verilerin programa gelişini engelliyordu. Bunun üzerine bu versiyondan sonra bu yönde bir hata ayıklaması yapılmış mı diye kontrol ettim ve bu modüllerde bazı iyileştirmelerin yapılmış olduğunu gördüm. Servis elemanına güncelleme yapıp tekrar test etmeyi teklif ettim ve bunu ekiple de konuşacağımı söyledim. O akşam güncellemeden önce yaptığımız ilk testler üretim hızında olmadığından bize pek doğru bilgiler vermedi ne yazık ki.
Ertesi gün ekiple yaptığım görüşmeden sonra güncellemeye karar verdik. Perşembe öğleden sonra güncelleme yapıldı ve tekrar sisteme erişip durumu kontrol ettim. İlk başta görüntü yine yoktu ama bu sefer bir uyarı mesajı sayesinde sorunun bu sefer çok yavaş üretim nedeniyle parametrelerin uyumsuzluğunda yattığını buldum. Parametreleri düzelttikten sonra görüntüler geri geldi ve bir gün önceki sorunlar da artık gözlenmiyordu. Şimdilik.
İşte yukarıdaki mesaj bu olaylar yaşandıktan sonra gönderilmişti. Mesajın devamında ise şöyle şeyler de vardı.
“Makine operatörleri buna benzer sorunların daha önce de yaşandığını söylemişti ama ben o kadar zaman oradaydık ve hiç böyle bir şey gözlemlemedim. Ta ki parametreler değiştirilene kadar. Ayrıca bence yaptığımız tek şey de hatayı bulmadan güncelleme yükleyip işi şansa bırakmak oldu.”
Oturup cevap yazmaya başladım. Öncelikle hatanın giderildiğinden emin olmak kısmına değindim. Sistemlerde hatanın tanımı kişiden kişiye değişir. Kullanıcı için ürün görüntüsünün bir kere gelmemesi bir hatadır ama programcı için bu aslında bir hata kümesidir. Yani buna yol açabilecek bir sürü senaryo vardır ama o an yaşanmış olan bu senaryoların sadece birisidir. Dolayısı ile güncelleme büyük ihtimalle bu tek senaryoyu düzeltmiştir ama kullanıcının algıladığı bütün hata senaryolarını düzeltmemiştir. Bu nedenle o hata (aslında aynı şekilde görünen başka bir hata) tekrarlandığında kullanıcı hatanın giderilmediğini, programcı ise başka bir senaryonun daha tespit edildiğini düşünecektir. Bu anlaşma sorunu ne yazık ki tamamen giderilemez, çünkü iki taraf da aynı şeyi farklı teorilerle yorumlar. Bu da normaldir. Böyle durumlarda kullanıcılarla konuşurken bunların aynı görünümde farklı senaryolar olduğunu kısaca anlatmaya çalışırım hep, ama çok da uzatmamak lazım. Bütün teoriyi açıklamak çok karmaşık olabilir.
Peki aynı görünümdeki hataların aslında farklı hatalar olduğu konusunda hemfikir olmadığımızı varsayarsak, bu hatanın giderilip giderilmediğinden nasıl emin olacağız? Yaptığımız oldukça karmaşık sistemlerde olası bütün yolları test etme şansımız olmadığından (Şans yok çünkü olası yolların sayısı çoğunlukla evrendeki tanecik sayısından fazla oluyor) olası yöntemlerin biri bir araç kullanarak mantıksal olarak bu hatanın ortaya çıkamayacağını ispatlamak olabilir. Burada sorun yine oldukça fazla yolun ispatlanması oluyor ve bunu yapacak programın da çok uzun süre çalışması gerekecektir. Bunun yerine programcı bunun bir kısmını otomatik araçlarla geri kalanını da kafasında kabaca yapma yolunu seçmekte. Tabii bu da bütün olasılıkları kontrol etmiyor ama başarı oranını yine de genelde yeterince yüksek tutuyor. Yeterince yüksek dediğim bu olasılık belli bir karmaşıklığı aşan sistemlerde asla yüzde yüz olmuyor ama. Yani emin olma şansımız yok.
Servis elemanımıza bu şekilde bir cevap yazdım. Yazdığım cevapta algı sorunlarına hiç değinmedim ama. Bir şey kötü gittiğinde beynimiz tabii ki daha farklı çalışıyor. Parametreler değiştiğinde ortaya çıkan hatanın nedenini parametre değişimi olarak algılarken, aynı parametrelerle güncelleme yapıldığında ortaya çıkmayan hatanın nedenini bir tesadüf olarak görebiliyor. Sonuçta iki olay da sadece bir kere ortaya çıktığından kendi tecrübelerinin istatistiki değerlendirmesi için aslında yeterince veri yok ama algılarda bu tür farkla da oldukça normaldir.
Teknik olarak bütün bu senaryo elemanın mesajında belirttiği gibi bir tesadüf ürünü olabilir. Yani sistemdeki çok başka bir hatanın bütün bunların nedeni olma ihtimali var. Güncelleme istememin nedeni bir bakıma bu ihtimale karşı düşünülmüş bir hareketti. Bu durumda bu hatayı tahminen daha az hataya sahip yeni versiyonda daha kolay bulup sadece tek bir versiyonda düzeltme yoluna gidecektim. Bu hata hala ortaya çıkmadığından planım şimdilik iyi işlemiş gibi görünüyor.