Zrozumienie biznesu to klucz do sukcesu programisty
1 godz. 30 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZgłębimy podstawy Domain Driven Design, skupiając się na zrozumieniu, czym jest domena i jakie role pełnią subdomeny w rozumieniu biznesu i projektowaniu oprogramowania. Dowiesz się, jak identyfikować i definiować domenę oraz subdomeny w kontekście biznesowym, co jest kluczowe dla efektywnego modelowania i implementacji systemów.
Skoncentrujemy się na jednym z kluczowych aspektów Domain Driven Design - definiowaniu granic kontekstów (Bounded Contexts). Nauczysz się, jak precyzyjnie wyznaczać te granice, co pozwala na lepszą separację i integrację różnych części systemu. Omówimy, jak wyznaczone granicę wpływają na jasność komunikacji w zespole oraz jak ułatwiają zrozumienie modelu biznesowego.
Spojrzymy na strategiczne wzorce DDD, skupiając się na kluczowych konceptach takich jak Subdomena i Bounded Context. Zrozumienie i umiejętność ich identyfikacji w strukturach biznesowych to podstawowa umiejętność w projektowaniu domenowym. Nie pominiemy też tematów pobocznych jak kontekst schizofreniczny czy Prawo Conwaya. Każdy z tych elementów pomoże Ci lepiej zrozumieć zastosowanie Domain Driven Design w praktyce.
Wzorce taktyczne są fundamentalne dla praktycznego modelowania i implementacji oprogramowania. O ile wzorce strategiczne wyrażają koncepcję, to wzorce taktyczne dotykają, tego, co kochają programiści i programistki czyli kodu. Zobaczysz jak i po co je stosować i jak mogą wspomagać spójność oraz transakcyjność danych.
Wszystko fajnie z tym DDD, ale jak to poukładać? Na to też znalazło się miejsce w kursie. Cały moduł poświęcimy na zapoznanie się z przykładową strukturą, organizacją plików i folderów aplikacji opartej o Domain Driven Design. Nie musisz się już zastanawiać, gdzie upchnąć Twoje klasy. Wszystko stanie się przejrzyste, intuicyjne i oczywiste.
Kurs powstał z myślą o programistach, architektach, liderach technicznych, a także ludziach biznesu, którzy potrzebują pogłębić swoją wiedzę o projektowaniu oprogramowania skoncentrowanego na domenie biznesowej. Niezależnie od tego, czy jesteś na początku drogi z DD, czy masz już trochę doświadczenia i chcesz usystematyzować lub odświeżyć wiedzę - ten kurs jest dla Ciebie!
Teraz pora na naprawdę niesamowite zagadnienie, jakim jest prawo konwersja.
Nie jest to wprawdzie prawo w rozumieniu takim naukowym, ale nie ma dowodu jakiegoś
rozumowania, hipotezy naukowej.
Nie jest to prawo naukowe, ale potocznie mówi się o tej teorii Marvina.
Konwersja jako prawo konwersja.
I na czym polega to prawo?
Otóż najbardziej szokującą rzeczą będzie tutaj to, że sposób komunikacji w firmie
wpływa na to, w jaki sposób piszemy oprogramowanie.
A jak to wygląda, to już mówię.
A więc prawo konwoju definiuje w pewnym sensie strukturę organizacji i
jej relacje ze strukturą projektu.
Posłużmy się tutaj bezpośrednim cytatem.
Przetłumaczone na język polski prawo Conway, czyli prawo organizacji systemów.
Tutaj przeczytam.
Organizacje projektujący systemy wyprodukują projekt przypominający
strukturę komunikacji wewnętrznej tej organizacji.
I może ta teoria wygląda bardzo sucho i mocno.
Teoretycznie natomiast ma niesamowite przełożenie, zwłaszcza w dzisiejszej dobie
pracy zdalnej, gdzie większość firm IT za standard przyjęła sobie
pracę zdalną lub hybrydową.
Wcześniej mieliśmy takie zjawiska, gdzie pracowali programiści w jednych biurach,
pracowali w małych startupach, w kodzie start upów.
Będziemy widzieć takie przykłady, gdzie mały zespół programistyczny siedzący
blisko siebie, gdzieś tam w garażu.
Dajmy na to początkowy Facebook, Instagram i inne tego typu projekty.
Siedział sobie w garażu mały zespół programistów i żeby ze sobą porozmawiać
nie musieli pisać wiadomości na scalaku, ustawiać koli na złomie
i wzruszać się w konkretnych godzinach, bo po prostu wystarczyło poklepać kolegę
w ramię albo porozmawiać z nim, jedząc wspólnie pizzę.
I takie zespoły w dużej mierze wyprodukowały lub
wyprodukują kod, który będzie mocno powiązany, bo przepływ
komunikacji między programistami w takim projekcie jest bardzo bezpośredni,
wobec czego nie będziemy mieć tam zbytnio wydzielonych kontekstów i modułów,
bo ci programiści łatwo się będą ze sobą komunikować.
To jest pewna obserwacja i tą samą obserwację będziemy mieć w zespole, który
jest mocno rozproszony, więc tendencją zespołów mocno rozproszonych, takich,
które działają bardzo autonomicznie, będzie wytworzenie oprogramowania,
które jest modularne, systemu modularne.
W taki oto sposób prawo konwencja wpływa na budowanie oprogramowania, czyli
jeszcze raz sposób, w jaki się komunikuje ze sobą firma, Komunikują ze sobą
poszczególne zespoły w firmie Programiści będzie miał wpływ.
Mimo że wydaje się to trochę abstrakcyjne, ale tak jest, będzie miał wpływ na to, w
jaki sposób będzie ustrukturyzowane projekt, czyli jak będą ustrukturyzowane
nasze klasy i jakie to ma związek z Domain Driven Design.
Mówiliśmy o bandit kontekstach, o domenach, osób, domenach.
Często spotkamy się z tym, że będziemy mieć osobny zespół,
może osobnego programistę, który zajmuje się jednym bandem kontekstem.
Jaki to ma wpływ na skuteczność w wytwarzaniu oprogramowania?
Ano taki, że ten proces komunikacji jest usprawniony, jest krótszy i szybszy
w obrębie danego band od kontekstu.
Budując kod, budując logikę biznesową w danym kontekście,
programiści nie muszą brać pod uwagę zmian zachodzących w innych kontekstach.
Będziemy mieć autonomiczny kontekst, który nie będzie musiał brać pod uwagę
tego, w jaki sposób zmieniają się inne konteksty, wobec czego możliwe jest,
że ci programiści nie będą mieć pojęcia, co się dzieje w innych częściach
aplikacji, często dołączając do projektu lub pracując w większych projektach.
Będziesz mieć takie uczucie, że nie masz pojęcia, czym zajmuje się inny zespół,
że nie wiesz jak działa inne, inna część tej aplikacji i np.
zmieniając zespół będziesz miał to samo uczucie jakbyś
zmieniał totalnie pracę na całkiem inny projekt, na całkiem inną firmę, bo
wszystko tam będzie inne, będzie inny kontekst, inny sposób
komunikacji, inne praktyki.
Bo tak działa właśnie prawo.
Konwencja, w którym mówimy o tym, że struktura komunikacji w zespołach
odzwierciedla się w strukturze projektów.
Świadomie lub nieświadomie zamierzenie lub nie zamierzenie.
W konsekwencji często tak jest, że właśnie organizacja naszych projektów jest
mocno nacechowana tym, w jaki sposób komunikujemy się w firmie.
Prawo Konwalia i Domain drewno design bardzo się lubią, bo Domain Driven Design
jest o wiele łatwiejsze w implementacji.
W takiej firmie, w której to prawo konwencja ma bardzo
mocno odciśnięte piętno.