piątek, 6 marca 2015

It’s all about… domain

Tematem Domain-Driven Design jestem zainteresowany już od dłuższego czasu, ale ostatnio częstotliwość jego występowania przy okazji developmentu znacznie się zwiększyła.
Biorąc to pod uwagę zdecydowałem się na odświeżenie swojej pamięci i ponowne przewertowanie stronic Domain-Driven Design Eric’a Evansa. A skoro już to zrobiłem, to chyba warto podzielić się odczuciami i obserwacjami na temat tej lektury z Wami.

Książka Evansa jest napisana w taki sposób, że z powodzeniem może pełnić funkcję pomocnika lub odniesienia, gdy wiem, że rozwiązanie istnieje, ale nie do końca w głowie jestem w stanie je odtworzyć; gdy wiem, czego szukam, ale potrzebuję dokładniejszych informacji, aby z całą pewnością stwierdzić, że jest to dokładnie to, co pojawiło się w mojej głowie.
W rozdziałach mamy opisane koncepty, które warto znać. Okraszone są ponadto przykładami zastosowania, które są w zrozumiały sposób wytłumaczone; przykładami, które wraz z czytaniem kolejnych rozdziałów rozwijają się, a cały model domeny ewoluuje wraz z zapoznawaniem się z kolejnymi pojęciami.
Niemniej jednak każdy z rozdziałów można z powodzeniem traktować jako osobną całość i w razie potrzeby sięgać po uzupełnienie bądź odświeżenie wiedzy.

Pomimo tego, że Evans pozostaje przy tych samych przykładach i demonstruje nam rozwój danej domeny w zetknięciu się z nowymi wymaganiami oraz z coraz dogłębniejszym i poprawniejszym jej zrozumieniem, nie jest to książka, która poprowadzi Was za rękę od podstaw w taki sposób, aby stworzyć swoją własną aplikację w myśl idei DDD.
Mimo wspomnianej już ciągłości zbyt wiele jest w niej „skakania po tematach”, aby mogła pełnić taką rolę.
Nie ujmuje to jednak nic z wartości, które przekazuje i nie zmienia tego, że jest pozycją wartą przeczytania.

Oprócz samego faktu przewertowania jej stronic, jestem przekonany, że niejednokrotnie do niej wrócicie w tych momentach „zagubienia” bądź niepewności, o których wspomniałem wyżej. Nie da się ukryć, że ten sposób korzystania z książki jest dla niej najnaturalniejszy, a dla osoby, która po nią sięga – wygodny i szybki.

Książka Evansa uczy myślenia. Nie spotkacie tutaj setek stron wypełnionych przykładami kodu (chodź i na to też jest tutaj miejsce), ale przede wszystkim nauczycie się jak reagować na zmiany w taki sposób, aby to co najważniejsze, czyli domena aplikacji, na tych zmianach pozytywnie skorzystała.
Zobaczycie jakie są następstwa dróg na skróty i dlaczego warto zainwestować w zrozumienie tego dlaczego coś się dzieje. Bo niekiedy właśnie to zrozumienie okazuje się najlepszą, a zarazem najkrótszą drogą.

Niemniej jednak, zapewne nie wszystkim jest ta lektura potrzebna, nie wszystkim się przyda. Podejście Domain-Driven Design warto stosować przy dużych, nie CRUD-owych, nie trywialnych systemach, których czas życia jest przewidziany na trochę więcej niż kilka miesięcy. Dlaczego? Ponieważ jest ono wymagające oraz czasochłonne, a przez to nie zawsze opłacalne. Tam gdzie jednak spotykacie się ze złożonym problemem lub czymś zupełnie nowym, czego jeszcze nikt nie miał okazji eksplorować to naprawdę warto rozważyć to podejście.

Oczywiście wszystkich innych również szczerze namawiam do zapoznania się z tą pozycją, bo o ile może się okazać, że nie będziecie mieli okazji w najbliższym czasie zastosować wszystkich zaproponowanych tam rozwiązań, to warto zapoznać się ze sposobem myślenia, który jest przy takim podejściu wykorzystywany i który przydaje się nawet wtedy, gdy nie przekłada się to na implementacje kodu z wykorzystaniem rozwiązań omówionych w książce.