17 lip 2024 POIT #252: Wpływ GenAI na programistów i automatyzację programowania
Witam w dwieście pięćdziesiątym drugim odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest wpływ GenAI na programistów i automatyzację programowania.
Dziś moim gościem jest Grigorij Dudnik – AI developer, rozwijający wieloagentowy system Clean Coder (open-source), którego używa do półautomatycznego pisania kodu w startupie TakŻyli.pl, w którym pełni rolę CTO. Kontrybuował do Microsoft Autogenu – popularnego frameworku do orkiestracji AI agentów. Autor TinderGPT – autonomicznego asystenta do aplikacji randkowych. Poza tematami agentowymi, robi badania nad stworzeniem myślącego robota, uruchamiając duże modele językowe na jednopłytkowych komputerach.
W tym odcinku o wpływie GenAI na programistów rozmawiamy w następujących kontekstach:
- bieżący stan agentów AI do automatyzacji programowania
- jak się sprawdzają systemy agentowe przy pisaniu kodu produkcyjnego?
- czy jest możliwe stworzenie w pełni autonomicznego AI programisty?
- czy AI zastąpi programistów?
- czy w dobie dużych modeli językowych warto się specjalizować w określonej niszy technologicznej?
Subskrypcja podcastu:
- zasubskrybuj w Apple Podcasts, Google Podcasts, Spreaker, Sticher, Spotify, przez RSS, lub Twoją ulubioną aplikację do podcastów na smartphonie (wyszukaj frazę „Porozmawiajmy o IT”)
- ściągnij odcinek w mp3
- poproszę Cię też o polubienie fanpage na Facebooku
Linki:
- Profil Grigorija na LinkedIn – https://www.linkedin.com/in/grigorij-ai-developer/
- Youtube – https://www.youtube.com/@gregstech6542
- Link do Clean Codera – https://github.com/GregorD1A1/Clean-Coder-AI
- SOLID.Jobs – https://solid.jobs/
Wsparcie na Patronite:
Wierzę, że dobro wraca i że zawsze znajdą się osoby w bliższym lub dalszym gronie, którym przydaje się to co robię i które zechcą mnie wesprzeć w misji poszerzania horyzontów ludzi z branży IT.
Patronite to tak platforma, na której możesz wspierać twórców internetowych w ich działalności. Mnie możesz wesprzeć kwotą już od 5 zł miesięcznie. Chciałbym oddelegować kilka rzeczy, które wykonuję przy każdym podcaście a zaoszczędzony czas wykorzystać na przygotowanie jeszcze lepszych treści dla Ciebie. Sam jestem patronem kilku twórców internetowych i widzę, że taka pomoc daje dużą satysfakcję obu stronom.
👉Mój profil znajdziesz pod adresem: patronite.pl/porozmawiajmyoit
Pozostańmy w kontakcie:
- 📧 Jeśli masz jakieś pytania lub komentarze, pisz do mnie śmiało na krzysztof@porozmawiajmyoit.pl
- 📩 Zapisz się na newsletter, aby nie przegapić kolejnych ciekawych odcinków
- 🎙 Subskrybuj podcast w lub
Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner (posłuchaj)
Transkrypcja podcastu
To jest 252. odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiam o wpływie Gen AI na programistów i automatyzację programowania.
Wszystko, co potrzebujesz, linki, notatka, transkrypcja czekają na porozmawiajmyoit.pl/252.
Myślisz o zmianie pracy lub przebranżowieniu się do IT? Zajrzyj na SolidJobs, gdzie znajdziesz przejrzyste oferty z informacją co do zarobków, technologii i projektów.
Nazywam się Krzysztof Kempiński, prowadzę ten podcast oraz jestem autorem książki Marka Osobista w branży IT. Mam misję polegającą na poszerzaniu horyzontów ludzi z branży IT. Tak się składa, że możesz bardzo mi pomóc w jej realizacji poprzez wystawienie oceny w aplikacji, w której tego słuchasz lub podzielanie się odcinkiem w social mediach. A teraz zapraszam Cię mi już do odcinka.
Odpalamy!
Cześć! Mój dzisiejszy gość to AI developer rozwijający wieloagentowy system Clean Coder, którego używa do półautomatycznego pisania kodu w startupie takżyli.pl, w którym to zresztą pełni rolę CTO. Kontrybuował do Microsoft AutoGen, popularnego frameworku do orkiestracji AI agentów. Autor Tinder GPT, autonomicznego asystenta do aplikacji randkowych. Poza tematami agentowymi robi badania nad stworzeniem myślącego robota, uruchamiając duże modele językowe na jednopłytkowych komputerach. Moim i Waszym gościem jest Grigorij Dudnik.
Cześć, Grigorij, bardzo miło mi gościć Cię w podcaście.
Cześć, Krzysiek. Dzięki za zaproszenie.
To przyjemność po mojej stronie. Dzisiaj w podcaście po raz kolejny poruszamy ważny, modny i gorący ostatnio temat wpływu generatywnej sztucznej inteligencji na programistów i na proces wytwarzania oprogramowania. Dzisiaj natomiast nieco taką inną perspektywę, mam wrażenie, poruszymy z Grigorijem, właśnie agentową: tego, jak możemy my jako programiści wspomóc się AI agentami, aby ten proces wytwarzania programowania przebiegał szybciej, sprawniej i łatwiej na koniec dnia. Więc myślę, że bardzo ciekawy temat.
Grigorij ma dużo praktycznego doświadczenia właśnie z nie tylko AI, ale również agentami, więc fajnie będzie usłyszeć od osoby, która ma tego typu doświadczenia, jak AI w takim wydaniu może nam programistom pomóc.
Zanim do tego jednak przejdziemy, to chciałbym Cię, Grigorij, zapytać, czy słuchasz podcastów i czy może jakieś ciekawe audycje na Twojej playliście goszczą?
Tak, jest kilka podcastów, których albo słucham okazjonalnie, albo przynajmniej słuchałem w przeszłości. I na pewno Twój podcast jest tutaj warto wymienienia.
Dziękuję.
Tak, bo pokazuje różne odległe zakątki branży IT, o których nawet nie wiedziałem, a też z ciekawością się dowiedziałem o ich istnieniu w ogóle i o tym, jak wyglądają. Poza tym warto wymienić tutaj podcast Cyberświat Matusza Chroboka, który w dosyć taki prosty, przyjemny do posłuchania sposób, też zrozumiały dla osób nietechnicznych, tłumaczy o nowinki technologiczne każdego tygodnia. Też Pierwsze kroki w IT Mateusza Bogolubowa, który to ma podcast dosyć zbliżony do Ciebie formatem, lecz skupia się na osobach początkujących i osobach się przebranżawiających. Oraz Automatyzacja i AI w biznesie Jakuba Masztalskiego, który dla osób biznesowych tłumaczy, w jaki sposób wdrożyć AI w swoim biznesie i kiedy warto to robić.
Właściwie to każdy podcast, w którym akurat kiedyś miałem okazję wziąć udział, myślę, że jest zdecydowanie warty polecenia, na pewno jest ciekawy dla mnie i cóż, zapraszają tam samych fajnych gości.
Konkretna lista rekomendacji, dzięki za to jak najbardziej się pod tym podpisuję i też mogę polecić właśnie te audycje. Dobrze Grigorij, to chciałbym Cię na początku zapytać o to, jaki jest stan AI agentów, głównie związanych z automatyzacją programowania, bo na tym się tutaj skupiamy na połowę roku 2024. Jakiego typu frameworki mamy do dyspozycji, jak one wypadają, czy da się je jakoś porównać do siebie?
Właśnie, bo tutaj ten temat agentów się, nie wiadomo, bardzo szybko się rozwija, więc tutaj warto właściwie zacząć od definicji, czym właściwie są ci agenci. Otóż teraz agenci są takim buzzwordem właściwym na wszystko, co ma jakieś ???04:19 w środku, a się mówi, że jest agentem, lecz w moim rozumieniu taki agent się różni od takiego zwykłego pipeline’a LLM-owego tym, że w zwykłym pipelinie mamy do czynienia z góry ustaloną strukturą. Czyli mamy jakiegoś LLM-a, po którym mamy wywołanie jakiegoś narzędzia, potem znowu jakiegoś LLM-a, forsujemy wyjście tego LLM-a i w zależności od tego, co mamy na wyjściu, to wywołujemy znowuż albo to, albo tamto narzędzie.
Lecz w przypadku agenta mamy do czynienia z takim zapętleniem wywołań tego LLM-a. Czyli np. dajemy mu zadanie, w naszym przypadku mówimy o programowaniu, więc też dajemy mu zadanie, że musi zedytować jakiś kod, I ten agent w pierwszym wywołaniu LLM-a patrzy, że dobra, że jest taki kod, teraz zmienia funkcję numer 1 i wywołuje narzędzie do zmiany funkcji numer 1 na jakąś lepszą. Zmienia ją, potem wywołuje kolejny raz znowuż tego LLM-a, zmienia funkcję numer 2, powiedzmy, potem jest kolejna iteracja, tam dodaje funkcję numer 3 itd., aż do samego końca. Czy to zadanie, czy pieniędzy na rachunku naszego dostawcy LLM-ów.
Tak że tacy agenci są używani do różnych celów, od jakichś domowych automatyzacji do dużo poważniejszych, jak programowanie na przykład. I swojego agenta można stworzyć za pomocą takich frameworków jak AutoGen, CrewAI lub LangGraph, lub też napisać go samemu na piechotę w języku programowania.
Ale w ostatnim czasie też się pojawiło sporo takich frameworków stricte do programowania, agendowych frameworków, które stricte programują i które robią to dobrze. Ponieważ mają takie wyspecjalizowane narzędzie, stricte do tego, mają bardzo dobrze przemyślane przepływy informacji też wewnątrz tego frameworka i uwzględniają różne wady i zalety, głównie wady tegoż LLM-a i robią coś, żeby jednak tę wadę zniwelować. Tak że to są takie narzędzia jak Devin, OpenDevin, SWE-agent, Aider lub tworzony przeze mnie Clean Coder.
I tego jest całkiem sporo w ostatnim czasie. Właściwie to znam osobiście wielu kolegów, którzy też tworzą jakiegoś takiego agenta do programowania. I tutaj nawet miałem ostatnio taką dygresję, czemu właściwie tak jest, że jest sporo agentów do programowania, a nie ma np. agentów do tworzenia jakichś innych czynności inżynierskich, jak inżynieria mechaniczna, elektroniczna, czy inne. I dochodzę do wniosku, że jednym z powodów jest to, że stworzenie narzędzia do pisania kodu jest po prostu łatwiejsze. Elementy też są wytrenowane do pisania kodu.
Ale drugi taki powód, najważniejszy, myślę, że jest taki, że osoby, które się znają na AI i są zdolne stworzyć taki framework, też są programistami już z automatu. Lecz mało jest takich osób, które by się znały na AI, a też przy okazji np. znały się na tej inżynierii mechanicznej i były w stanie taki framework do tego stworzyć.
Tak że tutaj warto też powiedzieć o takim czymś jak SWE Benchmark, czyli narzędziu do ewaluacji takich frameworków do programowania. Jest to zestaw zadań programistycznych, prawdziwych issuesów z GitHuba. W wersji mini jest to 300 zadań, za pomocą których możemy przetestować nasz framework. I w tej chwili największy score, największy wynik z tego SWE benchmarka otrzymał framework Aider z wynikiem 26,33%. Czyli taki AI potrafił w trybie w pełni autentycznym rozwiązać niewiele ponad 1/4 dosyć prostych zadań.
Oczywiście warto tutaj też powiedzieć, że w chwili wydania tego podcastu myślę, że ten wynik już będzie inny. Też jeśli mnie zapytasz, ile tych punktów SWE dostałby Clean Coder, to powiem Ci, że nie wiem, bo akurat, żeby mieć swój framework w tym, to musiałbym albo wszystkie te 300 przykładów jakoś ręcznie przepuścić przez Clean Codera, albo napisać jakiś dodatek, który by zautomatyzował to testowanie i też poświęcić na to sporo czasu, więc pewnie, jak można się domyślić, wolałem jednak się skupić na faktycznie rozwijaniu tego frameworka i tworzeniu rzeczy, które są przydatne na produkcję, niż na po prostu ewaluację.
Tak że tacy agenci są używani do różnych celów, od jakichś domowych automatyzacji do dużo poważniejszych, jak programowanie na przykład. I swojego agenta można stworzyć za pomocą takich frameworków jak AutoGen, CrewAI lub LangGraph, lub też napisać go samemu na piechotę w języku programowania.
Ale w ostatnim czasie też się pojawiło sporo takich frameworków stricte do programowania, agendowych frameworków, które stricte programują i które robią to dobrze. Ponieważ mają takie wyspecjalizowane narzędzie, stricte do tego, mają bardzo dobrze przemyślane przepływy informacji też wewnątrz tego frameworka i uwzględniają różne wady i zalety, głównie wady tegoż LLM-a i robią coś, żeby jednak tę wadę zniwelować. Tak że to są takie narzędzia jak Devin, OpenDevin, SWE-agent, Aider lub tworzony przeze mnie Clean Coder.
Jasne, rozumiem. 1/4 to z jednej strony dobrze, z drugiej strony dość jeszcze daleko, jeśli chodzi o to, czym się nas straszyło jeszcze jakiś czas temu, czyli zastąpieniem AI programistów. Myślę, że póki co nam to nie grozi. Co prawda, co jakiś czas pojawiają się takie głosy, ale jako branża chyba już zrozumieliśmy, że AI to jest jakiś rodzaj pomocy, to jest jakiś rodzaj wsparcia podczas programowania, a niekoniecznie zagrożenie. To jest oczywiście temat na zupełnie inną dyskusję, natomiast myślę, że dojrzewamy jako branża i rozumiemy, że to jest po prostu rodzaj narzędzia.
I wspomniałeś tutaj o tym, że wykorzystujesz tego typu rozwiązania do pisania kodu produkcyjnego, jakby nie było tak, bo w Twoim startupie wykorzystujesz AI agentów. Chciałbym Cię zapytać, czy to jest narzędzie, które jest już na tyle gotowe, na tyle dojrzałe, żeby wykorzystywać właśnie je do pisania kodu produkcyjnego? Bo możemy sobie o generatywnej sztucznej inteligencji myśleć jako o rodzaju pomocy przy rozumieniu już napisanego kodu, żeby nam wyjaśniła, jak coś działa. Możemy użyć do napisania komentarzy, do napisania testów, do przetłumaczenia z jednego języka na drugi. To jest oczywiście bardzo pomocne, chociażby przy nauce programowania. Natomiast zastanawiam się, czy ta dojrzałość tych rozwiązań jest już na tyle duża, by pisać w nich kod produkcyjny.
Bardzo ciekawe to, co powiedziałeś. Po pierwsze tutaj skomentuję też, że ta 1/4 została uzyskana w trybie pełni autonomicznym, ale np. w przypadku Clean Codera on jest jednak skupiony na produkcji rzeczy produkcyjnych i tutaj nieraz jest potrzebna właśnie ta ingerencja ludzka, czyli pomaganie mu, sugestia, że coś musi zrobić inaczej, coś tam zrobił jednak nie tak, prośba, żeby coś poprawiał. To jest mega ważny element, taka akceptacja ze strony człowieka. Więc jest niestety jeszcze potrzebna. Niestety albo stety, to już zależy, jak kto na to patrzy.
Więc co do w ogóle historii powstania Clean Codera, to było tak, że zostałem jakiś czas temu CTO w startupie takżyli.pl i miałem zadanie napisania aplikacji webowej. Sama aplikacja nic innowacyjnego nie wnosiła, czyli po prostu aplikacja zwykła, która ma frontend we VUE i backend w FastAPI, lecz innowacyjne właśnie było to podejście, że stwierdziłem, że napiszę to za pomocą AI. Bo są ci agenci, to wystarczy, że wezmę pewnie jakiegoś autogena, dam mu parę narzędzi do kodowania i zaraz już cała aplikacja będzie gotowa.
Tak myślałem na początku, jednak niestety aż tak kolorowo nie było. Musiałem zmienić wiele frameworków po drodze, musiałem dodać dużo funkcjonalności, spotkałem się z wieloma problemami, z którymi, jak czytam swoją drogą, spotkali się też twórcy np. tego Aidera czy innych popularnych frameworków i też dlatego myślę, że akurat ten SWE score dla Clean Codera to wcale mniejszy od tych score’a by nie był, bo też tutaj zostało stosowane podobne rozwiązanie, więc w jaki sposób taki Clean Coder radzi sobie z zagadnieniami produkcyjnymi?
Otóż większość kodu w tym startupie, tak myślę, że z 80-90% napisałem za jego pomocą. Więc to już o czymś świadczy, że jednak używam go całkiem aktywnie. I z takimi zadaniami prostymi, gdzie po prostu mamy coś albo relatywnie prostego do zrobienia, albo mamy do czynienia z czymś powtarzalnym, czyli że już jakaś strona jest zrobiona i musimy na podobnych zasadach stworzyć też jakąś kolejną stronę, to z takim czymś radzi sobie raczej bezproblemowo, po prostu trzeba akceptować wszystko, jak leci, co on proponuje i będzie gotowe.
Z zadaniami bardziej skomplikowanymi, wymagającymi jakiejś takiej kreatywności, pomyślunku z jego strony, to już bywa różnie. Czasami też sobie radzi bez problemu, czasami nie radzi sobie w ogóle i trzeba po prostu tam pisać to ręcznie. Jednak w zdecydowanej większości jest tak, że radzi sobie, ale trzeba mu pomagać. Po prostu proponuje jakiś plan i trzeba mu zasugerować, że w tym planie ten punkt jest do zmiany, ten do wywalenia, to coś zrób inaczej. Przejdźmy z nim kilka iteracji edycji tego planu. Później też jak pisze ten kod, to czasami zasugerować, żeby użył jakiegoś innego narzędzia czy coś.
Więc tak, ostatecznie robię te zmiany, lecz z pomocą człowieka. Tak że tak, są potrzebne pewne nakłady czasowe czasami, ale jak już to działa, jak już siedzimy przy komputerze i patrzymy, jak właściwie same te zmiany się wprowadzają, kod sam się zmienia, pliki same się pojawiają, dzieje się po prostu magia.
I to jest też ciekawe, bo często jest tak, że to, co on proponuje, właściwie by zadziałało. Mógłbym zaakceptować, tak jak leci to, co on chce, lecz te zmiany nie byłyby takimi zmianami optymalnymi. Czyli np., jak miałem za zadanie dodanie podstrony projektu, był taki element rodzicielski, który miał kilka takich stron, podstron dzieci. I trzeba było stworzyć kolejne to dziecko. Było zrobione tak, że ten element rodzicielski robił request do backendu i otrzymywał jakieś tam dane i potem wysłał te dane do tych stron dziecięcych. I nasz Clean Coder z jakiegoś powodu akurat przegapiał ten element rodzicielski i nie dodał sobie go do kontekstu, więc zaczął tworzyć ten element dziecka tak od zera i zaproponował, żeby w tym elemencie dziecka właśnie dodać ten request do backendu.
Zadziałałoby to i owszem, lecz nie byłoby to optymalne, gdybyśmy w każdym elemencie dziecka robili osobny request do backendu. Lepiej zrobić jeden, a dobrze. Tak że ta część związana z planowaniem architektury jest tutaj niezwykle ważna i przede wszystkim tutaj, jak widzimy, człowiek jest bardzo potrzebny.
No tak, tutaj jakby rozwiewasz ten mit, że póki co jesteśmy w stanie zastąpić programistę właśnie takim AI agentem. Natomiast spróbujmy zabawić się w przewidywanie przyszłości i pomyślmy, co byłoby potrzebne do tego, żeby takiego autonomicznego AI programistę stworzyć. Z tego, co rozumiem, z tego, co mówisz, póki co jeszcze tam nie jesteśmy. To są oczywiście pewne prace, chociażby to, co robisz w ramach Clean Codera, po to, żeby rozwijać te technologie, po to, żeby zbliżać się do tego autonomicznego, kierowanego AI programisty, natomiast póki co tam nie jesteśmy.
Czego nam według Ciebie brakuje pod względem technologicznym, a może powiesz o czymś również szerzej, może to nie tylko jest kwestia technologii, natomiast czego nam właśnie brakuje, żeby tę ideę takiego AI programisty zrealizować i według jakich zasad, według jakich składowych taki programista AI powinien działać, żeby w miarę autonomicznie realizować powierzone mu zadania?
Uważam, że największym wąskim gardłem tutaj jest sama inteligencja modeli językowych. Otóż słyszymy ostatnio, że faktycznie te modele się rozwijają, wychodzą coraz to nowsze, coraz to lepsze, lecz tak naprawdę jak spojrzymy na historię ostatniego roku, odkąd pojawił się GPT-4, to od tego czasu nie było właściwie żadnego takiego przełomowego kolejnego modelu, który by mocno przebijał inteligencją GPT-4. Później, powiedzmy, od Open AI pojawiło się to GPT-4 Turbo, które w momencie przynajmniej jego wypuszczenia nie było inteligentniejsze od GPT-4, było wręcz głupsze.
Niedawno mamy do czynienia z tym nowym GPT-4o, które też w momencie wypuszczenia jest głupsze niż GPT-4 Turbo. I to nie jest tak, że te modele degradują, bo je tam w międzyczasie Open AI rozwija, więc też jakoś tam się stają mądrzejsze, lecz to nie jest jakaś drastyczna zmiana. Też na szczęście powstają różni inne providerzy, np. Anthropic wypuścił tego Claude Opus 3, który to był inteligentniejszy od GPT-4, przynajmniej przez pewien czas. Lecz, jak mówię, nie widać tutaj tego przełomu i to jest dosyć martwiące, bo zastanawiam się, czy aby nie trafiliśmy na pewną taką ścianę w rozwoju tych modeli.
Mam nadzieję, że nie, mam nadzieję, że jednak będzie się to dalej rozwijać, zwłaszcza że są tu jeszcze różne pola do odkrycia w architekturze modeli, ale zobaczymy, jak to będzie.
Tak że kolejną rzeczą jest też długość kontekstu. Otóż agenci wymagają długiego kontekstu od modelu, bo trzeba dużo informacji wywołać do modelu, żeby on cokolwiek z tym informacjami zrobił. Różne pliki, różne informacje o samym projekcie, różne sugestie, jak coś pisać, jak czegoś nie pisać, same instrukcje, prompty. To wszystko w przypadku zwłaszcza agentów wymaga kontekstu, zwłaszcza że też agenci robią te iteracje i przy każdej iteracji też jakby ten kontakt się nawarstwia.
Oczywiście tutaj w Clean Coderze walczę z tym i robię ten kontekst jak najczystszym. Uważam, że jest jedną z kluczowych rzeczy w AI zadbanie o ten kontekst. Dlatego ten Clean Coder jest clean, bo będzie czysty kontekst. Ale wciąż to jest wyzwanie. I owszem, tutaj słyszymy cały czas, że ci twórcy modeli stworzyli jakiś model, który ma 100 tys. tokenów kontekstu, 200 tys., milion, prześcigają się, który to ma więcej tych tokenów. W praktyce zaś używa się maksymalnie 2 tys. większości przypadków. Lecz moim zdaniem porównanie modele pod względem tych maksymalnej długości kontekstu jest zupełnie bez sensu.
To jest tak trochę jak z bronią strzelecką. Nikt nie porównuje dwóch karabinów pod względem maksymalnego zasięgu tych karabinów. Bo co z tego, że karabin strzela nam na 5 km, jak z tej odległości, ani nawet z 1/10 tej odległości, nie będziemy w stanie nikogo trafić. Porównuje się zaś taki parametr jak maksymalna skuteczna długość zasięgu, czyli taka odległość, w której jesteśmy w stanie trafić sylwetkę ludzką. Więc tak samo tutaj uważam, że w przypadku modeli językowych warto byłoby wprowadzić taki parametr jak maksymalna skuteczna długość kontekstu, czyli taka długość kontekstu, przy której to nasz model nie zapomni, dajmy na to, 90% podanych do niego informacji. Takie porównanie już miałoby dużo więcej sensu.
Także tak, myślę, że tutaj modele są tym największym wąskim gardłem, lecz pomyślmy, co właściwie trzeba byłoby zrobić, żeby takiego AI programistę stworzyć.
Moim zdaniem trzeba byłoby wziąć takiego Clean Codera jako bazę i spróbować obejść te ograniczenia w inteligencji modeli za pomocą fine tuningu. Czyli dotrenowanie modelu pod ten konkretny use case. Zebrać wiele danych z tego, jak obecne modele pracują, odfiltrować je, pokazać za pomocą tych danych modelowi, w jaki sposób powinien pracować, w jaki sposób wykonywać te zadania i w taki sposób zrobić go inteligentniejszym w tym konkretnym kontekście.
Tak, do tego można by do Clean Codera dodać wiele innych ciekawych elementów, jako np. wiedzę o tym projekcie, żeby wiedział, w jaki sposób ten projekt został zorganizowany, gdzie ten kod pisać, gdzie go nie pisać, gdzie są jakieś style wspólne, gdzie są jakieś ustawienia itd. Na tą swoją drogą już prowadzę pracę, ale na razie na dosyć wczesnym etapie.
Do tego trzeba by dać moduł od ogólnego planowania projektu, żeby nie były to takie randomowe zmiany kierowane przez człowieka, lecz AI samo sobie planowało te zmiany krok po kroku, być może zintegrować go z naszym Trello, w którym będzie, czy tam Jirą, w którym będzie te zadania zapisywać. Dalej dać takiego AI supervisora, też takiego agenta, który by patrzył, czy zmiany, które wprowadzają ci agenci, są jakby zgodne z naszą strategią, zgodne z tym, co sobie postanowiliśmy, zgodne z naszą architekturą. I jeśli nie, to ten supervisor mógłby cofnąć tego agenta i wycofać tę zmianę.
Do tego też przydałby się sensowny dostęp do internetu, czyli żeby nasz agent mógł wyszukiwać w internecie informacje o nowych frameworkach i sobie zapisywać w pamięci te istotne informacje, też jakiś sensowny dostęp do konsoli, żeby mógł uruchamiać z powodu tej konsoli różne rzeczy, a przy okazji też wiele nie zepsuć.
Tak że brzmi to wszystko, jakby już teraz by się dało stworzyć takiego agenta, przynajmniej w teorii, lecz w praktyce mi się wydaje, że znowu pojawiają się różne tutaj problemy, ograniczenia po drodze i będą problemy z tym wszystkim, więc nie będziemy w pełni autonomiczni, co nie zmienia faktu, że tak, że warto takie działanie podejmować i rozszerzyć nasz framework i go ulepszać, bo nawet jak nie będzie w pełni autonomiczny, to i tak będzie całkiem fajny.
Jasne. Mam wrażenie, że są takie dwa skrajne obozy albo dwie skrajne opinie na temat tego, jak AI w ogóle będzie się rozwijało. Niektórzy wieszczą kolejną zimę, niektórzy natomiast są pełni optymizmu i wiary w to, że ta technologia cały czas się będzie rozwijać. Ty, jak rozumiem, bardziej jesteś w tym obozie optymistycznym, który widzi szansę i pewnie bardzo dobrze, inaczej nie działałbyś i nie robił tego, co robisz. Natomiast zastanawiam się, czy właśnie te prace, które prowadzisz i te konkurencyjne projekty, które również w podobnym kierunku działają, czy to nie jest takie trochę podcinanie gałęzi, na której się siedzi?
Oczywiście nie chcę tutaj mówić o zastępowaniu programistów przez AI, ale jestem ciekawy, jak właśnie patrzysz na może zmieniającą się rolę programisty w takim wydaniu, jeśli tego typu narzędzia, o których tutaj rozmawiamy, będą dużo dojrzalsze i będą w stanie dużą część pracy wykonywać, powiedzmy, pół autonomicznie.
Akurat mam w życiu tyle różnych zadań do zrobienia, że ja się cieszę, jak mogę stworzyć coś, co mnie zastąpi w części tych zadań i mnie odciąży. Także tak. Więc co do takiego zastąpienia programisty, czy ono w ogóle byłoby możliwe? To jest bardzo ciekawy temat.
Otóż ogólnie, tutaj bez urazy dla naszych kolegów po fachu, ale uważam, że programowanie jest dosyć prostym zawodem, przynajmniej to stricte programowanie i tak ostatecznie sprowadza się do jedynie edycji plików tekstowych. Tak że w wyróżnieniu od innych zawodów inżynierskich w programowaniu nie mamy czegoś takiego jak walka z żywiołem. Jak np. jesteś inżynierem elektronikiem i projektujesz płytkę PCB, to musisz wziąć pod uwagę coś takiego jak zakłócenie elektromagnetyczne. I żeby faktycznie zrobić płytkę dobrze, minimalizując to zakłócenie, trzeba rzeczywiście lat doświadczenia, tego się nie nauczy w paru tutorialach, a i tak nie ma żadnego kompilatora, który by nam wykrył to zakłócenie i tak trzeba zrobić tę płytkę, wyprototypować, wydać mnóstwo pieniędzy na produkcję, na certyfikację itd. Więc to są rzeczy, które kosztują i tych właśnie zmierzam do tego, że nie możemy wpłynąć na tę fizykę, która nas ogranicza.
A w programowaniu wszystko, w czym pracujemy, języki programowania, frameworki, środowiska są stworzone przez ludzi. Więc w programowaniu uważam, że nie ma tutaj tej nieprzewidywalności, jako że wszystkie te środowiska, wszystkie te narzędzia, wszystkie frameworki są stworzone przez ludzi i wszystko, co nas tutaj ogranicza, to, powiedzmy, kreatywność tych twórców frameworków, czy dobra albo zła dokumentacja.
Dlatego też uważam, że AI spokojnie mogłoby zastąpić przynajmniej tę część kodującą programowanie, bo na pewno ta część polegająca na planowaniu architektury, na części biznesowej, umiejętnościach miękkich, to już do zastąpienia by nie była.
I tutaj też miałbym do tego wszystkiego małą taką dygresję. Nieraz myślałem, w jaki sposób AI wpłynie na naszą gospodarkę ludzką, czy zastąpi nas w pracy, czy już nie będziemy mieli pracy przez AI, czy jak. I otóż uważam, że AI jest takim kolejnym krokiem w rozwoju ludzkiej technologii. Jak tak spojrzymy na naszą historię, to zobaczymy, że powiedzmy kiedyś w starych czasach, w starożytnym Rzymie dajmy na to, każdy człowiek, który zakładał jakiś biznes, chciał np. produkować, garnki z gliny, to mógł sobie za niewielkie pieniądze kupić, powiedzmy, niewolnika i kazać mu produkować też te garnki razem z nim, zamiast niego.
Dlaczego tak było, a teraz tak nie jest? No, niekoniecznie dlatego, że jesteśmy jakoś tam nie wiadomo jak lepiej moralnie rozwinięci od ostrożnych Rzymian, tylko uważam głównie dlatego, że technologia wtedy nie pozwalała właśnie na taką optymalizację produkcji i dużo rzeczy trzeba było robić ręcznie, a teraz jednak ta technologia poszła dużo do przodu.
Powiedzmy, dalej były jakieś rewolucje przemysłowe i w jakimś XVII, XVIII, XIX wieku już nie było tej klasy niewolniczej, byli robotnicy, którzy za co prawda niewielkie pieniądze, jednak byli wolnymi ludźmi i za te niewielkie pieniądze pracowali po 12 godzin w fabryce, bo też na tyle pozwalała ta technologia.
Później, powiedzmy w XX wieku, technologia poszła do przodu, już pracowaliśmy mniej, mogliśmy pojechać na wakacje do Bułgarii, a dzisiaj znowu zarabiamy jeszcze więcej, bo znowu na tyle pozwala technologia.
I też, co ciekawe, widzimy, że wiele takich zawodów typowo pracowniczych, czyli pod zawodem pracowniczym mam na myśli zawód, kiedy po z góry ustalonej stawce wymieniamy nasz czas na pieniądze, to wielu takich zawodów się przekształca na zawody wolne. Czyli np. jako programiści możemy brać zlecenie od różnych pracodawców i pracować wtedy, kiedy chcemy, a kiedy nie chcemy, nie pracować.
I wydaje mi się, że AI będzie tutaj kolejnym takim krokiem, który zastąpi całkowicie z powodu wyginięcia tej klasy pracowniczej i wszystkie te zawody o takiej pracy powtarzalnej zostaną zastąpione przez AI, kiedy to ludzie właśnie będą wykonywali te wolne zawody, będą menedżerami tego AI, będą przedsiębiorcami, będą inwestorami, będą wykonywali piękne wolne zawody, będą mogli pracować kiedy chcą, będą zarabiać dużo więcej.
Ale też to się wiąże z pewnymi konsekwencjami i uważam np., że trzeba wtedy będzie zmienić swoją mentalność. Już trzeba zapomnieć o takim micie stabilnej pracy. Już nie będzie tak, że zarabiasz marnie, ale za to co miesiąc tyle samo. Lecz będzie tak, że zarobisz średnio dużo więcej, lecz czasami jednego miesiąca zarobisz dużo, drugiego mało, trzeciego stracisz w ogóle, będziesz na minusie. Tak że uważam, że w takiej nowej gospodarce, kiedy AI zastąpi tę stabilną część, powtarzalną, uważam, że trzeba będzie wziąć odpowiedzialność za siebie, za swoje finanse, za swoje życie.
Więc odpowiadając sobie na pytanie, to uważam, że AI zastąpi programistów i o ile modele oczywiście na to pozwolą, przynajmniej zastąpią tę część związaną z programowaniem, nie tę część związaną z zarządzaniem tymi AI programistami na przykład. I będzie to naprawdę wspaniała dla nas wszystkich zmiana.
Ale też to się wiąże z pewnymi konsekwencjami i uważam np., że trzeba wtedy będzie zmienić swoją mentalność. Już trzeba zapomnieć o takim micie stabilnej pracy. Już nie będzie tak, że zarabiasz marnie, ale za to co miesiąc tyle samo. Lecz będzie tak, że zarobisz średnio dużo więcej, lecz czasami jednego miesiąca zarobisz dużo, drugiego mało, trzeciego stracisz w ogóle, będziesz na minusie. Tak że uważam, że w takiej nowej gospodarce, kiedy AI zastąpi tę stabilną część, powtarzalną, uważam, że trzeba będzie wziąć odpowiedzialność za siebie, za swoje finanse, za swoje życie.
Bardzo ciekawe przemyślenia, ale ogólnie zgadzam się z Tobą, że AI to jest coś więcej niż tylko kolejna technologia. To jest jakiś rodzaj czy część ewolucji i społecznej, i gospodarczej, i technologicznej. Myślę, że tak należy to rozpatrywać. I też w dużej mierze zgadzam się z tym, co mówiłeś na temat zastąpienia programistów przez AI. Myślę, że ta część związana z kodowaniem, z dużym powodzeniem może być, może nie zastąpiona, ale przynajmniej w jakiś sposób dużej części przejęta przez AI.
Zresztą powiedzmy sobie szczerze, wielu programistów na co dzień wykonuje dużo powtarzalnej pracy, wcale nie jakiejś kreatywnej, tak może się wydawać z zewnątrz, że to jest jakiś rodzaj sztuki, który jest wykonywany codziennie przez właśnie osoby programujące, tymczasem każdy, kto się tym chociaż trochę zajmował, wie, że tam jest dużo powtarzalnej pracy, to może być spokojnie realizowane przez AI, ale właśnie tworzenie oprogramowania, wytwarzanie produktów software’owych to jest coś więcej, albo dużo więcej, bym powiedział, niż tylko pisanie kodu, i tych rzeczy właśnie mam wrażenie, że przynajmniej jeszcze na horyzoncie nie widać, żeby AI była w stanie przejąć.
My tutaj mówimy dużo o tym wpływie AI na programowanie, na programistów i może się wydawać, że to jest coś tak kompletnie już powszechnego i stosowanego przez wszystkich, ale to jest, powiedzmy sobie szczerze, nadal jeszcze jakiś rodzaj bańki i osobiście znam nawet osoby, które gdzieś wzbraniają się i bronią przed tym, żeby przyjąć do siebie, że to jest już nasza rzeczywistość, nasza programistów także rzeczywistość, że to po prostu trzeba się z tym zapoznać, to jest już element naszej pracy. O ile jeszcze teraz na zasadzie takiej, że możemy się tym zainteresować, ale nie musimy, ale pewnie już niedługo będzie tak, że po prostu będzie to niejako wymagane wręcz, żeby faktycznie z tymi narzędziami być obeznanym.
Co byś polecił tym osobom, tym programistom, którzy jeszcze nie stosują albo wzbraniają się przed tymi rozwiązaniami sztucznej inteligencji? Co byś im doradził? Co byś powiedział, że w jakich obszarach AI może im pomóc?
Jak dla mnie AI jest w ogóle rzeczą niezwykle fajną, przydatną i też ciekawą, ale rozumiem, że nie wszyscy mogą tak samo myśleć jak ja i też są osoby, które się wzbraniają oczywiście. Tutaj na siłę na pewno nikogo nie będę na AI namawiał, jednak uważam, że warto tutaj posłuchać głosu swojego lenistwa. Po co masz robić coś, co za Ciebie może zrobić kto inny, zwłaszcza kiedy tym kimś innym jest właśnie robot. A Ty możesz np. wyjść wcześniej z pracy i teoretycznie wykorzystać ten czas na odpoczynek, wyjazdy w góry, spotkanie się z kolegami. W praktyce zaś na zapewne robienie kolejnych projektów, na które nigdy nie było czasu, a akurat teraz się pojawia.
Tak że jeśli pytasz mnie o jakieś konkretne narzędzia, to uważam, że przede wszystkim warto się zapoznać z samymi modelami językowymi jako z podstawą. I nie polecam tutaj chatu GPT jako tako, przynajmniej w tej wersji darmowej, bo jest tam model GPT 3.5, który nie jest szczególnie inteligentny i może po prostu tylko zniechęcić takie osoby, które zaczynają swoją przygodę z AI. Lepiej użyć od razu mądrzejszego modelu, jak na przykład GPT-4, który znajdziemy w playgroundzie od OpenAI. Wystarczy wpisać OpenAI Playground, ewentualnie wkład w wersję chatu GPT.
Ale też, jak już powiedzieliśmy, OpenAI nie jest jedynym dostawcą. Możemy spróbować Workbench od Anthropica, który działa na podobnej zasadzie jak Playground od OpenAI. Też możemy porozmawiać z modelem. Jest to taka de facto nakładka na API.
Jak już zabawimy się z takim modelem, poprosimy taki model, żeby nam napisał jakiś kod, np. coś z nami przemyślał razem, zrobił brainstorming, zasugerował jakieś rozwiązania różnych problemów. Też możemy użyć narzędzia do wyszukiwań internetowych. Słynne np. Perplexity lub Tavily to są narzędzia, które mogą w dzisiejszych czasach zastąpić Google. Czyli zamiast wpisywać w Google coś, czego szukamy, to możemy wpisać w takim narzędziu, że tego czegoś szukamy i to narzędzie nam znajdzie wyniki i też je obrobi, przemyśli i da nam dokładną odpowiedź już napisaną przez LLM-a. Działa to też różnie, więc czasami nadal jest prościej poszukać coś w Google’u, ale warto jednak brać pod uwagę też takie narzędzia.
Poza tym na pewno nie muszę wspominać o Copilot. O tym narzędziu każdy wie, które pomaga nam programować i za pomocą wciśnięcia tabu uzupełniać nasz kod. I tutaj nie mówimy tylko o tym GitHub Copilot, a też o wielu innych podobnych Codeum, jak Codeium chociażby, działają te narzędzia na podobnej zasadzie.
I też jak chcemy mieć swojego programistę, który będzie programował zupełnie za nas, a my będziemy tylko patrzeć, jak on to robi i mu pomagać, to polecam zainstalować sobie Clean Codera.
Wspomniałeś tutaj wcześniej o tym, że taka wizja programowania, która może wynikać z zastosowania AI agentów, będzie polegała na tym, że programiści będą bardziej nadwzorować ten proces, będą może poprawiać wyniki w pewnych obszarach, będą bardziej dozorować, jak to wygląda. W związku z tym pojawia się pytanie, czy w tej dobie AI agentów warto się specjalizować w jakiejś niszy, warto być ekspertem np. w danej technologii, czy też może sensowniejsze jest takie podejście, gdzie mamy nieco płytsze, ale jednak rozeznanie o różnych obszarach IT po to, żeby właśnie wiedzieć, jak wykorzystywać AI agentów do tego, żeby nam całościowo to zadanie wykonały. Co ty o tym myślisz?
Myślę, że ciężko mi tutaj wybrać jakiś jeden konkretny z tych obszarów, jednoznacznie powiedzieć, czy trzeba wchodzić totalnie głęboko w jeden obszar, czy jednak płytkowo wszystkie. Bo jeśli wejdziemy na przykład bardzo głęboko w jeden obszar, to i owszem, taka specjalizacja nam się jak najbardziej przyda, bo warto być w Polsce lepszym od AI w czymś tym jednym, by móc tym AI pokierować, zarządzić nim i ewentualnie sprawdzić, czy on na pewno napisał wszystko dobrze, by podpowiedzieć mu, co ma zmienić.
Ale z innej strony, jak już wcześniej powiedzieliśmy, ludzie raczej będą siedzieć na rolach kierowniczych, menedżerskich, zarządzających architekturą, i tutaj niezwykle ważna właśnie jest ta wiedza ogólna o różnych frameworkach, dobór różnych narzędzi. I dlatego tutaj jest niezwykle ważna ta wiedza ogólna, dobór różnych narzędzi, dobór frameworków. I też z tego powodu, że często te frameworki bardzo szybko się zmieniają, też ważne jest, żeby nie siedzieć bardzo głęboko w jednym cały czas, by nie przegapić tego momentu, kiedy to jedno coś będzie już nieaktualne. Tak że moim zdaniem zawsze to będzie jakaś proporcja. Więc warto być w jednej albo paru rzeczach bardzo głęboko być lepiej od AI, lecz też widzieć cały ten obszar.
I jaka to będzie proporcja? Uważam, że mocno zależy od naszych osobistych preferencji. Uważam, że jak coś nas kręci, jest jakiś obszar, którym się interesujemy, to tak, wchodźmy w niego głębiej. Jak chcemy być bardziej kierownikiem, menedżerem, to poszerzamy naszą wiedzę w różnych obszarach, więc trzeba słuchać samego siebie.
Więc jeśli tutaj pytasz się, jak ja siedzę, jaką ja mam tę proporcję, to siedzę dosyć głęboko w temacie AI, lecz też jako że rozwój mnie bardzo kręci, więc w nim siedzę, ale jako CTO w startupie muszę mieć to rozeznanie na różne technologie, muszę potrafić w różnych technologiach pisać i też wybrać sobie różne te narzędzia.
Jasne, ma to sens. Powiedziałeś, że warto jest być w czymś lepszym od AI. Ja bym do tego dopowiedział, że też może warto się czymś odróżnić od AI, co może mieć spore znaczenie w momencie, kiedy chcemy wejść do IT, kiedy chcemy poszukać sobie nowej pracy, nowego projektu. Istotne będzie to, żeby wnieść jakąś dodatkową wartość do firmy poza tym, co są w stanie już narzędzia zrobić, więc to rozróżnienie, to wybicie się, to pokazanie jakiejś swojej, nie chcę tego nazywać wyższości, ale wiesz, o co mi chodzi, czegoś, co nas odróżnia od AI, może być znaczące.
Ja myślę sobie, że temat marki osobistej może być właśnie takim elementem, który pokazuje, że nie jesteśmy anonimowi tak jak AI, tylko faktycznie stoi za nami jakaś większa wartość. Jestem ciekawy, jak Ty patrzysz na ten temat właśnie marki osobistej, takiego trochę rozróżnienia mam wrażenie żywego człowieka od AI. Czy to będzie miało większe znaczenie właśnie w tej dobie, kiedy będziemy coraz częściej posługiwali się agentami AI, czy ten żywy człowiek z jakimiś swoimi unikalnymi cechami będzie miał jakąś większą wartość nawet, niż to ma miejsce teraz?
Tutaj uważam, że bardzo trafnie właściwie ująłeś to i w dużej mierze się zgadzam z tym, co powiedziałeś, bo ta wyjątkowość ludzka w tej dobie AI-owej będzie moim zdaniem szczególnie się ceniła i też dlatego uważam, że trzeba tę markę wyjątkowo w tych czasach rozwijać. Właściwie myślę, że w każdych czasach marka osobista jest potrzebna, jest fajnym narzędziem, a w czasach AI zwłaszcza. Tak że jak najbardziej tak, warto, lecz też nie chcę zabrzmieć jak jakiś taki coach rozwoju osobistego, który Ci powie, że tak, koniecznie musisz tę markę robić, bo jak tej marki nie masz, to jesteś po prostu nikim i już po Tobie.
No nie, to wszystko zależy, też tutaj na pewno masz więcej doświadczenia ode mnie w tym temacie, ale jak ja to widzę. To jak można markę budować? Otóż na przykład można jeździć na konferencje, udzielać się w podcastach. Ja np. to robię, ale dlatego, że po prostu to lubię. Uważam, że mnie to sprawia przyjemność, że zawsze marzyłem o tym, żeby wstępować publicznie, żeby coś ciekawego dla ludzi powiedzieć. Lecz nie każdy tak musi mieć. Na pewno sporo osób, zwłaszcza z branży programistycznej, gdzie to większość ludzi jest introwertykami, nie ma takiej potrzeby na przykład, nie ma takiej chęci, raczej nie chce wypowiadać się publicznie i uważam, że też nic na siłę, nie ma co tutaj tego robić, jak nie chcemy tego robić.
Też kolejnym źródłem rozwoju tej marki osobistej na pewno są sieci społecznościowe i też akurat jest ten obszar, który mnie aż tak bardzo nie kręci, więc ja tam wrzucam sobie coś raz na jakiś czas, ale znam takie osoby, co wrzucają coś non-stop, niemalże codziennie.
Też myślę, że co jest mega ważne akurat dla każdej osoby, to jest taka mikro marka. Warto budować taką mikro markę w swoim własnym otoczeniu jako osobę, która dowozi projekt, jako osobę, która dotrzymuje słowa, jako właśnie osoba odpowiedzialna. Czyli powiedzmy, jak już powiemy coś, że coś zrobimy na jutro, to postaraj się to zrobić, albo przynajmniej jak już widzisz, że tego nie zrobisz, to powiedz, że tego nie zrobisz jednak. Jak często nawet na jakichś rozmowach rekrutacyjnych czy rozmowach biznesowych, kiedy wiemy, że nic z tego nie będzie, to słyszymy takie stwierdzenie, że dobra, odezwiemy się do pana. No, moim zdaniem nie, no jak widzisz, że nic z tego nie będzie, no to powiesz wprost, że nic z tego nie będzie i już.
Moim zdaniem powinno się mówić tak bezpośrednio, ponieważ takie kręcenie powoduje pewną niechęć, powoduje, że będzie nam się gorzej współpracowało w przyszłości, o ile w ogóle do jakiejkolwiek współpracy dojdzie, a jeśli powiem wprost, że teraz nic z tego nie będzie, to większa jest szansa, że zachowamy tę relację i w przyszłości być może coś z tego będzie, ale przede wszystkim tu chodzi o sam ten honor, samo to poczucie własnej wartości czy coś, nie wiem, sam szacunek do swojego słowa i do innej osoby. Dlatego warto tę prawdę właśnie, uważam, mówić.
Tak że niby taka prosta rzecz, ale jednak w dzisiejszych czasach uważam, że ta wartość słowa jest wyjątkowo ważna.
Też myślę, że co jest mega ważne akurat dla każdej osoby, to jest taka mikro marka. Warto budować taką mikro markę w swoim własnym otoczeniu jako osobę, która dowozi projekt, jako osobę, która dotrzymuje słowa, jako właśnie osoba odpowiedzialna. Czyli powiedzmy, jak już powiemy coś, że coś zrobimy na jutro, to postaraj się to zrobić, albo przynajmniej jak już widzisz, że tego nie zrobisz, to powiedz, że tego nie zrobisz jednak.
Powiedziałeś tutaj o przynajmniej trzech ważnych rzeczach, które też zresztą opisuję w swojej książce. Po pierwsze, marka osobista nie jest dla każdego. Można powiedzieć, że każdy jakąś tam tą markę ma, ale nie każdy musi nad nią pracować tak świadomie, bo nie dla każdego to jest odpowiednie narzędzie.
Druga rzecz jest taka, że wybór tego, w jaki sposób będziemy tę markę budować albo gdzie będziemy ją budować, gdzie będziemy ją komunikować, zależy od nas, co nam po prostu lepiej przychodzi. Dla Ciebie wystąpienia publiczne być może są tego typu właśnie sposobem, ale ktoś może nie mieć tyle odwagi, chęci, żeby to robić i np. pisanie bloga będzie dla niego zupełnie wystarczające. Więc ten dobór tego kanału komunikacji marki osobistej jest niezwykle istotny, żeby nam po prostu w miarę łatwo przychodziło tam tworzenie czegokolwiek.
I trzecia rzecz, o której tutaj wspomniałeś, że myśląc o marce osobistej, wyobrażamy sobie osoby rozpoznawalne, występujące na dużych konferencjach, piszące książki itd. A wcale tak nie musi być, bo ten zakres wpływu marki osobistej może być mały, może być np. naszą firmą, naszym projektem. w którym pracujemy i tam sobie tą markę budujemy i to może być dla nas zupełnie wystarczające, więc zgadzam się z tym absolutnie. I myślę, że właśnie w tej dobie wpływu AI na to, jak software jest tworzony, to marka osobista zdecydowanie zyskuje na znaczeniu i może być tym, czym wyróżniamy się właśnie od rozwiązań, które są w stanie te proste, koderskie zadania wykonywać.
Na końcu, Grigorij, chciałbym Cię zapytać jeszcze o taką, mam wrażenie, drugą odnogę Twojej działalności, o której tutaj wspomniałem przedstawiając Ciebie, mianowicie zainteresowanie myślącymi robotami, czyli takimi rozwiązaniami, które nie tylko w tej domenie software’owej działają, ale mają też swoją fizyczną postać. Właśnie, gdybyś nieco przybliżył ten obszar, powiedział, jak daleko jesteśmy jeszcze od tego typu rozwiązań i czy jest szansa, że doczekamy się takich maszyn autonomicznie, samodzielnie podejmujących decyzji?
Właśnie warto zauważyć ten fakt, że jednak większość AI, z którym mamy dzisiaj do czynienia, jest tym AI po drugiej stronie monitora. Wszystko się dzieje w komputerach, gdzieś tam w chmurze. Jak już powiedziałem wcześniej, większość ludzi, którzy tworzą ten AI, to są premiści i po prostu znają ten świat i wiedzą, jak np. samych siebie też zastąpić.
Lecz właśnie dla mnie mega ciekawym jest stworzenie takiego fizycznego AI. AI, który będzie wśród nas tutaj podejmował jakieś decyzje, oglądał nasz piękny świat razem z nami i będziemy mogli z nim iterować nie tylko za pomocą pisania w klawiaturę. I tak, tutaj uważam, że ta działka nie jest mocno rozwinięta. Uważam, że tutaj można zrobić naprawdę dużo rzeczy.
I ja prowadzę swoje badania na temat uruchamiania modeli językowych na mikrokomputerach, jak nawet Raspberry Pi i budowanie atomicznych robotów, które by właśnie były zarządzane tym własnym mózgiem, czyli LLM-em, który tam pracuje na tym Raspberry Pi.
Działa to w taki sposób, że jak mamy robota, który jest gdzieś tam daleko, np. na Marsie, czy jeszcze gdzieś, gdzie nie mamy z nim żadnego kontaktu, to fajnie, żeby ten robot był autonomiczny i był w stanie podejmować różne decyzje. I takie proste algorytmy wizy komputerowej, takie proste, czy klasyczne ML, czy po prostu jakieś if-else, są w stanie zapewnić pewien poziom tej, załóżmy, autonomiczności, o ile mówimy o prostych zadaniach, lecz w przypadku zadań takich trudnych, wymagających naprawdę pomyślunku i wcześniej człowieka, to jest potrzebny ten LLM, który będzie myślał w taki podobny sposób do człowieka.
Przykładem jest tutaj dylemat wagonika, który oto ostatnio zrealizowałem w formie fizycznej, bo właśnie stworzyłem taki wagonik, który jest kierowany przez Raspberry Pi siedzący w środku i LLM-a na nim, decyduje, czy ma jechać w prawo i rozjechać, powiedzmy, jakąś tam jedną osobę, czy jechać w lewo i rozjechać kogoś innego. I to jest coś, czego po prostu nie da się zrobić za pomocą if-else’ów, za pomocą klasycznych algorytmów. Ocenianie tej wartości, powiedzmy, tych różnych osób czy przedmiotów, które są na różnych częściach tego naszego toru.
Tak że uważam, że LLM-y mają wielkie stosowanie w robotyce w przypadku takich podejmowania skomplikowanych, niezależnych decyzji studiujących o kierunku ruchu naszego robota na przykład. Oczywiście tutaj są też różne ograniczenia, np. czas generacji, bo jednak Raspberry Pi czy inne mikrokomputery są dosyć słabe, przynajmniej jak na razie się rozwijają cały czas, ale wciąż są słabiutkie, i niekiedy ten czas generacji, odpowiedzi wynosi wręcz kilka minut.
Oczywiście tutaj są różne triki też, jak to zminimalizować, bo raz, że można wziąć jednak mocniejsze komputery z kartą graficzną, jak np. komputery NVIDIA, dwa, że można nasz model fine tuning’ować, żeby zredukować ilość jego promptu potrzebnego, ilość instrukcji i wprowadzić je do wiedzy parametrycznej modelu, czyli ten model by wtedy zajmował mniej miejsca w RAM-ie. I oczywiście użyć też mniejszych modeli, lecz wciąż jest to ograniczenie, wciąż ten czas generacji odpowiedzi jest dosyć długi, dlatego uważam, że modele mają zastosowanie w robotyce tam, gdzie mamy czas, gdzie możemy podjąć taką generalną decyzję, którą trzeba przemyśleć, a podejmowanie takich decyzji na bieżąco jest raczej domeną jednak tych klasycznych algorytmów i tutaj na pewno LLM-y nie będą real-time, przynajmniej przez najbliższe miesiące i lata.
Muszę powiedzieć, że z zaciekawieniem i taką dużą fascynacją obserwuję, jak ten obszar się zmienia, bo to jest taka technologia, która nie tylko bardzo szybko idzie do przodu, ale również, jak gdyby tak można powiedzieć, rekurencyjnie zmienia to, w jaki sposób ta technologia w ogóle powstaje, w jaki sposób się rozwija. Czyli kolejne, można powiedzieć, osiągnięcia właśnie w tym obszarze AI definiują to, w jakich kierunkach ta technologia dalej się rozwija i w jaki sposób są prowadzone dalsze badania, w jaki sposób cała branża IT się rozwija, więc to jest naprawdę duża rzecz, więc tutaj jak gdyby jeszcze raz podpiszę się pod tym, co, Grigorij, powiedziałeś, że te osoby, które jeszcze gdzieś wzbraniają się przed tym obszarem, które uważają, że to ich nie dotknie, myślę, że to jest odpowiedni czas, żeby się właśnie zainteresować tematem wpływu generatywnej AI na programistów i na pisanie software’u.
Świetnie. Grigorij, bardzo Ci dziękuję za rozmowę. Moim i Waszym gościem dzisiaj był Grigorij Dudnik. Rozmawialiśmy o tym, jak Gen AI wpływa na programistów i na wytwarzanie software’u. Wielkie dzięki za poświęcony czas i powiedz, proszę jeszcze, Grigorij, na koniec, gdzie możemy znaleźć Twoje miejsca w sieci, gdzie możemy słuchaczy odesłać.
Jak najbardziej zapraszam na swojego LinkedIn’a, Grigorij Dudnik. Piszę tam raz na jakiś czas różne rzeczy. Też mam YouTube’a. Nie wrzucam tam filmów aż tak często, ale też czasami wrzucam. Ii mam nadzieję, że zobaczymy się osobiście na którejś konferencji.
Tak, byłoby naprawdę bardzo miło. Oczywiście ten link znajdzie się w notatce do odcinka, tak że zapraszam tam wszystkie osoby zainteresowane kontaktem z Grigorijem, a ja Tobie jeszcze raz bardzo dziękuję za poświęcony czas i do usłyszenia. Cześć!
Dziękuję, cześć.
I to na tyle z tego, co przygotowałem dla Ciebie na dzisiaj. Więcej wartościowych treści znajdziesz we wcześniejszych odcinkach. Masz pytania? Napisz do mnie na krzysztof@porozmawiajmyoit.pl lub przez media społecznościowe.
Ja się nazywam Krzysztof Kempiński, a to był odcinek podcastu Porozmawiajmy o IT o wpływie Gen AI na programistów i automatyzację programowania.
Do usłyszenia w następnym odcinku. Cześć!