DevTalk Trio S03E07 – Taktyczne wzorce projektowe vs. LLM
Jakub Kubryński, Łukasz Szydło i Kuba Pilimon w kolejnym odcinku DevTalk Trio! Dziś rozmawiają o tym, dlaczego faza projektowania to wciąż domena człowieka i jak mądrze używać LLM-ów, żeby nie produkować pięknie wyglądającego, ale bezużytecznego kodu. Niby szeroki temat, który przewija się ciągle i wszędzie, ale z tego odcinka dowiesz się: Czy LLM potrafi samodzielnie […] The post DevTalk Trio S03E07 – Taktyczne wzorce projektowe vs. LLM appeared first on DevTalk.
Więc pytanie, jak LLM radzi sobie z tym, bo już wiemy, że sobie średnio radzi z wzorcami takimi jak Łukasz, strategicznymi dzisiaj. Pytanie, czy jakby LLM jest w stanie dość fajnie budować np. value objecty, fabryki i takie dość wszędobylskie wzorce Wzorce projektowe właśnie na etapie tworzenia specyfikacji. Zanim Łukasz powiesz, ja tylko jedno zdanie doprecyzowujące, bo tak, ja mogę użyć LLM-a do stworzenia specki, to będzie metaspecka, żeby zrobić to dobrze i to właśnie tego chcę użyć, żeby zaprojektować jakąś rzecz w taki sposób, żeby potem implementacja była łatwa, ale o tym może później, bo Łukasz chciał coś mi powiedzieć i nie daliśmy mu jeszcze przez sześć minut już.
No nie wiem, kilka, tak? Ale to naprawdę większość... Po prostu leci, nie? Tylko jakieś takie, które wymagają... Ale wiesz co, Łukasz, sorry, że Ci przerwę. Pytanie, czy wzorce taktyczne rozwiązuje jakieś konkretne problemy. Bo dla mnie wzorzec taktyczny to jest coś, co pozwala mi pewne rzeczy lepiej albo łatwiej zrobić, ale to nie jest jakiś game changer. To, czy ja, wiesz, użyję value objecta, czy nie, to nie spowoduje, że nagle rozwiążę jakiś problem, bądź go nie rozwiążę, tak? To, czy ja użyję agregatu, czy nie, nie spowoduje, że nagle nierozwiązywalny problem stał się rozwiązywalny, bo wymyśliłem agregat. Tak to działają bardziej archetypy. A wzorce taktyczne powodują, że po prostu pewne rzeczy jest ci łatwiej zrobić. Nie o tym rozmawiamy, że wzorce taktyczne są bardzo implementacyjną kwestią.
To jest trochę taka dyskusja, czy użyję JPA, czy użyję Dżuka. To nie robi jakby różnicy. Jasne, są pewne rzeczy, które jest mi łatwiej, efektywniej zrobić na przykład jukiem, niż orać jakieś entity grafy w JPA i tak dalej. I pewnie, że jak mam wyciągnąć, przetrzebać pół bazy, żeby wyciągnąć jakiegoś prostego DTO, to użyję juka albo jakiegoś innego natywnego SQL-a, a nie będę się rypał ORM-ami. Natomiast ja bym nie powiedział, że wzorce taktyczne to jest coś, co zmienia sposób rozwiązywania problemu. To zmienia sposób pisania kodu. Ale to jest już czysty szczegół implementacyjny, czy używam wzorca taktycznego, czy nie? Wydaje mi się, że to jest z dwóch stron, tak jak słucham was z boku. I tak jak Łukasz mówił o wzorcach taktycznych, to ma na myśli pewnego rodzaju wzorce mentalne rozwiązania pewnej klasy problemów, którą na przykład mogę nazwać...
Tak, tak. Tak, tak, jeszcze dorzucę jedną rzecz, bo dla mnie właśnie jak mówię o wzorcach taktycznych, to ja miałem na myśli właśnie nasze agregaty, repozytoria, value objecty, serwisy domenowe czy aplikacyjne. I dla mnie to jest właśnie taki zestaw klocuszków, przy pomocy których jakiś problem sobie rozwiązuje. Bo to jest ten zestaw tych klocków, z których ja moduluję rozwiązanie. Nieważne jaki będę miał problem, To ja użyję w większości, powiedzmy w 80% przypadkach użyję właśnie... Tych generycznych klocuszków, oczywiście nazywając je tam odpowiednio, bo tutaj widzisz Gerga Dorder, tutaj będzie jakaś inna Gerga, ale ja generalnie użyję tych klocuszków. I o to mi chodzi, że posiadając właśnie zestaw takich klocków, one mogą wychodzić poza DDD. Ja specjalnie mówię o tych blokach, żebyśmy się tylko nie przywiązywali jakby do tych, bo jak mamy jakieś tam problemy natury bardziej właśnie obliczeniowej, kalkulacyjnej, no to tutaj potrzebujemy trochę innych.
embeddable albo właśnie value objectem, który jesteśmy w stanie gdzieś wrzucić. Raczej jedzie na YOLO, czyli dodaje tam 15 kolumn I tak dalej. Raczej właśnie nie wyłapuje tego, że tutaj da się poprawić ten kod value object. Drugie pytanie, czy to ma teraz znaczenie? Jeżeli to LLM pisze ten kod, to czy mnie boli to, że tam nie ma value objecta albo jest? To ja odniosę się do pierwszego pytania, bo ja mam troszkę inne wrażenie, że może mi w tym pomóc i trochę się chciałbym skupić na tym, co powiedzieliście obaj. Łukasz mówiłeś o tym, że skille implementacyjne to jest prosta rzecz, bo najpierw i tak masz fazę projektowaną i użyłeś przykładu, że robisz na milo karteczki. Nie mówiłem, że prosta, powiedziałem, że... Wtórna, łatwiejsza może tak.
Łatwiejsza niż ta część projektowana za pomocą karteczek. Kuba Ty mówił z kolei, że stosowalność wzorca To jest zabior game changer albo niestosowalność, a nie sama faza implementacyjna, czyli gdzieś tam ten ciężar, że tak powiem, intelektualny w Waszych wypowiedziach był w tym samym miejscu, bym powiedział. Czyli na fazie implementacyjnej. I teraz z mojego doświadczenia Mogę użyć też takiego narzędzia do tego, żeby zadało mi pewnego rodzaju meta pytania. Ja na przykład używam sobie kilku różnych skilli do tego, żeby zobaczyć przykładowo. Nie wiem, masz listę comment, nie? Zablokuj slot, zwolnij slot, wyłącz zasób, zdefiniuj slot. Sztampowy przykład jak już tam dostępność zasobów. Czyli taka klasyczna walka o zasoby.
Rozpoznawane przez różnego rodzaju narzędzia. I znowu jest to szybsza praca niż to, co do tej pory musiałem robić. Ale game changer dopiero jest wtedy, kiedy takiego skilla użyje człowiek, który powiedzmy tych pytań wbudowanych naturalnie nie ma. Gdzieś tam czai mniej więcej o co chodzi, ale za pomocą pewnego rodzaju wizarda może dostać na przykład takie rozwinięcie tego problemu, o którym przed chwilą powiedziałem z tymi zasobami, że masz tę parę konfliktujących się komend. Niech to będzie ten zdefiniuj slot i zablokuj slot. To się wzajemnie konfliktuje z jakiegoś powodu, nieważne z jakiego. Weźmy taki przykład. W teorii taki konflikt istnieje i na macierzy widać, że istnieje, bo ktoś przecież może blokować slot, który jest właśnie w fazie definicji, ale teraz pozostaje pytanie domenowe, które naturalnie projektant by zadał zawsze. Czy ten konflikt jest realny? Czy może proces biznesowy w naszej organizacji akurat się tak układa i sprawia, że te dwie komendy nigdy nie trafią do systemu w tym samym czasie?
Łukasz, chciałeś coś powiedzieć? No tak, bo moim zdaniem to jest mało potrzebne. W sensie, że nie do końca się z wami zgodzę. Pod takim kątem, że Co jest wejściem do mojego procesu? W sensie jak ja projektuję? Ja nie zmieniam procesu projektowania. Ja jak będę myślał czy projektował, to ja będę projektował tymi building blockami, bo ja tutaj bym rozróżnił te dwie rzeczy, bo ty Kuba wydaje mi się zmiksowałeś przez chwilę wzorce projektowe z wzorcami taktycznymi. I teraz jeżeli mamy jakąś sesję modelowania, no to jakimi klockami modelujemy? Ja explicit modeluję agregatem, czy właśnie jakimś serwisem aplikacyjnym, czy serwisem domenowym, czy value objectem. To są czasami słowa. To są słowa czasami, które się nawet po prostu pojawiają podczas dyskusji.
Pokazano wszystkie 8 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Kliknij, aby znaleźć fragmenty, w których pada.
Jakub Kubryński, Łukasz Szydło i Kuba Pilimon w kolejnym odcinku DevTalk Trio! Dziś rozmawiają o tym, dlaczego faza projektowania to wciąż domena człowieka i jak mądrze używać LLM-ów, żeby nie produkować pięknie wyglądającego, ale bezużytecznego kodu. Niby szeroki temat, który przewija się ciągle i wszędzie, ale z tego odcinka dowiesz się: Czy LLM potrafi samodzielnie […]
The post DevTalk Trio S03E07 – Taktyczne wzorce projektowe vs. LLM appeared first on DevTalk.