A müşterisiyle yıllar önce bir projeye başladığımızda haberleşme için bir protokol tasarlamıştık. Daha doğrusu bana tasarlanmış bir protokol verildi ve bunu programlamam istendi. Utana sıkıla bu protokolü programladım. Utanç verici kısmı tasarımdaki ileri görüş eksikliğiydi ama iş işten geçmişti. Daha sonra bu protokol ile aynı amaçlı başka makineleri B ve C müşterilerine de sattık. Protokol aynıydı ama makinelerde ufak tefek farklar vardı. Bugüne kadar bir sorun olmamıştı.
Bugün C müşterisinin yeni projede diğer müşterilerde olmayan bir özellik istediğini öğrendik. Bu fonksiyon nedeniyle protokolde bir değişiklik yapmamız gerekiyor. Aslında kolay bir değişiklik ve protokolün tasarımı buna izin veriyor.
Bu kadar kolay bir değişikliğe rağmen programcıların konuşmak istediği bazı problemler vardı. İlginç olan bu problemlerin protokoldeki değişikliğin nasıl yapılacağı, daha doğrusu hangi müşterilerle nasıl anlaşılacağı üzerineydi.
Yöntemlerden biri her müşteri için küçük bir konfigürasyon yaparak temelde aynı olan protokolde müşterilere göre ufak tefek değişikliklerle programlamaktı. Bu şekilde müşterilerin hepsiyle anlaşmaya gerek kalmayacaktı ama aynı versiyon için üç konfigürasyon hazırlamamız gerekecekti. Bunun masrafı çok fazla değildi ve en azından sadece bizim tarafımızdan yapılabilecek bir şeydi. Kimseden bir haber beklememize gerek olmayacaktı ama ileride proje bölümü makineleri hazırlarken doğru konfigürasyonu kullanmak zorunda kalacaktı. Dolayısı ile şef bu çözümü istemedi.
Diğer bir yöntem, bu değişiklik isteğini üç müşteriye de sunmak ve hepsinin onayını almak. Bunun kolay ve iyi tarafı bir taşla üç kuş vurmak ama sorunu da açıkça ortada. Üç tane onayın çıkması hemen olmayacaktır ve C müşterisi makinesini haftaya almak istiyor.
Şefin istediği çözüm bu ama programcılar bu noktada epey temkinli. Değişiklik yapılacak kısım protokolde reserved olarak işaretlenmiş blokların birinde. Yani aslında şu an hiç kimse tarafından kullanılmıyor. Sunulan sorun ise şu. Reserved kelimesinin nasıl yorumlanacağı kararlaştırılmamış. Yani müşteri o bloklara hiç mi bakmıyor yoksa orada 0 değerini mi bekliyor bilmiyoruz. Tecrübelerimiz müşterilerin bu gibi durumlarda çok beklenmedik şeyler yapabildiğinizi gösteriyor ve hatta sistemlerin çöktüğü vakaları da biliyoruz. Yani geçmişte hiç kullanılmayan bir alana 0 yerine 1 yazdığımızda müşterinin kendi programının çöktüğü durumlar oldu. Böyle bir durumda müşteri dünyanın değişik yerlerindeki makinelerinde bizim yazılımı güncellerken kendi yazılımını da güncellemek zorunda kalacaktır. Teknik olarak kolay bir olay olmasına rağmen en çok sorunun çıktığı durumlardan biridir bu. Bu tür sistemler güvenlik nedeniyle internet üzerinden güncellenmiyor. O zaman bir servis elemanı ya da müşterinin eğitilmiş bir elemanı bu işi yapmalı ama genelde o kadar iyi elemanlar bulunamıyor ya da o an başka bir yerde oluyorlar. Sistem düzgün test edilmediyse bu hata servis elemanı sahadan ayrıldıktan sonra ortaya çıkabiliyor. Böylece masraflar da katlanıyor.
Sonunda tabii ki şefin istediği çözümü şerh koyarak yapacağız. Asıl merak ettiğim şey yarına kadar bütün müşterilerden onay gelecek mi? Yoksa onay göndermeyenleri bir sonraki güncellemede bir sürpriz mi bekleyecek?
Yarın bu haftanın son iş günü. Ondan sonra da bir daha Noel’e kadar resmi tatil yok. Bu nasıl bir yılsa artık, hepsi hafta sonuna geliyor. Bu uzun hafta sonunu iyi kullanıp yeniden aldığım tripodumla güzel avlara çıkmayı planlıyorum. Umarım bu sırada elimi olduğundan daha fazla sakatlamam.