Mentionsy Mentionsy
DevTalk - Maciej Aniserowicz
DevTalk - Maciej Aniserowicz

DevTalk #125 – O Archetypach z Bartłomiejem Słotą

15.09.2025 ·1 godz 11 min

Archetypy oprogramowania to pojęcie, o którym wielu programistów nigdy nie słyszało – a ci, którzy je znają, mówią, że całkowicie zmienia sposób patrzenia na systemy. To trochę jak odkrycie ukrytego poziomu w grze: nagle widzisz, że rezerwacja pralki, wymiana waluty i przypisanie pracownika do projektu mają ze sobą więcej wspólnego, niż ktokolwiek by się spodziewał. O archetypach […] The post DevTalk #125 – O Archetypach z Bartłomiejem Słotą appeared first on DevTalk.

Dlatego cieszę się, że ta wiedza, którą przekazuję innym jest dla nich wartościowa. Także dla naszych kolegów trenerów. Tak, ostatnio wokół twojej osoby w naszych kręgach było dość głośno, o czym potem jeszcze na koniec porozmawiamy i też spory feedback przychodzi na maila i w ankietach, że ludzie ciebie kojarzą, że lubią ciebie, znają i ci, którzy znają, wszyscy chwalą, że po prostu jest spoko, więc tym bardziej nie mogę się doczekać naszej dzisiejszej rozmowy, zatem kończymy pierdalolo i przechodzimy do rzeczy, czyli do archetypów oprogramowania. Super. To jest twój konik z tego, co się orientuje. Może zanim przejdziemy do tego, co to w ogóle jest, to może zacznijmy od takiego pytania, dlaczego archetypy są tak mało znane, tak mało popularne, bo wydaje mi się, że większość programistek, programistów albo o tym słowie słyszało w kontekście innym niż oprogramowanie,

Po prostu ktoś wziął to, wygrzebał, ładnie sprzedał, przeniósł na dzisiejsze technologie i mamy to, co mamy. Dokładnie i ponazywał jeszcze troszeczkę inaczej. myślę, że podobnie jest z archetypami, bo jak sobie popatrzymy chociażby na lata wydania książek dotyczących archetypów, czy to książka o wzorcach analitycznych Martina Fowlera, czy słynna książka o tytule, którego nigdy nie pamiętam jak wymienić, ale wiem, że jest w niej skrót MDA, ona pochodzi z 2004 roku, także już lata temu te koncepty zostały opublikowane Dlaczego to się nie przyjęło?

Jakby problem jest cały czas taki sam, to znaczy ci ludzie niestety dzielą się z nami wiedzą niepraktyczną. To nie są praktycy, to nie są ludzie, którzy rozpykali bardzo wiele problemów. To są ludzie, którzy najczęściej albo siedzieli w projektach akademickich, albo robili jeden projekt w jednej firmie przez całe życie i to jest u nich wbudowany wzorzec, jaki mają. Tak samo jakby twoje dziecko... nie widząc wcześniej otwieracza do butelek, miało za zadanie otworzyć butelkę, to być może pierwszą rzeczą, którą bym wziął, to nóż, bo smarowało sobie wcześniej bułkę masłem, to spróbuję sobie może jakoś tam podważyć, może mi się uda, bo nie wiem, że istnieje coś takiego jak otwieracz. Tak samo tutaj. Tak długo jak nie poznasz wzorców, nie poznasz archetypów, będziesz próbował to zrobić tak, jak tylko potrafisz.

I dokładnie to samo podejście... dokładnie ten sam sposób rozumowania moglibyśmy wpakować i do archetypów, i do wzorców gangu czworga, i do, myślę, każdej dziedziny naszego życia zawodowego i pewnie nie tylko zawodowego. Zatem, skoro wiemy, dlaczego być może nie są popularne, to czym są archetypy? I co dają programistom i programistom? Powiem teraz coś, czego nie znajdziecie prawdopodobnie w tych książkach, o których wspomniałem, gdyż tam też jedni kłócą się z drugimi, kto ma lepszą definicję. Natomiast dla nas, w sensie dla mnie, dla Kuby, dla Sławka, czyli tych osób, które pracują nad archetypami, dla nas jest to taki, można powiedzieć, wzorzec modelowania powtarzalnych zachowań i struktur biznesowych.

I teraz tak. Wyobraź sobie, że jeżeli przypisujesz pracownika do projektu, to de facto czym zarządzasz? Nie pracownikiem. Jego dostępnością. Masz jego kalendarz. Wiesz jakie ma zajęcia, co kiedy robi i masz projekt. I musisz w jakiś sposób te zasoby, już trochę zdradziłem, asset, zarezerwować na poczet jakiegoś projektu, zarezerwować jego czas, jego sloty. Czyli de facto to, czym tutaj manipulujemy, to jest inwentarz, inventory, w którym to mamy być może rezerwację, być może dostępność, zarządzamy dostępnością. Udostępnienie przesyłki do odbioru w paczkomacie, dokładnie to samo. Masz zasób pod tytułem skrzynka, który albo jest zajęty dla Ciebie, albo jest zajęty dla kogoś innego.

Ty w poprzednim przypadku byłeś projektem. W tym przypadku jesteś szafą w paczkomacie. Przepraszam, nie szafą w paczkomacie, tylko jesteś odbiorcą paczki. A twoim zasobem tam był człowiek i jego miejsce w kalendarzu. W drugim przypadku To jest skrytka w szafie, w paczkomacie. I znowu mam dokładnie ten sam problem. Zarządzam dostępnością człowieka i jego kalendarza, tu zarządzam dostępnością skrytki. I idziemy dalej. Rezerwacja pralki w magazynie. Dokładnie to samo. Masz zestaw półek, zestaw jakichś regałów i tam gdzieś stoi ta pralka. I chcesz, żeby ta konkretna pralka, ten konkretny asset był przypisany do Ciebie czy do Twojego zamówienia. I widzicie? Tutaj teraz mamy de facto...

po jakimś czasie mam billing, tak jak w telefonie komórkowej, płacisz za zużyty internet, płacisz za rozmowy poza pakietem i tak dalej, więc my Cię na sam koniec rozliczamy, ale w pewnym momencie ta płatność następuje i to jest nic innego jak właśnie ordering. Więc myśląc w ten sposób, zauważcie, że ja jestem też w stanie większość biznesów sprowadzić do straganu, w którym kupuję sobie jakieś produkty czy usługi. I zadałeś Maćku pytanie, jeśli dobrze pamiętam, po co mi to? Po co mi te archetypy? Czy już wiemy co? Wydaje mi się, że to chyba na ten moment mamy zamknięte. Fajnie, że nie podałeś takiej książkowej definicji tylko, tylko podałeś też teraz dużo przykładów, że generalnie słuchajcie, sorry, ale wszyscy pracujecie na straganach z gaciami.

Dokładnie. Oczywiście nie chciałbym teraz obrazić tych, którzy mają naprawdę skomplikowane biznesy. Albo naprawdę mają stragany z gaciami, to też nie jest takie łatwe. No dokładnie, straga z gaciami też potrafi wymagać, nie wiem, dziesięciu czy kilkunastu zespołów programistycznych, żeby obsłużyć te wszystkie archetypy wraz z ich integracją i całym tym narzutem biznesowym. Czyli, że tak parafrazuję, zanim dojdziemy do tego po co, to zrobię taką mikroanalizę, czyli to jest zauważanie podobieństw w najpierwszy rzut oka bardzo odległych od siebie biznesach, i rozwiązywanie problemów, które pojawiają się we wszystkich tych biznesach poprzez, w sumie to o czym mówiliśmy, odpowiednie nazwanie odpowiednich problemów oraz nazwanie odpowiednich rozwiązań, tak?

Dokładnie tak. To jest spora chyba część tego wszystkiego, to właśnie jest odpowiednia nomenklatura, dzięki której można się porozumieć pomiędzy tymi biznesami. I świetnie, że powiedziałeś o tym porozumiewaniu się, bo o komunikacji też chciałem powiedzieć. Archetypy bardzo ułatwiają komunikację. A to jest może część tego po co, tak? Tak, tak, tak. One bardzo ułatwiają nam komunikację. Ale zanim jeszcze to, ja chciałem jeszcze jedną rzecz rozwinąć, bo jak będziecie szukać w literaturze o tych archetypach, coś tam znajdziecie i tam będą rzeczy związane właśnie z tym, o czym mówiłem, tu będzie inwentarz, tu będzie dostępność, tu będzie produkt, party i tak dalej, tego typu wzorce, ale my patrzymy też trochę szerzej na archetypy, to znaczy wcale nie jest powiedziane, że to zawsze będzie dotyczyć tylko tej części takiej biznesowej sensu stricte, bo...

Podam Wam może kolejny przykład, który może uzmysłowi Wam lepiej, jak szerokim pojęciem są archetypy. Wyobraźcie sobie, że mamy na przykład jakiś harmonogram spłaty kredytu. Mamy harmonogram spłaty kredytu, czyli gdzieś są jakieś raty, są jakieś odsetki. I teraz, kiedy ma wkroczyć do akcji windykacja? No windykacja, patrzę tam na umowy, ile ja się tam opóźniłem, ile ja nie spłaciłem rat i tak dalej, ile ogólnie zalegam. No i windykacja będzie zadawała pytania, no to jaka jest ta różnica? Ile chłop miał zapłacić do dzisiejszego, ile faktycznie zapłacił? No i teraz można zrobić oczywiście klasę harmonogram, można zrobić sobie klasę rata, można tam sobie porzucać odsetki, czy kapitał, czy różnego rodzaju rzeczy i można sobie tutaj liczyć, kombinować, patrzeć, gdzie tam wpłatności wpłynęły, o tu przyszła taka wpłatność, tu było to i próbować sobie to jakoś odejmować i wyjdzie nam wynik.

Trzecia rata, o, o! Chłop mnie spłacił. I teraz, żeby odpowiedzieć na pytanie, jaka jest różnica, to ja te dwie struktury algebraiczne odejmuję od siebie. Więc wprowadziłem problem, wyznaczania różnicy w tym konkretnym, bardzo specyficznym przykładzie biznesowym, wyznaczania różnicy pomiędzy wykonaniem a planem do problemu algebraicznego. I dla nas w archetypach także tego typu rozwiązanie, gdzie ja odejmuję od siebie grafy, odejmuję od siebie, porównuję węzły, które w tych grafach się pojawiają, czy sprawdzam historię ich przejść, tego typu rzeczy, to też dla nas jest archetyp.

więc my też myślimy sobie trochę niżej. Nie mógłbym powiedzieć, że to, co teraz opisałem, jest jakimś biznesowym archetypem nazwanym. Nie, to jest algebra, która pozwala nam sprowadzić skomplikowany, trudny problem biznesowy do łatwego, znanego już, rozwiązanego przez tysiące osób na całym świecie rozwiązania. Tylko mapuje ten problem biznesowy na graf na przykład, albo na jakąś inną strukturę danych, może na drzewo, może na cokolwiek. innego, może na jakiś zbiór. Także to pojęcia są szersze. Skoro problemy mamy wszyscy, rozwiązania są na świecie, to ten proces tego mapowania wydaje się być bardzo kluczowy w tym wszystkim i tak naprawdę to tutaj trzeba budować kompetencje, żeby zauważać i odpowiednio dobierać rozwiązania do problemów, tak?

Tak, zarówno musisz znać możliwe rozwiązania, czyli znać te archetypy, bo inaczej nie będziesz wiedział, że się butelkę otwiera otwieraczem, tylko będziesz nożem kombinował. Więc musisz znać te archetypy. No i właśnie, to całe mapowanie. I to mapowanie sprowadza się do problemu myślenia abstrakcyjnego. Czyli czy ja w straganie z gaciami widzę produkty, widzę ordering. Czy ja w sprzedaży kredytu hipotecznego widzę produkty, widzę ordering i widzę billing. Niedawno odpaliliśmy projekt, który nazywa się archetypyoprogramowania.pl z Tobą, Kubą, Pulimonem i Sławkiem Sobutką i tam już wpłynęło nam ponad 200 ankiet od osób. Ja to wszystko skrupulatnie czytam, nawet jeszcze nie wrzuciłem jakieś podsumowania, po prostu sobie czytam sam to osobiście i najczęściej pojawia się właśnie ten problem.

Od osób, które już słyszały o archetypach, bo bardzo wiele osób nawet nie słyszało o archetypach. Jak ktoś słyszał o archetypach i próbuje je zastosować, to właśnie bardzo często ludzie piszą, że wiedzą, że mają jakiś problem wiedzą, że są jakieś te archetypy, ale żeby dobrać, który archetyp, kiedy, to to jest to największe wyzwanie. Powiedz, bo w sumie to, o czym opowiadasz, to są jakieś gotowe rozwiązania na problemy, które pojawiały się bardzo często i tutaj właściwie dość naturalnie pojawia się kolejna koncepcja, o której wspomniałeś wcześniej, czyli wzorce projektowe z Gang of Four albo też wychodząc nawet poza ten standardowy zbiór z lat 90. Czym się różnią archetypy, o których mówimy, od po prostu zwykłych wzorców projektowych? To nie jest to samo, tylko inaczej nazwane?

Może najpierw opowiem o podobieństwach. Dawaj. Otóż wzorzec projektowy w ogólności w tej definicji panów z tej czwórki, panów z gangu, to jest jakiś konkretny sposób rozwiązania konkretnego problemu technicznego, taktycznego już bym powiedział, w kodzie. który ma swoje zastosowanie, po pierwsze, czyli już mamy definicję problemu, mamy konkretny kontekst stosowalności, mamy konkretne rozwiązanie i tam jeszcze są warianty rozwiązania, często w niektórych wzorcach różne, które mają różne konsekwencje. I teraz z perspektywy archetypów, jakbyśmy zobaczyli, co mają wspólnego archetypy z wzorcami projektowymi, no to dobra, też jest jakiś problem, też w jakimś kontekście ten problem występuje i to konkretne rozwiązanie miałoby swoje zastosowanie, no ale...

Poziom abstrakcji, na którym my używamy wzorców gangu czworga, archetypów jest zupełnie inny. Wzorce projektowe gangu czworga to są konkretne wzorce taktyczne, wzorce w kodzie, które zawsze w taki sam sposób możesz zaaplikować do konkretnego problemu na poziomie technicznym. Czyli jak chcesz zapewnić to, żeby była na przykład zmienność reguł biznesowych, elastyczność prowadzenia reguł biznesowych, no to prowadzasz strategię. Jak zrobić, żeby można było łatwo budować obiekt, który w różnych sytuacjach może w różny sposób wyglądać, no to bierzesz builder i tak dalej, i tak dalej. I dobór wzorca taktycznego jest bardzo prosty.

I tu nie ma tego problemu, tak poważnego tego mapowania, kiedy jaki wzorec ja mogę użyć. Zwłaszcza, że są już nawet takie narzędzia jak Sonar Cube, za którym nie przepadam tak swoją drogą, ale taki Sonar Cube, który jest Ci w stanie podpowiedzieć, o tutaj użyj takiego wzorca, o tutaj masz jakąś duplikację, jakbyś zrobił tutaj zamiast Switch Case'a, to byś wyszedł w Polymorphis, to by było to i tamto. Więc on już jest w stanie zauważyć pewne rzeczy. Archetypy natomiast to nie jest żaden framework, to nie jest żaden kawałek kodu czy biblioteka, który wsadzisz sobie wszędzie, tak jak te wzorce gangu czworga, podstawisz sobie tylko w miejsce produkt, wstawisz sobie majty, wstawisz sobie kredyt, wstawisz sobie coś tam. Nie, to tak nie zadziała. To jest bardziej sposób podejścia do modelowania.

No właśnie, jest wzorzec party, chodzi o archetyp party. Archetyp, archetyp, tak, przepraszam, wybaczcie to uproszczenie, wzorzec archetypowy mógłbym mówić, użyłem skrótu myślowego, tak, archetyp party. On jest bardzo rozbudowany, począwszy od bardzo podstawowych, takich nazwijmy to krudowych operacji na podmiocie w rozumieniu osoby, przez operacje na organizacjach, firmach, poprzez relacje pomiędzy nimi, poprzez rolę na tych relacjach i skończywszy nawet na dołączeniu do tego tak zwanego W staropolsku byśmy powiedzieli capability, czyli tego, co ty umiesz robić, co ty potrafisz i gdzie ty to robisz, czyli jakieś takie atrybuty.

To też jest element wzorca party. Przykład może być przy moim nazwisku capability hydraulik specjalizacja, rury aluminiowe, Warszawa 30 km od Warszawy. I teraz patrząc na ten archetyp party, ja jestem w stanie nawet wykorzystać go do odpowiedzi na takie pytanie, hej, znajdźmy użytkownika, znajdźmy hydraulika, który ma doświadczenie w rurach aluminiowych 15 km od Warszawy. Na takie pytanie jest mi w stanie archetyp party odpowiedzieć. I zmierzam do tego, że sam archetyp, sposób rozwiązywania tego typu problemów jest bardzo szeroki i bardzo wiele możliwości daje. I to, czy których z tych możliwości potrzebujesz, to będzie zależało od Twojego konkretnego biznesu.

Wybierzesz sobie tylko te, które Ci odpowiadają. Jeżeli nie masz wyszukiwania hydraulików, czy partnerów, czy kurierów w jakimś tam obszarze, czy w jakichś ich możliwościach, które oferują, czy w usługach, które oferują, to weźmiesz sobie to proste zarządzanie firmami, użytkownikami, czy jakieś tam podstawowe elementy. Czyli część archetypu. Dokładnie, weźmiesz sobie część. Lego Archetyp oferuje ci jakby szereg narzędzi modelarskich i nie oszukujmy się, my pokażemy także w tym kursie kod, przykłady kodu, ale to jest raczej taki wzór postępowania niż konkretny kawałek kodu, który weźmiesz i sobie copy-pasta zrobisz i wsadzisz do swojej organizacji.

Być może będziesz mieć szczęście, że to zadziała? Jest duża szansa, że jakbyś wziął jakiś konkretny kawałek, to będzie to działać, ale zawsze to trzeba dostosować do realiów, do swojego biznesu, wypełnić to danymi i z mojego doświadczenia problemem we wprowadzaniu archetypów też jest to, że właśnie ci ludzie muszą zacząć myśleć abstrakcyjnie, muszą przestać mówić klient, kurier, to, tamto, tylko patrząc... przez ludzi, mam na myśli tych, którzy to będą implementować na dole, bo biznes może stosować swoich pojęć, natomiast pod spodem, żeby wiedzieć, że kurier mapuje się na osobę czy na firmę i ma taką i taką relację z inną firmą. To jest też takie wyzwanie, można powiedzieć, we wprowadzaniu archetypów.

O archetypach, jak teraz współpracujemy przy tym projekcie od kilku miesięcy, no to staram się poszukać jak najwięcej na ten temat, ja sam też, żeby rozumieć i nie za bardzo w sumie jakieś materiały są sensowne. Mhm, mhm. Powiedziałeś o kilku archetypach. Powiedz, ile ich jest? To jest jakiś skończony zbiór? Ile jest tych archetypów i kto je tak naprawdę odkrył czy zauważył? To jest jakiś jeden autor genialny, który się gdzieś ukrywa, nie wiadomo kto to był i to pomyślał, czy to Fowler spisał to wszystko, czy to wy, czy po prostu jakaś zbiorowa świadomość programistyczna? tych autorów jest dużo więcej. Myślę, że my też się możemy do nich poniekąd zapisać, bo część, zwłaszcza ta na przykład grafowa, to jest teoria, której pewnie jeszcze dwa lata temu bym Ci nie powiedział, że traktowana jest przez nas jako archetyp, ale teraz z pełną odpowiedzialnością powiem, że zdecydowanie tak, bo jakby życie i projekty doradcze nas też na bieżąco uczą, więc my odkrywamy różnego rodzaju

No i najprościej jest popatrzeć sobie na te archetypy z perspektywy sklepu internetowego jednak, bo każdy ma katalog produktów. Jakikolwiek losowy, ulubiony swój sklep internetowy weźcie, mają produkty, jest katalog, wybieracie sobie rozmiar, rodzaj, ilość, wszystko, to wszystko działa dokładnie tak samo. Więc prędzej czy później ktoś by takie... takie rzeczy zauważył. W tej książce MDA, w początkowych rozdziałach jest też taka jakby to powiedzieć, kusząca autorów wizja tego, że docelowo każdy system będziesz w stanie sobie złożyć z klocków w takim wizualnym narzędziu. To znaczy przyjdziesz sobie ty jako na przykład kierownik sekcji IT w banku i sobie tutaj dasz.

Zgadzasz się? Dokładnie. I to może wynikać z tego, że jest tak mało na ten temat materiałów. Wzorce i tak dalej, to on to napisze, wymyśli w każdej możliwej technologii. O archetypach to on się głupi. I to wynika też z tego, że on czasami trochę myli archetypy oprogramowania z archetypami, które mamy w marketingu, mamy w psychologii od Junga, mamy archetypy marki, mamy archetypy takie, śmiakie, srakie. I archetypy oprogramowania to jest jednak coś innego, co... nie jest aż tak popularne, o czym świadczy zresztą to, że to wy zabukowaliście domenę softwarearchetypes.com, a my archetypyoprogramowania.pl. Dokładnie, dokładnie tak. AI nie został niczym nakarmiony.

Nie ma, tak jak wspomniałem, wielu pozycji tych książek, jest 4 z 5, z czego tylko dwie... Nie patrzą tylko i wyłącznie na dane, chociaż patrzą głównie na dane. Najlepszą z pozycji, która mówi o właśnie tym aspekcie behawioralnym, momentami, to jest książka analizy z Patterns Martina Fowlera. No i właśnie już teraz nawet przez to, przez różnicowanie, jakbym wam mógł opowiedzieć, jak my myślimy o archetypach, a jak myślał świat do tej pory już ten taki w tym skromnym zbiorze literatury, no to Tam archetypy to były po prostu odpowiedzi na pytania, jak ja mam zamodelować dane w mojej bazie danych, a nie mogę chyba mówić nazw tutaj baz danych, w mojej relacyjnej dużej bazie danych, za którą płacę milion złotych.

Pokazano pierwszych 25 dopasowań — doprecyzuj frazę, aby zawęzić wyniki. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.