Acil İşler Diyarında Bir Garip Yazılımcı
Her iş acil mi? Şu işe hemen bakılması mı lazım? Müşteri mi bekliyor? Elinizdeki işleri bırakıp hemen başka bir işe mi bakmanız lazım? Telefonlar susmuyor mu, e-postalar mı yağıyor? Her şey acilse çözüm ne? Yalnız değilsin ey garip yazılımcı! Hele bir soluklan da şu yazıyı bir oku. Derdine şifa olmasa da yaralarına merhem olur.
Önceliklendirme yapılmalıdır. Önceliklendirme yapılırken risk değerlendirmesi yapılmalıdır. Hangi hata sistemi nasıl etkiliyor, hatadan hangi kullanıcılar etkileniyor, hata nedeniyle ne kadar veri kaybı ihmal edilebilir, yeni geliştirilecek bir özellik gecikse ne kaybederiz, her zaman erişilebilir bir sistem mi daha önemli yoksa olabildiğince güvenli bir sistem mi ... gibi soruların cevabı herkese göre değişir. Sizin için neyin önemli olduğuna ekipçe karar verin. Yazılım ürününüzün katma değerine göre değerlendirme yapmaya çalışın. Önem derecesine ait etiketler geliştirin ve koyun. Örneğin kırmızı etiket hemen çözülmesi gereken bir hatayı temsil edebilir. Ya da 3. derece bir sorun bir hafta içerisinde çözülebilir, B kategorisine ait bir özellik 1 ay içerisinde geliştirilebilir gibi.
Ölçebildiğiniz her şeyi ölçün. Uygulamanıza gelen kullanıcı trafiğini, kullanıcıların hangi özellikleri ne kadar kullandıklarını, işlemci, bellek ve ağ gibi donanım kaynağı kullanımlarını ölçün ve izleyin. Anormal durumlarda sizi uyaracak alarm sistemleri kurun. Bu alarm sistemleri ilgili kişilere otomatik olarak bildirim göndersin.
Acil durum yönetim planınız (incident management) olsun. Nöbet sistemi geliştirin, alarm sisteminiz daima aktif olsun. Bu hafta gece oluşabilecek önemli bir duruma kim ya da kimler müdahale edecek belli olsun. Yedek kişiler belirleyin, asıl nöbetçilere ulaşılamazsa hemen yedek kişiler duruma müdahale etsin.
Duyuru sisteminiz olsun. Durumdan etkilenen kullanıcılarınızı bilgilendirin (SMS, e-posta, uygulama içi duyuru ekranı, firma telefonunu arayan kullanıcılar için telesekreter mesajı). Kullanıcıların aynı durum için sizin iletişim kanallarınızı gereksiz yere meşgul etmelerinin önüne geçin. Firma içi ekipler arası iletişimi de düzenleyin. Acil durumlarda firmadaki diğer ekiplerin yazılım ekibini gereksiz yere meşgul etmelerini engelleyin.
Yapılacak tüm işleri toplu olarak bir yerde toplayın. Bu gün ya da bu hafta hangi işleri bitireceğinizi kararlaştırın ve diğer konulara bakmamaya çalışın. Bir işin yapılmasının ne kadar süreceği hakkında iyimser tahminlerde bulunmayın. Bu konuda kötümser olun. Tahmininizi pi sayısı ile çarpın. Her zaman bir esneklik payınız olsun. Her şey yolunda gitse bile ülke ekonomisindeki dalgalanmalar, mevzuattaki değişiklikler, personel mazeretleri gibi kontrolünüzde olmayan bir çok faktör olacak. Kullanıcılara teslim tarihi ile ilgili söz vermemeye çalışın. Kullanıcıların istediği her şeye evet demeyin. Büyük değişiklik gerektirecek isteklere ekiple görüşmeden cevap vermeyin, atladığınız bir detay çıkabilir.
Kodlarınızı düzenleyin. Kalitesiz kod acil işler doğurur. Aynı kod parçasını üzerinde hep aynı personel çalışmasın, yazılım ekibindekiler birbirlerinin yerini tutabilsinler. Toplantılara zaman ayırın, bu toplantılarda ekip tecrübelerini paylaşsın, aynı hata ile başkaları zaman kaybetmesin, dokümantasyonunuz güncel olsun. Geliştirme ortamı ve canlı ortam aynı özelliklerde olmalıdır. Canlı veritabanı geliştirme için kullanılmamalıdır. Otomatik testler olmalıdır, güncelleme atılmadan önce bu testler çalıştırılmalıdır.
Can kurtaran simidiniz olan yedekleme mekanizmasını işler halde tutun. Yedek veri tabanı, yedek kodlar, yedek sunucular, yedek IP adresleri, yedek cihazlar varlıklarıyla sizi rahatlatabilirler. Ama bu yedeklerin nasıl kullanılacağını bilmiyorsanız ya da zamanında kullanamazsanız sizin için bir değeri olmaz. Bu yüzden en az ayda bir kere, tüm sistemi yedeklerden hizmet verecek şekilde ayarlayıp ekibi yedekler konusunda canlı tutun.
Hata takip, proje takip araçlarını verimli bir şekilde kullanın. Teknik destek, satış ve yazılım ekipleri arasında sağlıklı ilişkiler oluşturmaya çalışın, bunun için ara sıra odanızdan çıkın ve diğer ekiplerle konuşun.
Acil olmayan işler görürsünüz inşallah :)
Önceliklendirme yapılmalıdır. Önceliklendirme yapılırken risk değerlendirmesi yapılmalıdır. Hangi hata sistemi nasıl etkiliyor, hatadan hangi kullanıcılar etkileniyor, hata nedeniyle ne kadar veri kaybı ihmal edilebilir, yeni geliştirilecek bir özellik gecikse ne kaybederiz, her zaman erişilebilir bir sistem mi daha önemli yoksa olabildiğince güvenli bir sistem mi ... gibi soruların cevabı herkese göre değişir. Sizin için neyin önemli olduğuna ekipçe karar verin. Yazılım ürününüzün katma değerine göre değerlendirme yapmaya çalışın. Önem derecesine ait etiketler geliştirin ve koyun. Örneğin kırmızı etiket hemen çözülmesi gereken bir hatayı temsil edebilir. Ya da 3. derece bir sorun bir hafta içerisinde çözülebilir, B kategorisine ait bir özellik 1 ay içerisinde geliştirilebilir gibi.
Ölçebildiğiniz her şeyi ölçün. Uygulamanıza gelen kullanıcı trafiğini, kullanıcıların hangi özellikleri ne kadar kullandıklarını, işlemci, bellek ve ağ gibi donanım kaynağı kullanımlarını ölçün ve izleyin. Anormal durumlarda sizi uyaracak alarm sistemleri kurun. Bu alarm sistemleri ilgili kişilere otomatik olarak bildirim göndersin.
Acil durum yönetim planınız (incident management) olsun. Nöbet sistemi geliştirin, alarm sisteminiz daima aktif olsun. Bu hafta gece oluşabilecek önemli bir duruma kim ya da kimler müdahale edecek belli olsun. Yedek kişiler belirleyin, asıl nöbetçilere ulaşılamazsa hemen yedek kişiler duruma müdahale etsin.
Duyuru sisteminiz olsun. Durumdan etkilenen kullanıcılarınızı bilgilendirin (SMS, e-posta, uygulama içi duyuru ekranı, firma telefonunu arayan kullanıcılar için telesekreter mesajı). Kullanıcıların aynı durum için sizin iletişim kanallarınızı gereksiz yere meşgul etmelerinin önüne geçin. Firma içi ekipler arası iletişimi de düzenleyin. Acil durumlarda firmadaki diğer ekiplerin yazılım ekibini gereksiz yere meşgul etmelerini engelleyin.
Yapılacak tüm işleri toplu olarak bir yerde toplayın. Bu gün ya da bu hafta hangi işleri bitireceğinizi kararlaştırın ve diğer konulara bakmamaya çalışın. Bir işin yapılmasının ne kadar süreceği hakkında iyimser tahminlerde bulunmayın. Bu konuda kötümser olun. Tahmininizi pi sayısı ile çarpın. Her zaman bir esneklik payınız olsun. Her şey yolunda gitse bile ülke ekonomisindeki dalgalanmalar, mevzuattaki değişiklikler, personel mazeretleri gibi kontrolünüzde olmayan bir çok faktör olacak. Kullanıcılara teslim tarihi ile ilgili söz vermemeye çalışın. Kullanıcıların istediği her şeye evet demeyin. Büyük değişiklik gerektirecek isteklere ekiple görüşmeden cevap vermeyin, atladığınız bir detay çıkabilir.
Kodlarınızı düzenleyin. Kalitesiz kod acil işler doğurur. Aynı kod parçasını üzerinde hep aynı personel çalışmasın, yazılım ekibindekiler birbirlerinin yerini tutabilsinler. Toplantılara zaman ayırın, bu toplantılarda ekip tecrübelerini paylaşsın, aynı hata ile başkaları zaman kaybetmesin, dokümantasyonunuz güncel olsun. Geliştirme ortamı ve canlı ortam aynı özelliklerde olmalıdır. Canlı veritabanı geliştirme için kullanılmamalıdır. Otomatik testler olmalıdır, güncelleme atılmadan önce bu testler çalıştırılmalıdır.
Can kurtaran simidiniz olan yedekleme mekanizmasını işler halde tutun. Yedek veri tabanı, yedek kodlar, yedek sunucular, yedek IP adresleri, yedek cihazlar varlıklarıyla sizi rahatlatabilirler. Ama bu yedeklerin nasıl kullanılacağını bilmiyorsanız ya da zamanında kullanamazsanız sizin için bir değeri olmaz. Bu yüzden en az ayda bir kere, tüm sistemi yedeklerden hizmet verecek şekilde ayarlayıp ekibi yedekler konusunda canlı tutun.
Hata takip, proje takip araçlarını verimli bir şekilde kullanın. Teknik destek, satış ve yazılım ekipleri arasında sağlıklı ilişkiler oluşturmaya çalışın, bunun için ara sıra odanızdan çıkın ve diğer ekiplerle konuşun.
Acil olmayan işler görürsünüz inşallah :)
Yorumlar
Yorum Gönder