„Head First. Architektura oprogramowania” czyli przewodnik po myśleniu architektonicznym
Poniższy materiał nie jest artykułem sponsorowanym. Muszę jednak zaznaczyć, że opisywaną książkę otrzymałem za darmo od wydawnictwa Helion w ramach egzemplarza recenzenckiego. Nikt z wydawnictwa Helion nie miał wglądu do treści przygotowanego materiału przed jego publikacją.
Żyjemy w interesujących czasach… w erze wszechobecnej sztucznej inteligencji, która napędza zmiany w branży IT i bardzo mocno wpływa na definicję “zawodu” programisty. Jeszcze kilka lat temu, kiedy algorytmy sztucznej inteligencji, pozostawały tylko i wyłącznie na papierze zakurzonych książek w uniwersyteckich bibliotekach, mało kto zdawał sobie sprawę z nadchodzących szybkim tempem zmian. Doskonale pamiętam, kiedy prawie dekadę temu, poszukiwałem swojego pierwszego programistycznego stażu. Czy jesteś w stanie uwierzyć, że wtedy na 10 dostępnych miejsc zgłosiło się zaledwie 8 osób (!). Firma postanowiła przyjąć wszystkich, a w tym mnie, świeżo upieczonego studenta I roku Informatyki na Uniwersytecie Jagiellońskim w Krakowie. Wtedy aby dostać pierwszą (oczywiście płatną) pracę jako programista, wystarczyło potrafić napisać klasę, metodę, prostą pętlę, wytłumaczyć jak to działa i ewentualnie – co już było rzadziej spotykane – rozumieć sposób działania prostego algorytmu na przykład sortowania bąbelkowego.

Dzisiaj, taki kod możemy wygenerować w kilka sekund za pomocą chata GPT czy innych podobnych narzędzi. Umiejętność kodowania, choć ważna, odchodzi na drugi plan. Oczywiście nie zrozum mnie źle, nikt w dającej się przewidzieć przyszłości nie będzie generował całych aplikacji za pomocą sztucznej inteligencji, która zastąpi programistów. Na ten moment wszystko wskazuje na to, że będzie to po prostu jedno z dodatkowych narzędzi, które będzie pomagało developerowi, bardziej skupić się na nieco wyższej warstwie domenowej, oraz architekturze oprogramowania, kosztem “klepania” prostego kodu.
Chcąc pracować w branży IT jako “inżynier oprogramowania”, musisz mieć świadomość, że sama umiejętność “kodowania” to obecnie coś na miarę znajomości alfabetu w przypadku nauki języka obcego. Są to absolutne podstawy, które dopiero otwierają drzwi do kolejnych elementów, a te już tak łatwo nie dają się zastąpić algorytmami AI.
Umieszczone w materiale linki są linkami afiliacyjnymi. Oznacza to, że poprzez przekierowanie za ich pośrednictwem na stronę internetową wydawnictwa Helion, dostanę w ramach prowizji drobną kwotę od wartości Twoich zakupów. Ciebie to nic nie kosztuje, a mi pomaga rozwijać tego bloga i tworzyć treści takie jak ta.
Budowa domu i programowanie, czy to ma coś wspólnego?
Wyobraź sobie… dom. Ćwiczenie dość proste, każdy przecież przynajmniej raz w życiu widział lub nawet mieszkał w tego typu budynku. Struktura takiego domu, to jego architektura. Określa ona kształt, wymiary, liczbę i rodzaj pokoi. Czy jesteś w stanie sobie wyobrazić budowę domu bez architektury? Pewne zmiany podjęte na etapie budowy fundamentów implikują decyzje, które będą podejmowane w przyszłości. Później już nie będzie tak łatwo o zmiany. Dodatkowa łazienka? Większy garaż?
Tak samo architektura jest niezbędna do tworzenia systemów oprogramowania. Skalowalność, niezawodność, utrzymanie… to wszystko elementy, na które nacisk musi zostać położny jeszcze przed wbiciem pierwszej łopaty, tfu… napisania pierwszej linijki kodu. I właśnie o tym możesz przeczytać w najnowszej książce z serii “Head First” (pl. Rusz Głową!), “Head First. Architektura oprogramowania”.
To nie jest zwykła książka…
O książkach z serii “Head First”, Amerykańskiego wydawnictwa O’Reilly (polskie edycje, wydawane są przez Helion), pisałem na blogu już wielokrotnie. Dlaczego? Ponieważ, moim zdaniem, są to jedne z najlepszych książek do nauki – od całkowitych podstaw – w zasadzie dowolnego zagadnienia jakiemu zostały poświęcone.
To nie jest zwykła książka ze ścianą tekstu i raz na jakiś czas, obrazkiem dla poszerzenia objętości. Pozycje te, można raczej porównywać do komiksów bądź kolorowanek, które w bardzo przyjemny sposób, przeprowadzają czytelnika przez dany temat jakiemu zostały poświęcone.

Sam swoje pierwsze programistyczne kroki stawiałem z książką “Head First. PHP & MySQL”. Znam też, całkiem sporo programistów z którymi miałem okazję współpracować, a dla których książka serii “Head First” czy to poświęcona PHP czy innej technologi, jest obowiązkowym elementem biblioteczki.
Skomplikowane zagadnienie w przystępnej formie
Kiedy po raz pierwszy zobaczyłem, że wydawnictwo O’Reilly, zdecydowało się na wydanie książki “Head First! Software Architecture”, od razu pomyślałem, że muszę to mieć! I tak się składa, że mam… polską edycję i to jeszcze przed premierą.
Nie ukrywajmy, ale architektura oprogramowania to temat, którym raczej nie zajmiesz się na początku swojej programistycznej kariery. Jak pisałem wcześniej, umiejętność kodowania, to znajomość alfabetu, a architektura… to pozbieranie liter w odpowiednie słowa, które stworzą piękny wiersz. Wyższa szkoła jazdy. Seria Head First jest raczej znana z tematów stricte technologicznych i poświęcona nauce od totalnych podstaw. Na stronach wydawnictwa Helion, możemy znaleźć pozycje na temat wielu technologii, w tym: Java, C#, Kotlin, Python, Git… GO. Wszystkie te książki, łączy jedno. W przystępny i bezbolesny sposób przeprowadzają czytelnika przez technologiczne tajniki zaczynając od totalnie podstawowych elementów na jakie możesz trafić. Poruszenie więc nieco bardziej zaawansowanego tematu w takiej formule, musi być interesujące.
Jak napisali sami autorzy, “Rusz Głową. Architektura oprogramowania” przeznaczona jest dla:
- Osób, które chcą się dowiedzieć coś nowego o architekturze oprogramowania,
- Wolą stymulujące rozmowy przy kolacji od suchych nudnych wykładów akademickich.
Książka nie jest natomiast przeznaczona dla:
- Osób nowych, w branży technologicznej. Każdy programista powinien znać przynajmniej podstawy architektury oprogramowania, ale zanim zdecyduje się na dalszą lekturę powinien już mieć trochę doświadczenia w pracy,
- Tych, którzy boją się spróbować czegoś nowego. Jeśli uważasz, że książka techniczna nie może być poważna, jeśli używa zwierząt z zoo do wyjaśnienia cech architektury, takich jak skalowanie czy odporność na błędy – ta książka nie jest dla Ciebie.
Nie mogę uwierzyć, że takie rzeczy opisali w książce do architektury oprogramowania!
Powyższy nagłówek, to oczywiście taki mały żart i parafraza jednego z dialogów (tak jak tutaj już pisałem, ta książka to dosłownie komiks), jaki można znaleźć w omawianej lekturze.
Ale bynajmniej nie pomyśl sobie, że pod tą zabawową formą, nie ma nic merytorycznego. Jest wręcz przeciwnie!
Może zacznę od przedstawienia autorów, a są nimi: Raju Gandhi, Mark Richards i Neal Ford.
Raju Gandhi – architekt, konsultant, autor i nauczyciel oraz prelegent na wielu konferencjach na całym świecie. Mieszka w Columbus w stanie Ohio (USA).
Mark Richards – architekt oprogramowania i założyciel DeveloperToArchitect.com, bezpłatnej strony internetowej poświęconej pomocy programistą w ich drodze do zostania architektami oprogramowania. Swoją karierę w branży IT rozpoczął w 1983 roku.
Neal Ford – dyrektor i architekt oprogramowania w ThoughtWorks, globalnej firmie konsultingowej branży IT. Jego działalność koncentruje się na projektowaniu i budowaniu dużych aplikacji korporacyjnych. Wygłosił ponad 2000 prezentacji, na różnych konferencjach na całym świecie!
Trójka wspaniałych osób ze sporym doświadczeniem zawodowym, wiedzą oraz co najważniejsze, umiejętnością jej przekazywania.
Po krótce, w książce przeczytasz o zagadnieniach takich jak:
- Cechy architektury, ich definiowanie, wpływ na strukturę architektury,
- Komunikacja z usługami serwerowymi, dokumenty ADR,
- Elementy konstrukcyjne, komponenty logiczne, architektura logiczna i fizyczna,
- Style architektury, podział techniczny vs dziedzinowy, modele wdrożeń: monolityczny vs rozproszony, ich wady i zalety,
- Separacji zagadnień, wzorce projektowe i ich warstwy, przekształcenie warstw na kod, podział na dziedzinę komponenty i warstwy, zmiana dziedziny,
- Monolity, modularny monolit, rozszerzenie modularyzacji na bazy danych,
- Architektura mikrojądra, wtyczki hermetyzowane vs wtyczki rozproszone, komunikacja z wtyczkami,
- Architektura mikrousług, wielokrotne zastosowanie kodu,
- Architektura sterowania zdarzeniami, zdarzenie vs komunikat, zdarzenie inicjujące i pochodne, komunikacja asynchroniczna i synchroniczna, topologie baz danych, monolityczna baza danych, architektura EDA vs architektura mikrousług.
Tematów całkiem sporo i myślę, że dla każdego programisty, który chciałby przeskoczyć z pozycji juniora na mida lub mida na seniora, znajomość tych zagadnień jest obowiązkowa.
Jak wspomniałem na początku tego artykułu, żyjemy w ciekawych czasach… AI bardzo mocno przyspieszyło zmiany jakie następują w branży IT. Dzisiaj już sama umiejętność kodowania nie wystarczy. Jeśli chcesz jakoś się wyróżnić na rozmowach rekrutacyjnych, dostać podwyżkę i piąć się po szczeblach kariery, to zachęcam do zakupu książki “Head First. Architektura Oprogramowania”.
Przy okazji pracy nad tym artykułem, nawet z ciekawości sam zajrzałem do mojej domowej biblioteczki technicznej i musze Ci przyznać, że odnalazłem w niej w sumie pięć książek z omawianej serii z czego dwie są w trakcie lektury. Nawet mając sporo lat doświadczenia, można z tej serii całkiem sporo wiedzy wyciągnąć i wykorzystać w pracy :)
Jeśli masz jakieś pytania, to standardowo odsyłam do sekcji komentarzy i zachęcam do dyskusji.