Daniel Pokusa


App Arch


Zapalony zwolennik zwinnych metodyk prowadzenia projektów, automatyzacji i efektywności. Z jednej strony programista, ściśle związany z rodziną języków JVM oraz kierownik projektów, z drugiej trener zajmujący się wsparciem w zakresie jakości projektów, organizacji zespołu, rekrutacji i rozwoju personalnego. Każdego dnia stara się obalić mit programisty we flanelowej koszuli nie posiadającego zdolności interpersonalnych, a jedynie wiedzę techniczną. Wierzy, że istotą wytwarzania dobrego oprogramowania jest komunikacja, współpraca i umiejętność dzielenia się wiedzą. Współtwórca konferencji SpreadIT oraz aktywny uczestnik wydarzeń ze światka IT. Bloguje na http://software-empathy.pl


Talks

Orchestrate your choreography!

Gdy mówimy o orkiestracji powinniśmy myśleć o filharmonii i dyrygencie, który wskazuje muzykom rytm dzięki czemu każdy muzyk wie kiedy zagrać swoją - znaną mu z nut - partię. Tak samo zachowuje się metoda, która wskazuje innym metodom, kiedy mają wykonać swoje - znane - zadanie. Z kolei choreografia to układ taneczny, który nie potrzebuje dyrygenta. Wystarczy muzyka i tancerze (np. baletu) doskonale wiedzą kiedy zatańczyć swoją partię. Muzyka tworzy dla nich pewne zdarzenia, które pozwalają im reagować na nie w z góry ustalony sposób. Podobnie działa metoda reagująca na zdarzenie- jeśli coś się wydarzy możemy wykonać z góry zaprogramowany kod. W oparciu o te dwa fundamentalne podejścia do pisania oprogramowania zbudowano wiele frameworków i narzędzi. Leżą one w podwałach takich architektur jak Event Driven Architecture, Microservices, CQRS, Hexagonal Architecture i wiele innych. Moim zdaniem jednak zbyt rzadko zastanawiamy się nad nimi. Niezależnie w którym buzzwordzie jesteś zakochany wielokrotnie będziesz stawał przed wyborem jednej z tych dwóch dróg. Chciałbym Wam pokazać plusy i minusy stosowania Orkiestracji i Choreografii, ale przede wszystkim jak praktycznie je łączyć ze sobą budując własną architekturę złożonych systemów- zarówno na poziomie kodu źródłowego jak i całych komponentów.