Bank mühiti mənə dəqiqliyin nə qədər vacib olduğunu öyrətdi
Bank mühitində işləyəndə bir şey çox tez aydın olur:
Burada “təxminən düzgün” kifayət etmir.
Yanlış məbləğ, yanlış status, yanlış tarix və ya səhv keçid sadəcə “kiçik bug” olaraq qalmır.
Onun real nəticəsi ola bilər.
Bu mühitdə öyrəndiyim ən vacib şey texnologiya seçimi deyil.
Əsas öyrəndiyim budur:
Proqramın düzgün görünməsi ilə həqiqətən düzgün işləməsi eyni şey deyil.

Dəqiqlik əvvəlcə qaydalardan başlayır
Bankda yeni tələb gələndə ilk sual “Bunu necə kodlaşdırım?” olmur.
Əvvəl bunları aydınlaşdırmaq lazımdır:
- Bu əməliyyat nəyi dəyişir?
- Hansı vəziyyətdən hansı vəziyyətə keçid baş verir?
- Bu əməliyyatı kim edə bilər?
- Nəyi dəyişmək olmaz?
- Səhv baş verəndə sistem necə davranmalıdır?
Çünki qayda aydın deyilsə, kod nə qədər səliqəli yazılsa da, nəticə etibarlı olmayacaq.
İndi bankdan kənar layihələrdə də eyni yerdən başlayıram:
Əvvəl prosesi və sərhədləri aydınlaşdırıram. Sonra kod yazıram.
“İşləyir” demək aşağı standartdır
Tutorial-da və ya demo zamanı sistem işləyə bilər.
Amma real mühitdə “işləyir” demək üçün bundan daha çox şey lazımdır.
Məsələn:
- Eyni əməliyyat iki dəfə gəlsə, nə baş verəcək?
- Yarımçıq cavab gəlsə, sistem necə davranacaq?
- Köhnə məlumat yeni qaydalara uyğun gəlmirsə, nə olacaq?
- Hesabatda görünən rəqəm əməliyyatda saxlanılan rəqəmlə eynidirmi?
Bu suallar məni yavaşlatmır.
Əksinə, sonradan daha böyük problemlərin qarşısını alır.

Səssiz səhv ən təhlükəli səhvdir
Bəzi xətalar dərhal görünür.
Ekran qırmızı olur, exception yaranır, proses dayanır.
Daha təhlükəli vəziyyət isə başqadır:
Sistem heç bir xəta göstərmir, amma yanlış məlumat yazır.
Yanlış status.
Yanlış məbləğ.
Yanlış əlaqə.
Sonra isə hamı həmin məlumatın doğru olduğuna inanır.
Bank mühiti bunu daha kəskin göstərir.
Amma eyni risk rezervasiyada, ödənişdə, anbarda və sifariş axınında da mövcuddur.
Ona görə mən yalnız:
“Kod işlədimi?”
sualını vermirəm.
Həm də soruşuram:
“Bu əməliyyatdan sonra sistemin bildiyi məlumat hələ də doğrudurmu?”
Artıq işləyən prosesə toxunmaq tamam başqa məsələdir
Yeni sistem yazmaq bir şeydir.
İnsanların hər gün güvəndiyi işlək prosesi dəyişmək isə tamam başqa şeydir.
Bankda bunu daha aydın hiss edirəm.
Bir dəyişiklik yalnız yeni tələbi yerinə yetirməməlidir.
Mövcud düzgün davranışı da pozmamalıdır.
Ona görə dəyişiklik etməzdən əvvəl bunlara baxıram:
- Hazırda proses necə işləyir?
- Bu dəyişiklik hansı axınlara təsir edir?
- Mövcud məlumatlarla nə olacaq?
- Geri qaytarma və ya rollback imkanı varmı?
Bu, qorxu deyil.
Bu, məsuliyyətdir.

Bu vərdiş yalnız banka aid deyil
Bəzən bank təcrübəsini çox dar bir sahə kimi görürlər.
Mənə görə isə oradan qazandığım əsas vərdiş ümumi proqram mühəndisliyinə aiddir:
- Qaydanı əvvəlcədən aydınlaşdır.
- Sərhəd hallarını nəzərə al.
- Səssiz səhvlərə xüsusi diqqət yetir.
- İşləyən prosesi ehtiyatla dəyiş.
- “Hazırdır” deməzdən əvvəl nəticənin doğru olduğuna əmin ol.
Biznes proqramlarında da eyni yanaşma lazımdır.
Çünki müştəri, pul, status, tarixçə və hesabat olan yerdə “təxminən” bahalı başa gəlir.
Mənim üçün dəqiqlik nə deməkdir?
Dəqiqlik mənim üçün hər şeyi mükəmməl etmək demək deyil.
Dəqiqlik o deməkdir ki:
- Sistem nə edir — aydındır.
- Nəyi qoruyur — aydındır.
- Səhv baş verəndə onu gizlətmir.
- Sabah başqa developer gələndə qaydaları hələ də rahatlıqla başa düşə bilir.
Yəni dəqiqlik yalnız bug olmaması deyil.
Dəqiqlik sistemə güvənə bilməkdir.

Yekun
Bank mühiti mənə bir şeyi daha da möhkəmləndirdi:
Proqramın gözəl görünməsi kifayət deyil. Proqramın düzgün qalması lazımdır.
Bu yanaşma ilə indi bankdan kənar layihələrdə də eyni standartla işləyirəm.
Çünki etibar, düzgün məlumat və proqnozlaşdırıla bilən davranış yalnız bank üçün vacib deyil.
Bunlar işləyən hər ciddi sistemin əsas tələbləridir.