Ələddin Biyabangərd
YazılarProqram mühəndisliyi

Bank mühiti mənə dəqiqliyin nə qədər vacib olduğunu öyrətdi

Müəllif:Ələddin BiyabangərdDərc edilib:6 dəq oxunuş

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.

“Təxminən düzgün” və “Dəqiq düzgün” yanaşmalarının müqayisəsi — riskli qeyri-müəyyənlikə qarşı aydın qaydalar və güvən.

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.

Demo happy path-dən production yoxlamalarına keçid: təkrar istək, şəbəkə qırılması, köhnə data və hesabat uyğunluğu.

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.

İşləyən sistemə toxunmazdan əvvəl dörd addım: mövcud axın, təsir sahəsi, data keçidi və rollback.

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.

Dəqiqlik vərdişləri: qaydanı əvvəl aydınlaşdır, sərhəd hallarını nəzərə al, səssiz səhvdən qaç, rollback saxla, güvənilən sistem qur.

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.