Episodes
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
Zrozumienie domeny biznesowej może być budowane na wiele sposobów i różnymi technikami. Mój dzisiejszy rozmówca, Maciej Jędrzejewski, przedstawia kolejne narzędzie analitycznego toolboxa, które z powodzeniem stosuje w pracy ze swoim zespołem. Domain Storytelling, autorstwa Henninga Schwentnera oraz Stefana Hofera, to prosta technika notowania i wizualizacji historyjek domenowych, które mogą przełożyć się na więcej niż to się pozornie wydaje. W tym odcinku rozmawiamy z Maćkiem m.in. o: -...
Published 10/03/22
Poprzedni odcinek o driverach architektonicznych pokazał, że nie samą "domeną" żyje projekt. Podobnie jest z frontendem, który dawno temu przestał już być tylko prostą warstwą prezentacyjną, a stał się często (i to mocno złożoną!) osobną aplikacją. Z moim dzisiejszym gościem, Tomaszem Ducinem, wkraczamy w świat architektury frontendu i w tym odcinku rozmawiamy m.in. o: - wyzwaniach architektonicznych związanych z frontendem, - porównaniach wzorców i technik stosowanych na backendzie, -...
Published 09/26/22
Projektując złożony system wymagania funkcjonalne stanowią najbardziej oczywisty aspekt, jaki powinniśmy wziąć pod uwagę. To one w dużym stopniu kształtują podejmowane decyzje architektoniczne. Ale uwaga! Istnieją także inne siły, które w równie dużym stopniu mogą rozpychać design systemu i które powinny zostać przez nas uwzględnione. Innymi słowy, dziś temat driverów architektonicznych i ich roli w projekcie. W tym odcinku wraz z Kubą Pilimonem rozmawiamy m.in. o: - koncepcie driverów...
Published 09/19/22
Patrząc na tematy związane z Domain-Driven Design czy książki, można by powiedzieć „DDD - to nie takie proste”. Z Michałem Giergielewiczem rozmawiamy dziś o tym, jak można wejść w ten świat i jak zbudować solidne fundamenty pod przyszłe poznawanie bardziej zaawansowanych wzorców i praktyk.
Published 09/12/22