Bir müşterimiz için özel makineler üretiyoruz. Bu makineler ürünü röntgen ışınlarıyla inceliyor ve ürünün yoğunluk profilini müşterinin sistemine aktarıyor. Sonra bu profil yardımıyla müşteri ürünü doğru büyüklüklerde dilimliyor.
Ana hatlarıyla oldukça basit bir uygulama gibi görünüyor ama tabii ki arka planda bir sürü işlem yürütülmekte. Bu yazıda bu işlemlerin sadece birisinden bahsetmek istiyorum.
Müşterimiz bazı durumlarda yoğunluk profili bilgilerini sıfırlamak istediğini söyledi. Biz de bu isteği yerine getirebileceğimizi söyledik. Müşteri bu işlemin başarılı olup olmadığını bilmek istediğini de ekledi. “Sorun değil, aynı haberleşme kanalından işlemin sonucunu bir mesajla iletebiliriz” dedik. Anlamadığımız bir nedenden ötürü müşteri bunu istemedi. Bunun yerine “sıfırlama başarılı olduysa makinenin bantları hareket etsin” dedi. Kullanıcılar makinenin dönen bantlarını görünce işlemin başarıyla yürütüldüğünü anlayacaklardı. Bizim için oldukça garip bir istekti. Normalde haberleşmenin cevabı aynı kanaldan iletilirdi. Alarm türü durumlarda bu cevap makinenin üzerindeki lambalarla ya da siren türü sinyallerle de desteklenirdi ama bantların hareket ettirilmesi ilk kez duyduğumuz bir istekti. Anlaşılan projeyi yapan elemanlar da müşteriyle bunu tartışmaya (belki de daha fazla tartışmaya) niyetli değillerdi ve bu isteğin yerine getirilmesine karar verdiler.
Bu çözüm tabii ki yeni problemlere gebeydi. Üretim bandının zaten kendi görevi vardır. Ürünleri taşımak. Bunu bir de olağan şeklin dışında kullanıcı arabirimi olarak kullanmak iki sistemi de birbiriyle senkronize etmek demekti. Tabii ki bu sorunları hemen göremedik. Örneğin, bandın hareket etmesi, üzerinde ne varsa onun da hareket etmesi demektir. Yani bilgilerin sıfırlanması isteği geldiğinde eğer bant üzerinde bir ürün vardıysa, o ürün dilimleme birimine kadar iletiliyordu fakat dilimleme biriminin bandı hareket etmediğinden ürün orada duruyordu. İlk bakışta sorun yok gibi görünse de hareket etmeye devam eden üretim bandı ürüne sürtündüğünden ürünü deforme ediyordu ve dolayısıyla dilimleme birimine gönderilen son profil bilgileri de geçersiz oluyordu. Bu problem tespit edildiğinde de müşteri geri adım atmadı ve tabii ki biz böyle bir durumda ürünün bir sonraki banda iletilmesini engelleyecek önlemler almak zorunda kaldık.
Bundan başka bir sorun daha vardı. Bantlar ne zamana kadar hareket ettirilecekti? Burada da ya belli bür süre sonra kontrol birimi bantları kendiliğinden durduracaktı, ya da kullanıcı bantların hareketini gördükten sonra başka bir komutla durduracaktı. Madem bantların hareketi kullanıcının görmesi içindi o zaman kullanıcı bantları durdursun dendi. Bunun için de başka bir mesaj tanımlandı. Mesajlar aslında çok masraflı şeyler değil ama isimleri düşündüğümüzden daha önemli. Sadece makineler arasında değil programcılar arasında da iyi bir iletişim için uygun isimler seçilmeli. Burada seçilen isimler de ilginçti. Sıfırlama için “sıfırlamayı başlat” şeklinde bir isim seçildi. Normalde bu tür bir işlem için seçilecek bir isim değil. Aslında “sıfırla” gibi bir isim daha uygun. Bir terslik olduğu daha buradan belliydi. Diğer mesaj da “sıfırlamayı bitir” ismini aldı. Bu da ters bir isim çünkü bu komut gönderildiğinde aslında sıfırlama işlemi çoktan bitmiş olmalı (Bitmemiş olma ihtimaline girmek istemiyorum bile). Bu komutun doğru adı “bandı durdur” olabilirdi ama o zaman da bu komutun her zaman (normal üretim sırasında da) verilebileceği izlenimi oluşabilirdi ki bu da doğru değil. Her ne kadar felsefeyi biraz sevsek de bu isim konusunu çok uzun tartışmak istemediğimizden yukarıdaki “başlat” ve “bitir” komutlarını aldık ve mesajları programladık.
Yıllar sonra müşteriden yeni bir istek geldi. Kendi kullanıcı arabirimini programlamak istiyordu. Yeni sistem eski işlevleri yerine getirebilmeliydi. Mesajları ve haberleşme sistemini tanımlamaya başladık ve karşımıza yine sıfırlama komutu çıktı. Müşterinin kullanıcı arabirimini programlayan elemanla bunu konuştuk ve bir cevap mesajıyla bunu kolayca halledebileceğimizi söyledik. O da bunu mantıklı buldu ve müşteriyle konuşacağını söyledi. Ne yazık ki müşteriden yıllar önce aldığımız cevabın aynısı geldi. Bantlar hareket etmeli! Heralde yıllarca kullana kullana kullanıcılar bu sinyale o kadar alıştı ki yeni ve daha kolay bir şey istemiyorlardı ya da yeni şeyin eğitimi çok daha pahalı olacaktı. Detaylarını bilemiyorum ama şu anda “sıfırlamayı başlat” ve “sıfırlamayı bitir” diye iki mesaj programlıyorum.