Episodes
"Architekci muszę bez przerwy oceniać cechy architektury, aby upewnić się, że ciągle zapewniają one jakość i nie stają się antywzorcami..." Ten cytat z książki "Evolutionary Architecture" autorstwa Neala Forda, Rebeki Parsons i Patricka Kua dotyczy jednego z fundamentów architektury ewolucyjnej, czyli tzw. funkcji dopasowania - Fitness Functions.
Published 07/31/23
Konferencja PHPers Summit 2023 była świetną okazją do tego, aby zrobić coś zupełnie inaczej w podkaście. Mikrofony i reszta sprzętu wylądowała w jednej z hal Międzynarodowych Targów Poznańskich, na scenie zasiedli obok mnie Michał Giergielewicz i Grzegorz Korba z trójmiejskiego GetResponse, a na sali pojawiło się kilkaset zainteresowanych rozmową osób.
Published 07/17/23
Idea zaproponowanej przez Alistaira Cockburna architektury heksagonalnej ma już prawie 20 lat. Ale jak krótko i rzeczowo opisać założenia Hexagonal Architecture, czy też Ports & Adapters? I jak to przekłada się na kod systemu?
Published 07/03/23
Subdomena czy bounded-context może być odkryta lub zamodelowana z użyciem heurystyk, które pojawiły się już kilkukrotnie we wcześniejszych rozmowach. Ale jak te koncepty mapują się na kod naszego systemu? Gdzie i jak zobaczymy w IDE ich istnienie i zakres? Odpowiedzią na te pytania mogą być opisane przez Erica Evansa moduły, zwane także pakietami.
Published 06/19/23
Kod często można zmienić relatywnie łatwo. Jednak zupełnie inaczej jest z własnymi nawykami czy podejściem. Dziś na czynniki pierwsze rozkładamy kilka typowych "dev-grzeszków", które z perspektywy osób odpowiedzialnych za pion IT mogą przeszkadzać w karierze. Ponieważ technologia to niestety nie wszystko...
Published 06/05/23
Do dziś pamiętam pierwsze wydanie pewnego projektu... 30 sekund po zakończeniu procedury rozdzwoniły się telefony i jasne już było, że choć wdrożenie może i się udało, to wydanie już niekoniecznie. Jakiś czas później sterowaliśmy zmianami w zachowaniu kodu na produkcji bez konieczności jego aktualizacji, już całkowicie bezstresowo.
Published 05/29/23
Istnieją trzy rodzaje dokumentacji. Przy czym pierwszy rodzaj to taki, który… nie istnieje. A o dwóch pozostałych dowiesz się z tego odcinka.
Published 05/15/23
Wytwarzanie oprogramowania, zwłaszcza tego złożonego, to gra zespołowa. A gdy w projekcie udział bierze wiele zespołów, musimy zatroszczyć się choćby o komunikację pomiędzy nimi, czy przypisanie właściwych odpowiedzialności w projekcie.
Published 05/01/23
Projektowanie systemu rozproszonego, opartego np. o architekturę mikroserwisową, zwykle nie jest trywialne. Pojawia się tu choćby problem komunikacji poszczególnych części systemu i właściwego sposobu jej testowania...
Published 04/17/23
CQRS, czyli Command Query Responsibility Segregation, jest wzorcem wyjątkowo popularnym i powszechnie stosowanym w wielu systemach. Mało kto jednak sięgnął po oryginalny dokument autorstwa Grega Younga, który opisuje założenia tego konceptu architektonicznego i z czasem CQRS obrósł kilkoma mitami.
Published 04/10/23
Mylić się to rzecz ludzka, propagować automatycznie te błędy to DevOps... Tym razem na tapet bierzemy historie o tym, jak to produkcja płonęła i jakie wnioski zostały z tego wyciągnięte.
Published 04/03/23
Często uciekamy od danych i analizujemy zachowania w procesach biznesowych, a równie często to właśnie dane są podstawą do budowy zaawansowanych systemów IT. Zanim dotkniemy gwarantujących spójność agregatów, nasze operacje przechodzą przez systemy oparte o sztuczną inteligencję czy uczenie maszynowe i to właśnie tym zagadnieniom dziś się przyjrzyjmy.
Published 03/21/23
Wiele tematów potrafi podnieść temperaturę rozmowy, zaczynając choćby od osławionego pytania "taby czy spacje". Ale kiedy skręcamy w rejony związane z Agile i pada słowo SCRUM, konwersacja często przechodzi na zupełnie nowy wymiar.
Published 03/07/23
Niezależność od frameworka, interfejsu użytkownika, bazy danych i innych systemów zewnętrznych, a także wsparcie testowalności - to podstawowe filary takich konceptów architektonicznych jak Clean / Hexagonal / Onion / Sreaming Architecture, DCI, BCE. Poszczególne podejścia różnią się w szczegółach, jednak w zbliżony sposób podchodzą do rozdzielania systemu na mniejsze, dedykowane warstwy.
Published 02/21/23
W trakcie implementacji systemu często stajemy przed problemem kontroli uprawnień i decydowaniu, czy pozwalamy użytkownikowi wykonać określoną operację. Ten jeden, pozornie prosty IF w kodzie jest pretekstem do dzisiejszej rozmowy z Bartkiem Słotą, na temat kontroli uprawnień w projekcie opartym o techniki Domain-Driven Design.
Published 02/07/23
O tym, że procesy biznesowe istnieją i że są ważne wiedzą wszyscy. Potrafimy o nich ogólnie mówić na poziomie abstrakcyjnym, ale też umiemy schodzić na niższe poziomy i opisywać ich działanie zdarzeniami lub BPMN-em. Natomiast o regułach często mówi się tylko na ogólnym poziomie, jeśli w ogóle, że "no jakieś tam reguły są w biznesie". Są traktowane trochę jak czarna magia, jak jakiś mityczny stwór. Trochę jak synonim "logiki biznesowej". Reguły biznesowe to jest bardzo konkretna rzecz, za...
Published 01/24/23
"Asking a question should not change the answer" - w myśl tej idei Bertranda Meyera warto separować zapytania o zmianę stanu systemu od akcji ten stan zmieniających. A gdyby tę ideę zastosować przy implementacji np. agregatów i zacząć mocniej separować logikę biznesową od modyfikacji stanu? Z moim dzisiejszym gościem, Oskarem Dudyczem, przyglądamy się zaproponowanej przez Jérémiego Chassaing koncepcji tego rozdziału z użyciem wzorca Decider. W tym odcinku rozmawiamy z Oskarem m.in. o: -...
Published 01/10/23
Nowy Rok to idealny moment na to, aby na chwilę odejść od technologii i porozmawiać o zmianie. A właściwie o jej przeprowadzeniu w organizacji, bo chyba zbyt często się o to rozbijamy w projektach i zespołach... Krzysztof Rakowski i Paweł Rekowski, których być może znacie z podcastu Nerd Management, w dzisiejszej rozmowie dzielą się swoim doświadczeniem i sprawdzonym procesem dr Kottera. Jeśli w minionym roku nie udało Ci się zmienić czegoś w twoim projektowym otoczeniu, może znajdziesz tu...
Published 01/01/23
Zestaw zasad SOLID, wspomagający tworzenie łatwo rozwijalnego i utrzymywanego oprogramowania, jest znany w branży IT od lat. I także od lat mówi się o jego niedopasowaniu do obecnej rzeczywistości. Mój dzisiejszy gość i jednocześnie wielki zwolennik podejścia Clean Code i Software Craftsmanship, Piotr Stawirej, przedstawia propozycję zestawu zasad CUPID autorstwa Dana Northa, mający rozwiązującać bolączki SOLID-a. W odcinku: - jakie zasady/właściwości proponuje CUPID, - jak można...
Published 12/27/22
Po ponad 2 latach mam przyjemność ponownie gościć Andrzeja Krzywdę, jednak tym razem rozmawiamy na temat nauki Domain-Driven Design i sposobu testowania różnych nowych koncepcji programistycznych w Arkency. Jednym z implementowanych niedawno pomysłów były, wprowadzające dodatkowy wymiar czasowy, bi-temporalne eventy domenowe. W odcinku rozmawiamy z Andrzejem m.in. o: - sposobie nauki DDD i nowych podejść w praktyce, - modelowaniu zdarzeń bi-temporalnych i możliwych innych podejściach, -...
Published 12/20/22
Testy zawsze powinny być obywatelami pierwszej kategorii w projekcie, a ich jakości powinniśmy poświęcać sporo uwagi. Z moim dzisiejszym gościem, Marcinem Zajączkowskim, rozmawiamy na temat automatycznego "testowania" testów i oceny ich jakości, czyli technice testowania mutacyjnego. W tym odcinku m.in.: - na czym polega testowanie mutacyjne, - ogromnych korzyściach oferowanych przez to podejście, - powodach, dla których tego rodzaju testowanie może być czasem trudne w praktyce, -...
Published 12/13/22
Złożony system informatyczny może być postrzegany jako zbiór stanów ze zdefiniowanymi sposobami przejść pomiędzy nimi, gdzie testy weryfikują poprawność poszczególnych przejść stanowych. Taką definicję w dzisiejszym odcinku wprowadza Kamil Grzybek, z którym rozmawiamy o testowalności oprogramowania i związanych z nią zagadnieniach. W tym odcinku wraz z Kamilem poruszamy m.in. tematy: - kategoryzacji testów, - testowalności systemu i czynnikach na nią wpływających, - piramidzie testów i jej...
Published 11/29/22
Każdy paradygmat programowania świetnie funkcjonuje w przestrzeni, do której został zaprojektowany. I jednocześnie sprawia dużo problemów, gdy jest stosowany w miejscach dla niego nie przeznaczonych. Nie inaczej jest z programowaniem reaktywnym, o którym rozmawiamy dziś razem z Tomkiem Nurkiewiczem, autorem m.in. książki Reactive Programming with RxJava czy podcastu Around IT in 256 Seconds. W tym odcinku: - czym właściwie jest programowanie reaktywne? - jakie są zalety i wady tego...
Published 11/15/22
Jednym z fundamentów Domain-Driven Design jest zrozumienie i dekompozycja działalności organizacji w odrębne subdomeny. A do dyskusji o subdomenach, nazywanych także czasem poddziedzinami czy też przestrzenią problemu, zaprosiłem dziś Sławka Sobótkę. W tym odcinku ze Sławkiem rozmawiamy m.in. o tym: - czym właściwie są subdomeny, - jak można je kategoryzować, - przykładowych heurystykach pomocnych w identyfikacji subdomen, - jak wykorzystać tę wiedzę w projekcie i wiązać z innymi...
Published 11/01/22
Mało który temat budzi tak wiele skrajnych emocji jak współpraca analityków i developerów. A na pewno nie było takiego do tej pory w podkaście. Czas więc przyjrzeć się bliżej zagadnieniom analizy biznesowej i systemowej oraz roli analityków w procesie tworzenia oprogramowania. W tej rozmowie padną konkretne i mocne słowa, ponieważ dookoła tych tematów urosło wiele mitów i nieporozumień. Dlatego bardzo się cieszę, że zaproszenie do tej właśnie rozmowy przyjęła osoba, która ma ogromne...
Published 10/17/22