Siyahını bitirmək məcburiyyətində deyilsən
Yeni servis yazan, production problemi araşdıran və arxitektura qərarı verən mühəndisin eyni kitaba ehtiyacı olmaya bilər. Aşağıdakı seçimlər həmin fərqi nəzərə alır. Kitabların hamısını ardıcıl oxumaq əvəzinə, hazırda verdiyin qərarı seç.
Bir fəsil üçün sadə ritm kifayətdir: oxu, öz sözlərinlə izah et, kiçik nümunə yaz. Qeydin sonunda “bu yanaşmanı hansı halda seçməzdim?” sualına da cavab ver. Beləliklə, kitabdan yalnız qaydanı deyil, onun sərhədini də götürürsən.
İndiki ehtiyacını seç
Bir value object seç və equals/hashCode müqaviləsini test et.
Kitab haqqında oxuEffective Java - gündəlik Java qərarları
Joshua Bloch · 3-cü nəşr. Java sintaksisini bilirsənsə və API-lərinin daha etibarlı olmasını istəyirsənsə, buradan başla. Obyekt yaratma, bərabərlik, generics, enum və metod müqavilələri haqqında bölmələr gündəlik code review üçün yaxşı materialdır.
Bunu ilk proqramlaşdırma dərsliyi kimi seçməzdim. Kiçik Java layihəsi yazmış olmaq nümunələrin hansı problemi həll etdiyini görməyə kömək edir. Yeni JDK xüsusiyyətlərini ayrıca rəsmi sənədlə tutuşdur: kitabın nəşr tarixi dilin son versiyası demək deyil.
Praktika: layihəndə bir mutable DTO və bir value object seç. Hansının dəyişməsi normaldır, hansının bərabərliyi dəyərə əsaslanmalıdır? İkinci obyekt üçün equals/hashCode testlərini yaz və onu map açarı kimi yoxla.
Java Concurrency in Practice - paralel kodun düzgünlüyü
Brian Goetz və həmmüəlliflər. Ortaq vəziyyət, görünürlük, atomiklik və lock qaydalarını anlamaq üçün oxu. Problemi “eyni anda iki thread işləyir” səviyyəsindən çıxarıb hansı invariantın qorunmalı olduğunu ifadə etməyə kömək edir.
Kitab müasir virtual thread API-ləri üçün bələdçi deyil. Əvvəl əsas düzgünlük modelini qur, sonra istifadə etdiyin JDK-nın aktual concurrency sənədlərinə keç.
Praktika: qalıq sayı 1 olan məhsulu iki paralel sorğu ilə al. Əvvəl təhlükəli read–check–write yolunu göstər, sonra qalıq mənfiyə düşməsin deyə əməliyyatı atomik et. Tək uğurlu test nəticəsini sübut sayma; yarışın yaranmasını koordinasiyalı testlə təmin et.
Designing Data-Intensive Applications - məlumatla bağlı qərarlar
Martin Kleppmannın kitabı; 2-ci nəşrin həmmüəllifi Chris Riccomini-dir. Replikasiya, məlumat modelləri və emal üsullarının fərqli məqsədlərə necə xidmət etdiyini anlamaq üçün yaxşı seçimdir. Öz bazanı və ya mesaj sistemini seçərkən terminlərin arxasındakı mübadilələri soruşmağa vadar edir.
SQL və sadə bir backend xidməti ilə təcrübən olsa, mövzuları daha rahat əlaqələndirərsən. Bir həftədə bütün kitabı bitirməyə çalışma; layihəndəki bir qərara uyğun bölmə seç.
Praktika: sifariş statusunu replika üzərindən oxuduğunu düşün. Yazıdan dərhal sonra köhnə nəticə gəlsə, UI nə göstərəcək? Primary-dən oxuma, versiya yoxlaması və qısa gecikməni qəbul etmə variantlarını bir səhifədə müqayisə et.
Release It! - servisin nasazlıq altında davranışı
Michael T. Nygard · 2-ci nəşr. Funksional testlərdən keçən servisin niyə production-da çökə bildiyini araşdırmaq üçün seç. Asılılıqların yavaşıması, məhdud resurslar və nasazlığın yayılması haqqında düşünməyi öyrədir.
Artıq HTTP və verilənlər bazası ilə işləyən kiçik bir servisin olması faydalıdır. Kitabdakı pattern adlarını eyni anda layihəyə əlavə etmək əvəzinə, bir nasazlıq ssenarisi seç.
Praktika: downstream cavabını 100 ms-dən 5 saniyəyə qaldır. Aktiv sorğuların, connection pool-un və p95-in necə dəyişdiyini ölç. Timeout əlavə etdikdən sonra istifadəçinin aldığı nəticəni də yoxla; serverin tez cavab verməsi təkbaşına biznes uğuru deyil.
A Philosophy of Software Design - sadə interfeyslər
John Ousterhout. Bir dəyişiklik üçün çox fayla toxunursansa, obyektlərin məsuliyyətini izah etmək çətindirsə və interface-lər daxili detalları çölə daşıyırsa, bu kitabı seç. Mürəkkəbliyin harda toplandığını görmək və modul sərhədlərini yenidən düşünmək üçün oxu.
Praktika: konfiqurasiyası çağıran kodlara səpələnmiş bir modul seç. Çöldən bilinməli olan minimum məlumatı yaz. Sonra interfeysi sadələşdir və çağıran kodun nə qədər qərar verməli olduğunu əvvəlki versiya ilə müqayisə et.
Məqsəd yalnız sətir sayını azaltmaq deyil. Daha az kodun içində daha çox gizli şərt varsa, sadələşmə baş verməyib.
Fundamentals of Software Architecture - seçimlərin dili
Mark Richards və Neal Ford. Arxitektura üslubları, keyfiyyət tələbləri və qərarların nəticələrini komanda ilə müzakirə etmək üçün oxu. Sistem artıq bir neçə moduldan ibarətdirsə və “niyə bu sərhəd?” sualı yaranırsa, daha çox fayda görəcəksən.
Praktika: modul monolit və mikroservis variantları üçün bir ADR yaz. Komandanın ölçüsünü, yerləşdirmə tezliyini, məlumat sərhədlərini və əməliyyat xərcini göstər. Yalnız üstünlükləri deyil, seçdiyin variantın yaratdığı əlavə işi də qeyd et.
Kitab seçiminin yaxşı nəticəsi oxunan səhifə sayı deyil: əvvəl izah edə bilmədiyin bir qərarı indi nümunə və səbəblə müdafiə edə bilirsənsə, oxu işə yarayıb.
