Problem Java-da deyildi
Developer olaraq problem görəndə ilk etdiyimiz şey çox vaxt öz kodumuza baxmaqdır. Mən də belə edirəm. Amma bəzi bug-lar var ki, Java kodunu nə qədər oxusan da cavabı orada tapa bilmirsən.
Database connection, Docker image, environment variable, character set, network timeout və ya başqa servisin qaytardığı response saatlarla Java exception-u kimi görünə bilər. Əslində isə tətbiqin özündə heç bir problem olmur.
Stacktrace hər şeyi demir
Bir exception görmək səbəbi tapmaq demək deyil. Stacktrace mənə problemin harada üzə çıxdığını göstərir. Səbəbi isə ayrıca tapmalıyam.
Məsələn, database-dən gələn problem application layer-də exception kimi görünə bilər. Connection pool-dakı problem repository çağırışında üzə çıxa bilər. Network problemi isə FeignClient-in verdiyi exception-a çevrilə bilər.
Buna görə son vaxtlar debugging zamanı daha çox “bu xəta harada yarandı?” yox, “bu xəta sistemin hansı qatından keçərək bura gəldi?” sualını verməyə çalışıram.
Debugging də engineering-dir
Məncə yaxşı developer olmaq yalnız yeni feature yazmaqla ölçülmür. Mövcud sistemdə nə baş verdiyini sakit şəkildə araşdırmaq da həmin işin böyük hissəsidir.
Bəzən ən yaxşı həll daha çox kod yazmaq deyil. Sadəcə problemin harada olmadığını sübut etməkdir.