Transkrypcja
Dziś moim gościem jest Przemek Smyrdek. Przemek opowie nam o pracy i przyszłości programisty w dobie AI. Przemku, dziękuję, że przyjąłeś moje zaproszenie na rozmowę.
Dzięki wielkie za zaproszenie – bardzo mi miło.
To może zaczniemy od Twojej osoby. Powiedz nam coś więcej o sobie i co łączy cię z branżą IT.
Moja przygoda z branżą IT w taki najbardziej formalny sposób rozpoczęła się w 2012 roku. Wtedy też rozpoczynałem studia na kierunku informatyka na Uniwersytecie Bielsko-Bialskim. Chociaż wtedy tak naprawdę nie miałem jeszcze jakiejś bardzo mocno zdefiniowanej ścieżki i pomysłu na to, co w tym IT tak naprawdę chciałbym robić. Natomiast wiedziałem, że programowanie, komputery, technologia jako taka po prostu bardzo mnie interesują. To, czym zajmowałem się w kolejnych latach, to było przede wszystkim programowanie. Przez ponad dwa lata miałem też okazję popracować jako engineering manager. Co udowadnia mój profil na LinkedInie, raczej testowałem różne modele firm, różne rozmiary firm, różne domeny, niż byłem przywiązany do jakiegoś jednego ścisłego kierunku czy specjalizacji. Na samym początku pracowałem m.in. przy systemach ERP, przy e-commerce. Zobaczyłem również jak działają media, streaming sportowy. Miałem także okazję popracować w firmie zagranicznej, która zajmuje się domeną transportu publicznego. Wydaje mi się, że było to korzystne doświadczenie – łączenie tych wszystkich firm, typów, organizacji, różnych podejść do technologii po prostu pozwala mi chyba z nieco większym dystansem obserwować to, co dzieje się teraz w świecie IT. Natomiast mówiąc o mojej pracy w branży IT dzisiaj, to jest to przede wszystkim projekt Przeprogramowani.pl, który od sześciu lat rozwijam z Marcinem Czarkowskim. Na początku był również z nami Adam Gospodarczyk. W ramach Przeprogramowanych zajmujemy się nowoczesną edukacją dla programistów. Od dwóch lat mamy również taką dodatkową gałąź naszej działalności – jest to projekt o nazwie Opanuj AI, gdzie budujemy kompetencje w zakresie praktycznych zastosowań sztucznej inteligencji.
To idealne przejście do kolejnego pytania – i tu od razu z grubej rury: jak zmienia się rola programistów od momentu pojawienia się narzędzi AI? Jakie role pojawiają się dzięki sztucznej inteligencji, a jakie są marginalizowane?
Moim zdaniem to jest bardzo trudne pytanie – od tego bym zaczął, bo to, czym ta sztuczna inteligencja jest, tak naprawdę bardzo często się zmienia. Wydaje mi się, że można byłoby tutaj udzielić innej odpowiedzi co kwartał, a co najmniej co pół roku. Mamy modele lepsze, mamy modele tańsze. Mamy inne pomysły na to, jak te modele zastosować w wielu różnych obszarach programowania. To wszystko wpływa na fakt, że ta odpowiedź, którą tu gdzieś z tyłu głowy mam, może się różnić. Pewnie, jeśli rozmawialibyśmy za trzy albo za sześć miesięcy, to mógłbym na to odpowiedzieć nieco inaczej. Natomiast jeśli pytasz mnie o rolę, to na pewno dzisiejszy rynek pracy jest przesycony, pomieszany, zmerdżowany ze sztuczną inteligencją w wielu różnych odmianach, w wielu różnych wariantach. Te osoby, które od dawna zajmują się badaniami tego, czym sztuczna inteligencja jest, na pewno odnoszą realne korzyści z tego faktu. Pojawia się też taka przekrojowa rola AI engineera, czyli osoby, która potrafi budować full stackowe aplikacje webowe i dodatkowo potrafi teraz integrować ze sztuczną inteligencją.
To może od razu tutaj dopytam – co ta osoba tak naprawdę robi? Bo mówisz o tym full stacku, ale rozumiem to w taki sposób, że po prostu ktoś korzysta z edytora, który ma wsparcie AI i mu podpowiada. Czy to jest coś bardziej zaawansowanego? Bo brzmi to bardzo wzniośle, a chyba nie jest to takie wielkie, jak sobie wyobrażamy.
W przypadku AI engineera mam tutaj na myśli osoby, które wykorzystują potencjał sztucznej inteligencji do tego, żeby zmieniać produkt jako taki. To znaczy, żeby dowozić wartość biznesową, która wynika z tego, co te modele nam dają np. interpretowanie tekstu, klasyfikacja tekstu, jakieś złożone rozumowanie, interpretacja obrazów itd. Nie mam tutaj więc na myśli stricte egzekucji aplikacji, bo możesz współpracować ze sztuczną inteligencją nad dowolnym projektem, ale moim zdaniem to nie od razu czyni cię AI engineerem. Jednak ten zestaw kompetencji, które wnoszą tutaj modele sztucznej inteligencji jest nieco inny. Powinieneś rozumieć, jak te modele działają, jakie mamy nowe szanse i ryzyka związane z np. faktem, że modele są niedeterministyczne, że nie zawsze możesz przewidzieć, jak one odpowiedzą. Nie zawsze możesz również zagwarantować, że wystawiając takie modele użytkownikowi końcowemu, uzyska on wysokiej jakości odpowiedzi z tego modelu. Podsumowując to wszystko, AI engineer to jest osoba, która potrafi sprawnie poruszać się właśnie w takich obszarach. Czyli nie mam tutaj na myśli stricte egzekucji i produkcji aplikacji, ale to integrowanie potencjału modeli z samą logiką biznesową i z tym, co biznes nazywa ładnie wartością dla użytkownika końcowego.
Czyli może taki prosty przykład, jeżeli dobrze rozumiem – skorzystanie z jakiegoś API, które pozwala interpretować tekst i odpowiadać na bazie dokumentacji danego rozwiązania. Coś takiego?
To jest taki pierwszy krok w tym kierunku, natomiast po tym pierwszym kroku pojawiają się wyzwania, czy to na poziomie kontynuowania tej rozmowy, dostarczania kontekstu do tych modeli, kontrolowania kosztów, zapewnienia skalowalności całego rozwiązania. I właśnie pogłębianie kompetencji w tym kierunku czyni z ciebie takiego AI engineera – można powiedzieć takiego Full Stacka nowej generacji. To nie jest tak, że te osoby pracują zupełnie w oderwaniu od aplikacji, które tworzyliśmy wcześniej, ale widzą właśnie te szanse, które dają nam modele sztucznej inteligencji, LLM-y czy jakieś modele wizyjne. Tak – komunikacja przez API to jest pierwszy krok, natomiast bardzo szybko okazuje się, że ta komunikacja przez API w takiej surowej, bezpośredniej formie, to jest tak naprawdę dopiero bramka wejściowa do całego świata AI engineeringu.
Czy np. stawianie swojego LLM-a czy coś w tym stylu, to też jest część jego pracy czy jest to już całkiem inna specjalizacja?
Myślę, że tak. Myślę, że AI engineer może również korzystać z gotowych rozwiązań. Prawdę mówiąc, jest to taka obserwacja czy też stanowisko, które bardzo często zauważam wśród moich znajomych. Wynika to po prostu z tego, że ta decyzja o pójściu w modele hostowane na API albo modele lokalne jest po prostu jakąś decyzją techniczną na poziomie architektury, rozwiązania, czy na poziomie jakiejś oceny ryzyka, którą trzeba podjąć, więc również uznałbym to za zakres kompetencji AI engineera. To jest coś takiego, jak gdybyś miał różne języki programowania albo, będąc bardziej precyzyjnym, różne frameworki i chciałbyś dobrać ten, który najbardziej odpowiada danemu problemowi. Tak w przypadku AI engineera, mamy jakąś integrację, jakiś pomysł na biznes czy funkcjonalność i musimy zadecydować, czy bardziej opłaca nam się korzystać z modeli gotowych hostowanych w chmurze, czy chcemy sobie np. z priorytetem na prywatność postawić lokalnie coś, co będzie np. pozwalać na korzystanie z danych prywatnych, z danych firmy, których ta firma nie chce udostępniać na chmurę.
Jak o tym opowiadasz, to zastanawiam się, czy nie jesteśmy na takim etapie, jak wtedy gdy zaczynałem – mam tu na myśli takiego webmastera, który robił w zasadzie wszystko, by postawić stronę poczynając od hostingu, po development frontu, back-endu. Czy nie jest to moment, że jesteśmy w tym miejscu, jeśli chodzi o AI, a za te 10 lat okaże się, że każdy specjalizuje się w takiej jednej, wąskiej działce?
Myślę, że to jest świetna analogia. Wydaje mi się, że można byłoby też podejść do tego warstwowo tzn. pojawiają się jakieś pierwsze analizy czy obserwacje tego, jak np. sztuczna inteligencja wpływa na interfejsy użytkownika, czego konsekwencją jest to, że np. projektanci interfejsów muszą się dostosować do nowych wymagań – więc na początku nazwiemy ich jakimiś AI designerami, albo AI engineerami, jeśli to są tacy full stackowcy, którzy potrafią projektować aplikacje, ale oni prawdopodobnie za jakiś czas zaczną się specjalizować, właśnie w kierunku np. interfejsów konwersacyjnych, albo udzielania feedbacku sztucznej inteligencji. I gdybyśmy schodzili warstwa po warstwie niżej, to pewnie te specjalizacje zaczną się pojawiać, bo tak jak wcześniej rozmawialiśmy, to jest na tyle obszerny temat, czy na tyle obszerna dziedzina, czy domena, że trudno będzie się zajmować wszystkim. Przynajmniej z mojej perspektywy, trudno byłoby być np. ekspertem od infrastruktury czy pracy z modelami lokalnymi, jednocześnie trzymając rękę na pulsie, à propos np. tego, jak zmienia się front-end, który jest bardzo dynamicznie zmieniającą się warstwą. Myślę, że powoli zaczną się tutaj klarować takie jasne kierunki dalszego rozwoju, ale jesteśmy teraz bardzo, bardzo wcześnie, jeśli o to chodzi.
Przerwałem ci, to kontynuuj, bo może się okazać, że nie dojdziemy do ostatniego pytania, jak tak będziemy rozwijać wszystkie tematy.
Jeśli chodzi o nowe role, to na pewno tutaj mam jeszcze na myśli role związane z samym przetwarzaniem danych. Znowu – nic nowego, ale role rosnące na znaczeniu, na popularności. Data Scientists, Data Engineering, modele i wszystkie pipeline’y, które opierają się na sztucznej inteligencji: ich jakość wprost wynika z danych, które firma kolekcjonuje, normalizuje itd., więc jeśli będziemy osobą, która buduje kompetencje właśnie w obszarze posługiwania się danymi, mówiąc wprost, w takim najbardziej ogólnym sensie, to wydaje mi się, że to będzie bardzo istotna specjalizacja. Tutaj często pojawia się takie stwierdzenie garbage in, garbage out, które mówi o tym, że jak masz śmieci na początku twojej przygody ze sztuczną inteligencją, to prawdopodobnie dostaniesz też śmieci na wyjściu. I właśnie te osoby są odpowiedzialne za to, żeby to wejście do systemów było jak najlepiej adresowane. Na pewno możemy też wyjść poza role czy specjalizacje stricte techniczne i podebatować o takich tematach jak bezpieczeństwo, czy etyka sztucznej inteligencji. I tutaj też pojawia się coraz więcej możliwości. Nie nazwałbym tego bardzo znaczącymi zmianami na rynku pracy – raczej wskazuję na trendy, wokół których te role mogą się w przyszłości pojawiać. Bo czym innym jest to, że jest jakaś debata w danym obszarze, a czym innym jest opłacalność zatrudnienia ludzi właśnie w tym obszarze i w jakiej konkretnej skali – nie jestem jeszcze w stanie o tym opowiadać. Natomiast im więcej ośrodków zajmujących się sztuczną inteligencją, im większy potencjał tych modeli, tym coraz większa liczba osób będzie zajmować się bezpieczeństwem i etyką tych rozwiązań. I w tych wątkach, które potencjalnie będziemy dalej poruszać – czyli może właśnie jakiegoś rozwoju programisty nowej generacji, czy optymalizacji pracy tego programisty nowej generacji – tutaj też myślę, że znajomość tego, czym ta sztuczna inteligencja jest, jakie konsekwencje wprowadza, będzie przydatna. Natomiast jeśli chodzi o drugą stronę medalu, to wydaje mi się, że teraz jest trudny moment dla wszystkich, którzy chcieliby przesiedzieć ten okres zmian w IT, którzy będą oczekiwać, że jakoś to będzie. Tutaj raczej nie mam na myśli żadnej konkretnej roli, ale takie postawy, które nie są przyszłościowe, czyli właśnie to zamknięcie na nowe technologie, na rozwój, to, że bardzo mocno będziesz chciał się trzymać technik i praktyk, które wypracowałeś np. 10 lat temu. To nie jest też nic nowego w programowaniu, bo zawsze była taka potrzeba wymyślania się troszkę na nowo co jakiś czas, co 5-10 lat. Natomiast teraz wydaje mi się, że to jeszcze bardziej przyspieszy i będzie to jeszcze trudniejsze. Ta taka nadzieja na to, że po prostu niczego nowego się nie nauczę i jakoś to będzie. Wydaje mi się, że to po prostu nie jest przyszłościowa postawa.
To może dodałbym jeszcze jedną rzecz, bo tak wspomniałeś o tych podstawach. Chyba nie miałeś na myśli tego, żeby się nie uczyć programowania, albo przynajmniej nie tych podstaw, które trzeba przejść, żeby zostać programistą. Pewnie jeszcze do tego tematu przejdziemy, ale żeby to było takie jasne, że to chyba nie chodziło o takie podstawy, np. żeby nie wiedzieć, co to jest pętla.
Jasne, 100 procent tak. Core engineeringu to jest bardzo mocny fundament, na którym będziemy nadal budować – tutaj pełna zgoda.
To ja bym jeszcze dopytał o jedną rzecz, którą może już wspomniałeś, a może nie — ale rozmawialiśmy o tym przed naszą rozmową. Mam trochę wrażenie, że rozwój AI już nie postępuje tak szybko, jak dwa lata temu. Wtedy każda kolejna wersja pokazywała naprawdę ogromne możliwości. Teraz mam raczej poczucie, że to bardziej takie „dokręcanie śrubek” niż dokładanie nowych elementów. Wiem, że wczoraj odbyła się kolejna konferencja i kolejne ciekawe rzeczy – masz wrażenie, że jest spowolnienie, czy w ogóle ciężko to ocenić, bo jest tyle tego wszystkiego, że się nie da.
Na pewno sporo złego zrobiły tutaj nagłówki medialne, media społecznościowe i jakieś takie notatki marketingowe, które od dłuższego czasu przepowiadają, że to AGI, czyli ta ogólna sztuczna inteligencja, czy jakaś silna sztuczna inteligencja jest już za rogiem i ona tak naprawdę postawi świat do góry nogami. Widzimy tutaj, że to się po prostu przesuwa. Ten horyzont tego, kiedy już będziemy na tym bezrobociu, on się po prostu przesuwa. I to nie jest tak, że te modele z dnia na dzień po prostu wywróciły naszą rzeczywistość do góry nogami. Niemniej jednak, ja bym wskazywał na to, że te postępy na polu czystej technologii – tego, jak te modele działają, ile one kosztują i też co można osiągnąć z modelami coraz mniejszego rozmiaru było nie było, czyli takiego, które wymagają coraz mniejszej chociażby ilości RAM-u czy po prostu mocy obliczeniowej twojego sprzętu – to jest po prostu zauważalne. Gdybyśmy popatrzyli na pierwszą wersję ChatGPT, która pojawiła się pod koniec 2022 roku, a popatrzylibyśmy na to, co dzisiaj możesz robić z ChatGPT: jak działają modele rozumujące, które też są jakby takim tak naprawdę nowym obszarem researchu, jak będą działać modele dyfuzyjne, które będą się też wkrótce pojawiać, to widać, że trudno tutaj mówić o spowolnieniu. Raczej jest to taki można powiedzieć reality check – to znaczy te obietnice rewolucji nie są być może dowożone w takim tempie, jak niektórzy zapowiadali. Natomiast, moim zdaniem, na polu technologii naprawdę dużo się dzieje i każdy kolejny rok przynosi nam model, który jest odczuwalnie lepszy. Moglibyśmy tutaj powiedzieć chociażby o GPT 3.5, którego testowaliśmy na początku premiery ChatGPT, potem GPT 4, mieliśmy istotną różnicę w działaniu w interpretacji poleceń użytkownika, GPT 4.0 w kolejnym roku, modele rozumujące, teraz Gemini 2.5 Pro – moim zdaniem rok po roku widać progres tego, ile możesz osiągać z tymi modelami i jeszcze to, co powiedziałem na początku – coraz mniej za to zapłacisz i prawdopodobnie coraz szybciej dostaniesz odpowiedź, bo mamy mniejsze modele, które działają tak jak te największe w ubiegłych miesiącach, więc trzeba tutaj rozdzielić to, co się dzieje na polu researchu od tego, co na przykład przeczytasz na Linkedinie, mówiąc tak wprost i bardzo brutalnie.
Uznałbyś to wszystko za taki skokowy rozwój czy raczej taki płynny, logarytmiczny itd.? Czy to raczej idzie tak powoli w górę, czy jest takie wielkie wybicie?
To nie jest tak, że każdego roku jesteśmy na innej planecie i każdego roku odwiedzamy inne wszechświaty. Natomiast wydaje mi się, że chociażby ta zmiana związana z modelami rozumującymi i z tym, jak głęboką analizę one potrafią wykonywać, czy z tym, jakie pierwsze oznaki wykazują agenci sztucznej inteligencji, jest zmianą istotną. To, czy jest to zmiana skokowa, chyba nie chciałbym udzielać takiej twardej odpowiedzi. Znowu – wydaje mi się, że jest to trochę kwestia oczekiwań i tego rozjazdu między oczekiwaniami, które są nam sprzedawane, a tego, co realnie z tymi modelami się dzieje. ChatGPT to jest tak naprawdę końcówka 2022 roku i tak naprawdę nie minęły jeszcze trzy lata od premiery tego narzędzia, więc wydaje mi się, że i tak ten postęp jest istotny. Gdybyśmy wzięli dowolny framework front-endowy czy back-endowy i zobaczyli, gdzie on był trzy lata temu, to raczej to było mniej więcej to samo narzędzie, prawda? Natomiast wydaje mi się, że jeśli chodzi o to, co możesz dzisiaj robić z usługami opartymi o generatywną sztuczną inteligencję, a co mogłeś robić z GPT 3.5 albo z wcześniejszymi modelami, to mało kto by powiedział, że nie widzi tej różnicy.
Gdy opowiadałeś o tym wszystkim to z tyłu głowy miałem np. komputery kwantowe, które mają być rewolucją, ale też słyszymy już o nich dłuższy czas i na razie niewiele się dzieje. Może taka ciekawostka – w następnym odcinku będę rozmawiał na temat biokomputerów, które mogą być wykorzystywane w sztucznej inteligencji i w wyszukiwaniu wzorców, które są w stanie pobierać chyba 1000 razy mniej energii, żeby coś rozwiązać. Wiadomo, że mają swoje problemy, bo te komórki mogą istnieć np. tylko 10 dni, ale to też może być kolejny krok. W zasadzie jak tak na to patrzę to okazuje się, że te maszyny, sztuczna inteligencja czy właśnie biokomputery i tak zmierzają bardziej w kierunku człowieka i jak to wszystko osiągniemy to wtedy może się zrobić naprawdę ciekawie.
Jeśli rozmawiamy o rozwoju sztucznej inteligencji to jest taka koncepcja take-offu, która mniej więcej wskazuje na to, że dopóki sztuczna inteligencja sama siebie nie będzie tworzyć i rozwijać, to nadal będziemy obserwować takie zachowania tej technologii, które wynikają wprost z naszych nawyków, z tego jak my rozumiemy świat. Natomiast kiedy ta sztuczna inteligencja zacznie sama nad sobą pracować (zupełnie nie chcę oceniać, czy to się w ogóle wydarzy, czy to ma szansę się wydarzyć), to tutaj wtedy to może iść w innym kierunku. Dla mnie to jest dość zrozumiałe pytanie. Czy będzie taki punkt w czasie, czy ten take-off faktycznie się pojawi – bo wtedy tak jak wielu wskazuje, to już trudno o jakiekolwiek inne prognozy – tak to po prostu widzę. Natomiast tak, zgodzę się – podałeś dobry przykład z komputerami kwantowymi – prawdopodobnie to, co obserwujemy przez ostatnie 2, 3, 4 lata, to nie jest zupełny przeskok w tym sensie, że teraz mamy coś zupełnie nowego, natomiast znowu ten horyzont dla mnie jest tak krótki, że i tak uznałbym ten rozwój za po prostu istotny.
To na razie zostawmy przyszłość. Może jeszcze do niej dzisiaj wrócimy, a zastanowimy się nad tym co jest teraz. Jakie konkretne zadania AI przejęła już dziś, a w czym człowiek jest nadal niezastąpiony?
To można bardzo dobrze i bardzo łatwo unaocznić przeglądając historyczne wydania modeli takich jak GPT-3 i GPT-4 – na stronach w notatkach marketingowych pojawiały się benchmarki, czyli takie testy ewaluacji tych modeli, które pokazywały jak w ostatnich latach te modele się zmieniają i bardzo mało benchmarków, które jeszcze rok czy dwa lata temu były na poziomie np. 70% ukończenia ma teraz poziom ukończenia inny niż np. 100%, więc taka skuteczność, niezawodność tych modeli w testach syntetycznych po prostu idzie w górę. Jak to się przekłada na taką codzienną pracę, mówiąc konkretnie o programiście, bo w tym kontekście rozmawiamy – widać taką transformację, przejście od sztucznej inteligencji jako rozwiązania do tylko i wyłącznie uzupełnienia kodu albo odpowiadania na jakieś izolowane zapytania do pełnoprawnego asystenta programisty. Tutaj full disclaimer – ja jestem osobą, która bardzo mocno siedzi w tej branży, mogę być po prostu zbiasowany tym, co mówię – natomiast wydaje mi się, że ta perspektywa agentów AI, z którymi współpracujemy jest już tak naprawdę w zasięgu ręki, szczególnie myśląc o popularnych, mainstreamowych technologiach, o takim typowym web developerze, który po prostu chciałby delegować coraz więcej zadań do agenta sztucznej inteligencji. Na początku, kiedy pojawił się GitHub Copilot widzieliśmy, że pojawiał się kod średniej jakości, interpretowanie poleceń użytkownika nie było tak niezawodne jak mogłoby się nam wydawać. Natomiast teraz w takich edytorach jak chociażby Windsurf czy Cursor wydajemy jakieś polecenie, ten model wchodzi w tryb autonomicznej pracy nad problemem, planuje tę pracę, pisze większą ilość kodu, ten kod będzie dotyczył kilku różnych plików. W najlepszych usługach model sam skoryguje swoje działanie z wykorzystaniem statycznej analizy kodu i zapyta nas jeszcze o kolejne kroki, więc jest to naprawdę inny paradygmat współpracy ze sztuczną inteligencją niż chociażby autocomplete, który już od dłuższego czasu był w naszych edytorach, więc ta autonomia i sprawczość to jest coś, co możemy testować już dzisiaj. Drugim obszarem, który wydaje się być mniej popularny jest wykorzystanie współpracy z modelami rozumującymi np. OpenAI o3, bo te modele rozumujące pozwalają nam właśnie wychodzić poza kod i tutaj mam na myśli takie zadanie jak chociażby planowanie poszczególnych problemów, wyszukiwanie jakichś ukrytych założeń, wyszukiwanie luk w wymaganiach biznesowych czy np. konwertowanie kodu na tekst, dokumentację, które możemy zaprezentować użytkownikowi końcowemu. Wydaje mi się, że poszerza się odpowiedzialność i wpływ sztucznej inteligencji, natomiast to nie jest tak, że dzięki temu, programista może spędzać więcej czasu na graniu w gry – jest to taki ciekawy paradoks, że pomimo tego, że ta sprawczość i wpływ sztucznej inteligencji na zawód programisty rośnie, to my nadal pozostajemy w roli opiekuna i operatora tych wszystkich rozwiązań.
Dopytałbym jeszcze o to, co właśnie powiedziałeś – mamy wrażenie, że piszemy mniej kodu, dzięki temu, że mamy rozwiązania tego typu, ale czy faktycznie poświęcamy na to mniej czasu? Przynajmniej z mojego doświadczenia wynika, że czasami dopieszczenie tego, co zostało utworzone, może zajmować podobną ilość czasu (wiadomo, że to może zależeć od naszego doświadczenia i od jakości tego AI), ale czy to nie jest tak, że czasowo może wcale nie jest lepiej? Jakościowo może być lepiej, może po prostu zwracam uwagę na inne tematy, ale czy to faktycznie jest dużo szybciej?
Może odwołam się tutaj do przykładu 10xDevs, czyli takiego programu, który rozwijamy w ramach Przeprogramowanych dotyczącego programowania ze sztuczną inteligencją. Początkowe lekcje nie dotyczą tam kodowania, programowania, ale pracy z planowaniem wymaganiami i analizą projektu, co dla wielu programistów jest zaskakujące. Natomiast jaka jest ta konsekwencja? Im więcej my tego kontekstu nabudujemy, im jaśniejsza jest dokumentacja, im jaśniejsze wymagania, tym lepsze są efekty właśnie na etapie implementacji. Często sprowadzam to do tego, że paradoksalnie musisz opóźniać to generowanie odpowiedzi i skupiać się na tym, żeby lepiej przygotować ten fundament, na którym będziesz chciał pracować. To dotyczy również ChatGPT i innych usług. Jeśli oczywiście zaczniemy tutaj rozmawiać o słynnym vibe codingu, które polega na tym, że wydajemy zapytania, naciskamy na klawiaturze tab albo enter i myślimy wyłącznie o implementacji, to pewnie szybko dojdziemy do ściany. I tutaj pojawią się te problemy związane czy to z utrzymywaniem tego kodu, z poprawianiem tego po sztucznej inteligencji itd. Natomiast jeśli popracujemy nad tym kontekstem, czy też będziemy nadawać kierunek, nadal będziemy korzystać z umiejętności programisty, który potrafi dekomponować problemy, rozbijać je na mniejsze składowe itd. Wydaje mi się, że wtedy znacznie łatwiej odczuć te korzyści, co nie oznacza, że jest to łatwe do zaakceptowania. Wielu uczestników 10xDevs również wskazuje na to, że jest duża bariera mentalna, żeby się przełączyć na taki inny sposób współpracy ze sztuczną inteligencją. Natomiast ta technologia jest dzisiaj na tym właśnie etapie. To nie jest taki turbo boost i autopilot, który robi rzeczy po prostu szybciej i lepiej. Po twojej stronie jest faktycznie wysiłek, który musisz w to włożyć.
Jak opowiadasz o tym, to gdzieś tam z tyłu głowy mam koncepcję typu TDD czy BDD, gdzie wszyscy mówią, że tak – to jest super praktyka, fajnie to robić i tak dalej. A patrzysz na firmy i okazuje się, że tylko 10% firm to realizuje, a reszta działa tak samo jak, do tej pory.
Bardzo dobra uwaga. Określiłbym to tak, że jest jakiś taki north star, jakiś kierunek – ten docelowy model współpracy, ale po drodze są też niedoskonałości. Na przykład zgadzam się tutaj z uczestnikami naszego programu, że ta praca na kontekście, na wymaganiach, pisanie obszernych promptów może wydawać się nadmiarowe, czy po prostu często jest nadmiarowe i kończy się to tym, że poświęcasz więcej czasu nie na pisanie docelowego programu, ale wydaje mi się, że jest to jakaś niedoskonałość tych narzędzi, z którymi dzisiaj pracujemy. Bardziej zwracałbym uwagę na to, żeby złapać ten model współpracy ze sztuczną inteligencją – ważniejszy jest kontekst i nadanie kierunku niż przejmowanie się objętością, bo wydaje mi się, że z biegiem czasu ten problem będzie rozwiązywany. W naszym programie wskazujemy na coś takiego jak metaprompting, czyli wykorzystywanie modeli do tego, żeby poprawiać nasze polecenia do sztucznej inteligencji – modele pomagają nam lepiej komunikować się ze sztuczną inteligencją i wchodzisz już wtedy w taki bardziej zautomatyzowany proces komunikacji, więc faktycznie tak jest. To też ogólnie dotyczy całego dużego tematu automatyzacji, gdzie często nie automatyzujemy rzeczy, bo na początku musimy coś porobić, a przecież moglibyśmy to docelowe zadanie zrobić – musimy ustawić jakiś scenariusz np. w make.com, n8n itd. Po co to robić skoro mogę od razu coś tutaj wyklikać, mogę np. przejrzeć te maile. Natomiast z czasem zauważasz jednak, że jeśli zbudujesz ten scenariusz i on zacznie na siebie zarabiać, to te krzywe wysiłku i kosztów włożonych w ten proces w pewnym momencie się przecinają i wydaje mi się, że ze sztuczną inteligencją też jest tak, że masz koszt początkowy, prace na kontekście, prace na wymaganiach, przygotowania tego fundamentu i za jakiś czas zaczynasz z niego korzystać, ale musisz zobaczyć to całościowo, żeby te koszty i zyski były po prostu obecne w całym tym procesie.
Wróćmy do tego, co chciałeś jeszcze powiedzieć w kontekście mojego pytania.
Wydaje mi się, że sam wątek roli programisty jest ciekawy, bo sporo osób ma tutaj taki dylemat wewnętrzny à propos tego, co oni właściwie powinni robić, w którym kierunku powinni się orientować w przyszłości biorąc pod uwagę to jak te narzędzie się rozwijają. Tutaj wskazałbym na takie trzy aspekty. Po pierwsze, na pewno sprawne poruszanie się po kompleksowych systemach informatycznych – taka wiedza full stackowa. To coraz częściej pojawia się w dyskusji. Coraz większa liczba pracodawców wskazuje, że po prostu oczekiwania względem pracowników rosną i wydaje mi się, że znowu będzie moda na full stack developerów i że odejdziemy od takiej hiperspecjalizacji w jednym małym obszarze twojej aplikacji, bo po prostu będzie takie oczekiwanie, żeby zadania powtarzalne czy te mniejszej wagi delegować do sztucznej inteligencji. Oznacza to jednak, że jeśli np. będziesz wykonywał code review danej usługi to będziesz musiał podejmować ostateczną decyzję, co tak naprawdę w tym kodzie jest i jak to wszystko działa. Nawet kiedy wydajesz polecenie to musisz rozumieć, w którym kierunku ta sztuczna inteligencja ma iść. To jest pierwsza sprawa, czyli właśnie te kompetencje full stackowe, całościowe rozumienie systemów informatycznych. To jest też często nauka takich rzeczy, które są niekomfortowe – głębszych tematów niż do tej pory: architektury systemów, wzorców projektowych w większej skali, infrastruktury, wychodzenia jakby poza to czym zajmowałeś się wcześniej. Druga rzecz, o której już powiedziałem – to jest nadawanie kontekstu dla sztucznej inteligencji i nie jest to aż tak nowe, bo np. mieliśmy taką praktykę jak Architectural Decision Records, czyli ADR-y. To była taka praktyka stosowana w wielu firmach polegająca na tym, że kiedy w projekcie podejmujemy ważną decyzję, to powinien po niej pozostać jakiś ślad, czy to w postaci pliku tekstowego, pliku markdown, czy fragmentu dokumentacji. Okazuje się, że bardzo dobrze działa to na modele, bo z tej wiedzy, śladów architektonicznych mogą one przechodzić do bardziej skutecznej implementacji. Jest to istotne i wydaje mi się, że będzie to jeszcze bardziej istotne. Nietrudno też zauważyć, że kiedy rozmawiamy o sztucznej inteligencji, to często mówi się o takim podejściu, takiej praktyce jak „talk to your data”, czyli mamy jakąś porcję danych np. danych firmowych i chcemy o niej porozmawiać ze sztuczną inteligencją. W kontekście programowania jest bardzo podobnie. Mamy jakąś porcję wymagań, decyzji, jakichś notatek na temat projektu i one muszą być sformatowane i przygotowane w spójny, jasny sposób z minimalną ilością sprzeczności, żeby modele po prostu wiedziały co robić. Na koniec wspomnę o wydawaniu poleceń w precyzyjny sposób – nadawanie kierunku sztucznej inteligencji co znowu wpływa na osobistą produktywność – czyli mamy te narzędzia, ale jak to zrobić, żeby one faktycznie przynosiły korzyść? Jak modele tak naprawdę działają? Jakie polecenie zadziała, a jakie polecenie nie zadziała? Czy określone zadanie jest za duże, czy jest optymalnego rozmiaru? Z jakiego modelu powinienem skorzystać, bo okazuje się, że modeli masz kilka i każdy działa troszkę inaczej. Albo jak to zrobić, żeby nie wysycić całego budżetu w ramach subskrypcji? Wydaje mi się, że jest to też taka kompetencja, którą warto tutaj nabywać. Oczywiście pomimo tego wszystkiego powiedziałbym, że technologia to jedno, a szybkość adopcji tych nowych kompetencji to drugie. I nawet jeśli wcześniej mówiłem o rozwoju, który jest dla mnie istotny i zauważalny, to nie zmienia to faktu, że gdy troszkę zasięgnie się języka w wielu firmach, z którymi rozmawiam ja czy nasi trenerzy w ramach Przeprogramowanych, to wygląda to różnie. Nie mówię, że źle, nie mówię, że rewelacyjnie, po prostu bardzo różnie. Dochodzą tu wszystkie aspekty czysto ludzkie: czyli obawa przed zmianą, awersja do zmiany. Często jednak w naszym kraju jest takie wyobrażenie, że programista pisze kod, a niekoniecznie dowozi produkt i moja tożsamość wynika z tego, ile tego kodu napiszę i niekoniecznie chcę teraz delegować to wszystko do sztucznej inteligencji – trzeba więc o tym pamiętać. Natomiast jak ktoś ma otwartą głowę, to sugerowałbym badanie tego obszaru, bo w najbliższych latach raczej od tego nie uciekniemy.
To po tym wstępie mam takie dość ważne pytanie w kontekście naszych słuchaczy, bo raczej są to osoby, które są początkujące albo zastanawiają się nad wejściem do branży –
czy w ogóle uczenie programowania ma jeszcze sens? Jakie umiejętności warto rozwijać, aby właśnie nie być niezastąpionym w czasach AI?
To jest chyba najtrudniejsze pytanie, nad którym się zastanawiam od dłuższego czasu i jest to też takie pytanie, które często pojawia się w naszych webinarach, które prowadzimy w ramach Przeprogramowanych. Odpowiadając na to pytanie mam pewnego rodzaju wytrych, bo ono jest dla mnie trochę niewłaściwe, ponieważ zakłada ono, że jest jakaś powtarzalna, ujednolicona metryka, czy też wskaźnik tego, czym ten sens programowania jest. Myślę, że zgodzimy się co do tego, że naprawdę ilu ludzi tyle motywacji à propos tego, po co tym programowaniem się tak naprawdę zajmować. Dla jednych jest to tylko i wyłącznie praca, dla innych jest to znowu jakaś część ich tożsamości, inni mają osobowość jakiegoś takiego budowniczego i tym programowaniem chcą się zajmować. Jestem takiego zdania, że jeśli kogoś to naprawdę interesuje, to z samego tego faktu uzyskuje dużą przewagę względem innych osób na rynku. Jeśli naprawdę potrafisz się zatracić w tym temacie, jeśli nie podchodzisz do nauki programowania z Excelem i nie liczysz tego, jaka pensja będzie w drugim, szóstym, dwunastym miesiącu, to wydaje mi się, że rynek to jakoś wynagrodzi w ten czy inny sposób. Może to jest naiwne. Może trudno mi się wczuć w perspektywę początkujących, bo trochę tych lat za mną, natomiast tak bym sobie to wyobrażał. I też, jeśli chcemy kogoś zmotywować, to raczej w ten sposób. Wydaje mi się, że to jest jakaś forma motywacji, żeby jednak zachęcać ludzi do tego, żeby wkładali wysiłek w to, co robią. Natomiast są też takie składowe całej dyskusji o starcie w programowaniu, które są bardziej mierzalne i moim zdaniem jedna z takich bardziej mierzalnych obserwacji dotyczy tego, że po prostu wokół nas jest więcej technologii jako takiej, na wielu różnych polach, na wielu różnych obszarach. I może to być mała firma księgowa, która chce wdrożyć jakieś automatyzacje wokół np. Exceli, programów księgowych. Może to być wielki software house, który po prostu skutecznie rośnie, ma coraz więcej kasy, coraz większą liczbę klientów. Mogą być to jakieś integracje itd. Może to być np. wspieranie lokalnego fryzjera albo barbera, albo kogoś jeszcze innego. Wydaje mi się, że okazji na to, żeby te skille programistyczne przekuć na jakąś formę zarabiania i spełniania się będzie coraz więcej. Wydaje mi się też, że trudno z tym polemizować. Plusem jest to, że mamy bardzo zróżnicowany stack. Nie zawsze i nie wszędzie musisz bardzo głęboko wchodzić, żeby wykorzystywać taką kompetencję myślenia, czy pracy jak programista. Mamy chociażby low-code, mamy no-code, możemy korzystać z gotowych rozwiązań itd., co sprawia, że po prostu można z tego wyciągnąć taki wniosek, że w ten czy inny sposób możesz przydać się temu rynkowi.
Może tylko dodam parę historii z mojego podwórka, bo widzę co dzieje się na Facebooku, czy na LinkedInie, że
nie ma pracy
albo
że nie wchodź, bo to nie ma sensu. Mam takie doświadczenie, że 2 osoby, które u mnie akurat uczą się front-endu w ostatnich 30 dniach znalazły pracę. Jedna znalazła staż. Okazuje się, że można znaleźć pracę, nawet w takich obszarach, które wydaje się, że będą zastąpione na początku – często mówiło się, że front odpada pierwszy. Pewnie idzie to trochę w taką stronę, że będzie trzeba działać bardziej full stackowo, ale da się. I mówię o tym po to, żeby też osoby, które nas słuchają i są np. w trakcie nauki, nie porzucały tego, tylko dlatego, że gdzieś tam na Facebooku przeczytały, że nie warto albo że ktoś wysłał 100 CV i nie ma żadnego odzewu, bo może się okazać, że np. ta osoba ma złe CV albo zapomniała dodać informacje o tym, że zezwala na zachowanie danych osobowych, które są w CV i kontakt z nim. Podejść może być bardzo dużo, więc miejmy to też na uwadze, że można, da się i chyba najważniejsza jest ta adopcja. To nie jest tak, że weszło to już do firm, tylko pewnie dopiero będzie powoli wchodzić. Tak jak mówiłeś, jeszcze przed nagrywaniem – dużo firm raczej skłania się ku temu, żeby korzystać z tego, aby ich programiści mogli wytworzyć coś szybciej, ale niekoniecznie, żeby ich zwalniać, prawda?
Zdecydowanie – można to też zobrazować na takich anty wzorcach: jeśli np. twoje wyobrażenie zdobycia pracy w programowaniu sprowadza się do tego, żeby otoczyć się dużą ilością teorii, żeby czytać opracowanie teoretyczne, żeby być takim ekspertem w słownikach i definicjach, a nigdy niczego nie zbudować, to faktycznie możesz mieć problem. Mówiąc brutalnie, możesz być takim znakomitym słownikiem, z którym można pogadać o tym, czym ta technologia jest. Natomiast ja jestem fanem podejścia bardziej praktycznego i na samym początku to jest pewne wyzwanie, żeby wyobrazić sobie, co ja w ogóle mogę robić z wiedzą o programowaniu, z językami programowania itd. W ramach Przeprogramowanych często podajemy taką rekomendację: po prostu wymyśl sobie najprostszy projekt, który może ci się do czegoś przydać, taki, z którego chciałbyś korzystać, iść w tym kierunku na co dzień. I tam pojawią się pytania i odpowiedzi à propos tego wszystkiego, czym to programowanie jest. Praktyka jest jakby odpowiedzią na te wyzwania. Można pokazywać się w różnych miejscach, odwiedzać meetupy po to, żeby budować swój wizerunek w mediach społecznościowych. Można też prowadzić bloga. To jest nadal dostępne. Nikt nie zabronił dzielić się wiedzą, tylko jest to właśnie kwestia motywacji, chęci i tego ile w tym wszystkim jest takiego wyrachowania. To jest trochę coś takiego jak taki trading: wchodzić czy nie wchodzić – tak mówią traderzy. Masz jakiś asset na rynku, na giełdzie i on rośnie albo maleje i teraz pytanie czy wchodzić czy nie wchodzić – to nie jest taki model nauki programowania, który chciałbym promować. Takie granie na giełdzie rynku pracy pod tytułem, że dzisiaj mi się coś opłaca, a jutro mi się coś nie opłaca, bo tamci ludzie też często tracą i jakiś tam wniosek z tego płynie, moim zdaniem.
Jak tak powiedziałeś o giełdzie, to pomyślałem o czymś takim: że jak zamierzasz grać, to po prostu co miesiąc wkładaj tę cegiełkę i buduj swój portfel.
Też super podejście wprost z tematu finansów.
Tak jest. Czy chciałbyś coś jeszcze dodać do tego tematu, czy przechodzimy do kolejnego pytania?
Wydaje mi się, że jak mówiliśmy o umiejętnościach full stackowych, to chciałbym jeszcze zwrócić uwagę na jakąś taką inteligencję emocjonalną, na takie EQ. Bywa to trudne dla początkujących programistów, ale znowu – jeśli mamy się czymś wyróżnić względem maszyn, względem algorytmów, to jest to ten kontakt z drugim człowiekiem, co nie jest oczywiste i łatwe. Ja też nie jestem ekspertem od tego, żeby budować i projektować skille miękkie, natomiast zwracałbym na to uwagę. Ja to nazywam tak, że nie chcesz się ścigać w wyścigu, w którym z góry jesteś przegrany np. na szybkość generowania kodu, bo raczej algorytmy będą w najbliższym czasie w tym lepsze. A jakie wyścigi są poza zasięgiem tych maszyn? Kontakt z drugim człowiekiem, challengowanie wymagań biznesowych w ten czy inny sposób – łączenie kropek na poziomie firmy.
Wróćmy do tematu samych narzędzi. Jakie narzędzia faktycznie ułatwiają pracę programiście, a jakie narzędzia to chwilowa moda?
Na samym początku zwróciłbym uwagę na taki zestaw narzędzi, który jest bardzo często przeoczany, to znaczy to są te usługi przeglądarkowe na czele z ChatGPT, Google Gemini czy Claude AI. Wydaje się, że jest taka tendencja przeskakiwania ponad tymi narzędziami do czegoś bliżej twojego środowiska pracy, ale tam jest sporo miejsca na zdobycie konkretnych kompetencji, uzyskanie realnych korzyści, bo ChatGPT to nie jest dzisiaj wyłącznie chat bot, z którym sobie możemy pożartować. To jest chociażby narzędzie Deep Research, które może dla nas wykonywać research na jakiś temat. Mamy modele rozumujące, takie jak właśnie o3 albo o4-mini, które mogą dla nas przeprowadzać jakieś bardziej złożone analizy. Mamy tam opcje personalizacji chociażby Custom GPTs albo tak zwane Gemmy w Gemini, które sprawiają, że możemy budować wirtualnych asystentów. To jest taki entry level, który tak naprawdę nie jest entry levelem. Zachęcałbym do tego, chociaż nie mam w tym żadnego takiego mierzalnego interesu z tego, że to polecam, ale polecałbym po prostu spędzić więcej czasu w tych narzędziach, zanim przeskoczymy do kolejnych rozwiązań. Jeśli chodzi o świat programowania, to jaki jest minus tego wszystkiego, o czym powiedziałem? To jest to wychodzenie z edytora, bo ChatGPT żyje albo w aplikacji desktopowej, albo w przeglądarce, podobnie Gemini i Claude AI. Programiści nie lubią wyskakiwać ze swojego edytora. Jeśli chcemy popracować ze sztuczną inteligencją, to musi ona być lepiej zintegrowana z takim codziennym workflow programisty. Tutaj będziemy szukać edytorów, czy też narzędzi, plug-inów tak zwanych AI-native, albo AI-first. Koronnym przykładem jest na pewno Visual Studio Code z Copilotem – obecnie chyba najpopularniejsze rozwiązanie na rynku, patrząc też po tym, o co firmy pytają w kontekście chociażby naszych warsztatów. Zaraz za nim fork of Visual Studio takie jak edytor Cursor, edytor Windsurf, plug-iny do Visual Studio takie jak Cline, czy też to, co dzieje się teraz w JetBrains – tam mamy chociażby agenta Junie, mamy też AI asystenta w JetBrains. To są rozwiązania, które zdaniem wielu pozostają w tyle względem tego, co dzieje się w konkurencji w Visual Studio. Natomiast jeśli zobaczymy, że możemy wybierać różne modele, jeśli możemy edytować swoje prompty, możemy przełączać się między asystentami a modelami rozumującymi, to jest to na pewno pozytywny wpływ i taka istotna korzyść, którą możemy tutaj odnieść. Jeśli natomiast chodzi o to, co przed nami albo to, w którą stronę możemy iść, jeśli już zintegrujemy sztuczną inteligencję z naszym środowiskiem, to jest to na pewno współpraca z agentami, czyli takimi bardziej sprawczymi, bardziej autonomicznymi systemami, do których możemy delegować większe, bardziej złożone zadania. Możemy tutaj myśleć o takiej pracy bardziej end-to-end. I tutaj na pewno jeśli chodzi o współpracę z agentami, liderami są Windsurf i Cursor, które bardzo wcześnie postawiły na taki tryb współpracy ze sztuczną inteligencją. Copilot próbuje tutaj nadganiać. Mamy również plug-iny, które do dzisiaj sprowadzają się wyłącznie do generowania kodu czy autouzupełnienia. Dzisiaj to jest troszkę za mało. Dzisiaj zawsze szukałbym tego trybu agentowego, do którego możemy delegować coraz większą liczbę zadań. Konsekwencją/plusem tego jest to, że po prostu możemy bardziej poczuć ten wpływ sztucznej inteligencji na craft programisty i nie musimy czytać o tym w mediach społecznościowych albo oglądać tego przez szybę. Wszędzie tam, gdzie ci agenci się pojawiają, gdzie mamy wybór modeli, dla mnie to jest plus. Przynajmniej w swojej bańce, widzę, że coraz większa liczba programistów interesuje się automatyzacjami jako takimi i integracjami ze sztuczną inteligencją. I tutaj można pomyśleć o rozwiązaniach takich jak Make.com albo n8n hostowane po swojej stronie, gdzie budujemy scenariusze bardziej wysokopoziomowe, opisujemy procesy czy to chociażby przeglądanie maili, czy jakieś osobiste automatyzacje związane ze sprawdzaniem danych w wielu różnych miejscach i tam też integrujemy tego agenta sztucznej inteligencji. Co on nam daje? Pierwsza z brzegu korzyść to jest interpretowanie tekstu i treści opartych o tekst. Otaczamy się bardzo dużą ilością takich treści: e-maile i dokumenty, z których korzystamy, baza wiedzy, którą również możemy interpretować, jakieś zapytania od klientów, zapytania ofertowe, czy też bardziej integracje techniczne. Tutaj mam na myśli chociażby Agents SDK od OpenAI. Mamy też bibliotekę Agents, którą niedawno opublikował Cloudflare. To są takie rozwiązania, które pozwalają integrować sztuczną inteligencję. Znowu, wychodząc teraz na troszkę wyższy poziom abstrakcji. Mamy takie narzędzia, które wspierają nowoczesnego pracownika umysłowego. Tutaj często pojawia się chociażby Perplexity, czyli wyszukiwarka nowej generacji, która też korzysta z potencjału sztucznej inteligencji. Różnica pomiędzy Google a Perplexity jest taka, że w Google, przynajmniej do jakiegoś czasu, zanim nie został wprowadzony tzw. AI mode, mogliśmy zadawać pytania zamknięte. Nie mieliśmy konwersacji, nie mogliśmy pogłębiać tych problemów. Natomiast w Perplexity de facto rozmawiamy sobie z jakimś agentem o problemie. Możemy sobie budować bazę wiedzy na dany temat. Notebook LM od Google to jest kolejne narzędzie, które zyskuje na znaczeniu. Ono ułatwia przyswajanie wiedzy. Ta wiedza może bazować na wielu różnych formatach takich jak dokumenty tekstowe, jak filmy na YouTube, jak PDF itd. W Notebook LM możemy to wszystko skompresować i zbudować sobie dla nas tak sformatowaną informację, treść danego typu, która będzie po prostu dostosowana do naszych oczekiwań. Ja osobiście też korzystam z ElevenReadera od firmy ElevenLabs. To jest taki lektor na żądanie. Mamy dedykowaną aplikację mobilną. Wrzucamy do ElevenReadera jakiś link do artykułu czy wpisu na blogu i lektor zaczyna nam go po prostu czytać. Dostajemy taki podcast na żądanie, takie odczytanie tego artykułu. To się sprawdza, bo też nie zawsze akurat chcę coś czytać, ale np. jadę gdzieś autobusem i chcę sobie posłuchać treści na dany temat i po prostu ten ElevenReader mi to czyta.
To tak z ciekawości, czy sprawdza się to w przypadku, kiedy jest to tekst związany z kodowaniem, w sensie masz tam jakieś źródła, jakiś listing czy coś takiego. To się sprawdza, czy nie?
Nie. Pewnie to czytanie linijka po linijce i znak po znaku kodu nie jest na takim poziomie jak czytanie tekstu. To tutaj na pewno dobra uwaga.
Dobrze. Wychodzi na to, że dużo możliwości, dużo różnych rozwiązań, ale wiąże się to też pewnie z jakimiś zagrożeniami. Jakie są zagrożenia jeśli chodzi o korzystanie właśnie z AI w kodzie? Nie wiem, mam tu na myśli błędy, bezpieczeństwo, etyka itd.
Pierwsza rzecz, na którą warto zwrócić uwagę – zawsze, kiedy o takich tematach rozmawiam to to podkreślam – to są po prostu ograniczenia techniczne, ograniczenia sztucznej inteligencji. Co mam tutaj na myśli? Modele nie są podłączone do wiedzy o świecie live w trybie always on. Z modelami nie zawsze porozmawiasz o tym, co działo się dzisiaj, co działo się wczoraj. Zwykle każdy model ma jakiś tak zwany „cutoff date”, czyli datę, która wskazuje na to, kiedy kończy się wiedza w ramach modelu. Jest to taka data wiedzy krańcowej – wszystko to, co wydarzyło się na świecie po tej dacie krańcowej, po tym cutoff date będzie raczej niedostępne dla modelu. O ile nie wzbogacimy go o dodatkowe narzędzia. Kiedy może to być problematyczne w kontekście programowania? Kiedy np. ten cutoff date w przypadku modelu to jest np. 1 marca 2025 roku, a miesiąc później pojawia się jakaś nowa wersja frameworka. Wtedy ten model po prostu nie jest w stanie o tym frameworku porozmawiać. Konsekwencja jest też taka, że w nowszej wersji frameworka nie wygenerujemy np. kodu, który będzie po prostu jakościowy, który będzie odpowiadał naszym oczekiwaniom.
Może zadam tutaj od razu pytanie: nie wygenerujemy kodu, czy wygenerujemy taki kod, który będzie zasugerowany przez AI, że to jest poprawna odpowiedź i tak musi być?
Odpowiedź jest tak naprawdę złożona. Pierwszy poziom tej odpowiedzi to jest to, że zwykle wygenerujemy kod i dostaniemy jakieś halucynacje na ten czy inny temat. Natomiast wielu twórców modeli w momencie, kiedy publikuje nowe wersje, wskazuje na tzw. rejection rate, czyli stopień odrzucania zapytań przez model. Jest to też feature sam w sobie, żeby te modele nauczyć mówienia, jeśli faktycznie czegoś nie wiedzą. Dla początkujących, dla tych, którzy nie mają doświadczenia, jest to znacznie korzystniejsze niż to, że dostaniesz jakąś ścianę kodu, wydaje ci się, że to jest działające, poprawne, linter nie krzyczy, a nie ma to nic wspólnego z rzeczywistością. Znowu – dwa poziomy, temat jest złożony, ale dobra obserwacja – łatwo się tutaj naciąć.
To może od razu dopytam o halucynacje, bo rozmawialiśmy trochę o początkujących programistach, to teraz inne pytanie: czy nie tylko ci doświadczeni programiści będą w stanie wychwycić właśnie te halucynacje i czy to nie jest tak, że – idąc troszkę dalej – po pierwsze potrzebujemy seniora, żeby mógł wychwycić ten temat, a po drugie ten senior też kiedyś pójdzie na emeryturę, więc potrzebujemy mieć ścieżkę dla juniora, która pozwoli dojść do tego seniora? Zgodzisz się, że to wszystko jest ze sobą powiązane i to pokazuje, że wcale nie jest tak, że to koniec juniorów?
Zgadzam się. Często przedstawiam te halucynacje w ogóle bez kontekstu sztucznej inteligencji, bo można je przedstawić jako po prostu kod niskiej jakości i ten kod na jakimś etapie udowodni swoje niedziałanie albo swoją niską jakość na wielu różnych etapach. Po pierwsze, projekt może się przestać kompilować i tutaj nie musisz mieć zbyt wiele doświadczenia, żeby zauważyć, że coś nie działa. Żaden AI nie złapie ci tutaj na wykroku, że np. idziesz na produkcję z czymś, co się nie kompiluje, nie buduje, bo to tym de facto są często halucynacje – mamy jakieś błędy składniowe, pobieranie informacji z API, które nie istnieje itd. Potem mamy wychodzenie z tym kodem i np. proponowanie merge'a do głównego brancha. Znowu – czy przed sztuczną inteligencją mieliśmy jakieś praktyki, które nas przed tym mogą uchronić? Najpopularniejszą jest Code Review. Druga popularna praktyka to jest Peer Programming, czyli programowanie nad danym feature’em z drugą osobą. Czy to jest coś, co pojawiło się dzisiaj? Nie. Czy to jest coś, co było ignorowane przed czasami sztucznej inteligencji? Tak. Wiele firm nie robiło zupełnie Code Review, wpuszczając na produkcję kod wątpliwej jakości. Mamy też taką sytuację, kiedy wszystko działa, oczekiwania biznesowe są spełnione, ale np. z punktu widzenia seniora – bo nawiązuje już do tego o co zapytałeś – ten kod można byłoby napisać lepiej. Tutaj akurat faktycznie to doświadczenie jest dźwignią, jest korzystne. To rozumienie, że coś można napisać lepiej, prościej, łatwiej, nawet pomimo tego, że te wymagania funkcjonalne są spełnione – faktycznie wtedy ten senior łatwiej wychwyci takie problemy. Natomiast zapytałeś o juniorów – wydaje mi się, że to wszystko, o czym powiedziałem, dotyczy również juniorów. Junior też przechodzi przez ścieżkę uczenia się tego, jakie mamy wzorce w kodzie, jakie dobre praktyki są związane z wychodzeniem na produkcję, z rozwijaniem funkcjonalności biznesowych, więc to nie jest tak, że junior będzie tutaj zupełnie bez szans jeśli chodzi o to, co zrobić z takim kodem wygenerowanym przez sztuczną inteligencję. Najtrudniejsza sytuacja będzie wtedy, kiedy pozornie wszystko działa, a można byłoby to napisać troszkę lepiej i tutaj senior wprost skorzysta ze swojego doświadczenia.
Czy coś tutaj jeszcze dodać do tego mojego pytania?
Na pewno mamy ryzyka związane z kompetencjami na poziomie bardziej miękkim i tutaj początkujący i bardziej doświadczeni są na to narażeni. Dla początkujących tym ryzykiem, również w kontekście kariery, byłoby chyba takie zbyt szybkie, zbyt naiwne delegowanie do sztucznej inteligencji tego, czym to programowanie tak naprawdę jest – takiego procesu programowania bez nabywania wiedzy o tym, jak programować w danej technologii, jaka składnia dotyczy danego języka, z czym wiąże się wykorzystywanie danego frameworka czy technologii. Jestem prawie pewien tego, że programując ze sztuczną inteligencją bez wiedzy o tym, co tak naprawdę robisz, prędzej czy później zobaczysz ten sufit, tę ścianę funkcjonalności – nie będziesz w stanie przekroczyć jakiejś bariery, jakiegoś problemu, nie będziesz w stanie zdebugować jakiejś sytuacji, która się pojawia, jeśli nie nauczyłeś się programować, chociażby na takim poziomie, żeby rozumieć co się w ogóle dzieje w tym edytorze. Nie polecałbym więc tego robić. Niektórzy wprost mówią o tym, że właśnie jest taka korelacja rosnącego doświadczenia i tego ile i jak często możesz polegać na sztucznej inteligencji. Im bardziej doświadczony jesteś, tym bardziej bezpiecznie może być realizowane to delegowanie. Natomiast to też nie jest tak, że ci doświadczeni są zupełnie wolni od tych problemów, bo tutaj znowu pojawia się taki problem albo lenistwa, albo przywiązania – takiej stopniowej utraty kontroli nad projektem. Może się zdarzyć, że masz dobrze zbudowany kontekst, wiesz jak obsługiwać sztuczną inteligencję, rozumiesz ten kod, który ona produkuje, ale tak naprawdę znowu powstaje potem pytanie kto produkuje ten projekt? Czy sztuczna inteligencja, czy ty jako doświadczony programista? Jeśli będziesz coraz bardziej oddalał się od tego jak coś działa, to łatwo przeoczyć problemy nie tylko na poziomie logiki biznesowej, ale właśnie chociażby na poziomie tego, że coś mogłoby być bardziej optymalne, czy coś mogłoby być optymalnie zrealizowane albo i nie. Jest też problem przywiązania się do takiego mainstreamu technologii, które sztuczna inteligencja opanowała. Na czym to polega? Wyobraźmy sobie, że wierzymy w sztuczną inteligencję, chcemy z niej korzystać, jeśli chodzi o implementacje poszczególnych rozwiązań i zauważamy, że ona bardzo dobrze korzysta chociażby z Reacta, z Tailwinda, z popularnych technologii webowych na 2025 rok. Może się zdarzyć, że po prostu przestają nas interesować innowacje w obszarze programowania, bo wiemy, w czym sprawdza się sztuczna inteligencja, gdzie robi za nas robotę i zaczynamy stosować te same technologie do wszystkiego, co próbujemy w tym programowaniu zrobić. Mamy więc efekt jakby „znieczulenia” na innowacje i wydaje mi się, że właściwie dla wszystkich jest to duże ryzyko, bo tak naprawdę ciągle mamy postępy w tej branży – w tym czy innym obszarze – mamy jakieś bardziej hipsterskie, bardziej alternatywne rozwiązania, a przez fakt, że wszystko chcesz realizować ze sztuczną inteligencją, możesz to przegapić. Wydaje mi się, że taka pasywność w kontekście technologii jest niebezpieczna. Gdy mówimy o bezpieczeństwie i ryzyku, warto byłoby tutaj poruszyć cały duży temat prywatności jako takiej. Jeśli korzystamy ze sztucznej inteligencji, to co najmniej jedna dodatkowa firma uzyskuje dodatkowy wgląd w nasz kod, jakiś dostawca tej usługi. Tutaj na pewno musimy sprawdzić, w jakich ramach to się dzieje – na co wskazuje polityka prywatności, czy my np. domyślnie pozwalamy na to, żeby kod, który przekazujemy do tego czy innego modelu był wykorzystywany w procesie treningu. Na szczęście w większości usług mainstreamowych można to dzisiaj wyłączyć, nie jest to żaden problem. Na poziomie samych usług mamy też dodatkowe ustawienia prywatności, np. w ustawieniach Cursora możemy włączyć tak zwany privacy mode i wtedy Cursor również nie będzie wykorzystywał tego kodu do procesu usprawnienia swoich usług. Jest też temat tego, co właściwie jest w tych naszych poleceniach – czyli nie przekazujemy numerów do kart kredytowych wraz z pinem, nie przekazujemy PESEL-i, nie przekazujemy maili naszych klientów, dokumentów wrażliwych, które potencjalnie zawierają jakąś przewagę biznesową danej firmy. Niekoniecznie z tego powodu, że to wypłynie, można raczej powiedzieć, że nie wypłynie, ale jeśli mamy dbać o higienę zarządzania treścią, zarządzanie danymi, to anonimizacja jest tutaj istotna.
Gdy wspomniałeś o tych wszystkich PESEL-ach i innych rzeczach, to zastanawiam się nad tym, na jakiej zasadzie to wszystko faktycznie działa, bo wyobrażam sobie sytuację, w której np. przez pomyłkę robimy dump bazy danych do miejsca, gdzie mamy podłączonego np. Cursora, i ten plik tam wpada, po dwóch minutach go usuwamy, ale pytanie, czy on już nie został zassany. Jest to może taki bardzo abstrakcyjny temat, ale zastanawiałeś się nad tym, albo może miałeś taką historię związaną z takim tematem?
No to tutaj kilka spraw. Po pierwsze, jeśli chodzi o samych dostawców modeli, to oni w swoich publikacjach wspominają, że starają się filtrować takie dane w ten czy inny sposób: PII, dane wrażliwe, dane, przez które można zidentyfikować klienta czy jakąś firmę. Jest to też obszar researchu. Częstym zarzutem względem dostawców tych usług jest to, że oni są zupełnie znieczuleni na ten problem, bo chcieliby wykraść wszystkie informacje i na tej podstawie ulepszać te modele. Jasne – jest to trochę kwestia zaufania i dobrej woli czy wierzysz w to, co oni piszą i publikują. Natomiast ja opowiadam o tym, co można wyczytać na stronach takich firm, jak chociażby OpenAI czy Anthropic, które wprost mówią, że część researchu poświęcają na filtrowanie takich informacji. Oni po prostu nie chcą ryzykować swojej reputacji tym, że informacje wrażliwe wyciekną w ten czy inny sposób. Mamy takie praktyki czysto techniczne. Jest to na pewno zapewnienie takiej optymalnej konfiguracji edytora, włączenie trybu privacy mode. Możemy również decydować o tym, gdzie taki indeks wiedzy o naszym projekcie ma być utrzymywany. On nie zawsze musi być utrzymywany w chmurze. Może być utrzymywany na naszej maszynie w formie lokalnej. Copilot ma np. takie dwa indeksy wiedzy o naszym projekcie: lokalny i chmurowy. Jeden z nich możemy sobie wyłączyć. Są też takie pliki w stylu git ignore, w Cursorze to się akurat nazywa cursor ignore, które pozwalają nam wskazać, że np. do tego folderu raczej nie powinieneś zaglądać. Natomiast nawet twórcy Cursora mówią o tym, że to jest „under development” można powiedzieć. Oni nie są w stanie zagwarantować w stu procentach, że to, co znajduje się w danym folderze, nigdy nie zostanie dotknięte przez tego czy innego agenta. Nie ma tu jednej praktyki. Tak samo, wydaje mi się, że nie ma jednej praktyki tego, że twoja aplikacja webowa będzie bezpieczna – to zawsze jest suma praktyk, suma świadomości zespołu czy tego, co się w ramach danej inicjatywy dzieje. Podobnie jest z korzystaniem ze sztucznej inteligencji. To jest jakaś suma praktyk, suma doświadczenia, suma dojrzałości zespołu, która pozwala minimalizować to ryzyko. Gdy rozmawia się np. z osobami, które zawodowo zajmują się ryzykiem, to raczej nigdy nie sprowadzisz ryzyka do zera. Raczej właśnie mitygujesz ryzyko, omijasz je, starasz się je minimalizować, ale wszystko ma jakieś ryzyko wpisane w siebie. Tak to widzę.
To, co powiedzieliśmy do tej pory może być trochę przytłaczające – choćby ilość tych rozwiązań, ilość rzeczy, na które trzeba zwrócić uwagę, więc kolejne pytanie brzmi: jak budować pewność siebie i nie dać się zastraszyć sztucznej inteligencji, tylko wykorzystywać ją jako sprzymierzeńca?
Mam w zasadzie takie dwie odpowiedzi. Jedna odpowiedź jest w pewnym sensie wbrew moim interesom, bo powinienem utrzymywać taką aurę tajemniczości wokół tych technologii i mówić, że jeśli skorzystasz z moich usług, to ja ci pozwolę zrozumieć jak to działa, ale ja mówię tak: raczej to zainstaluj, raczej się tym pobaw, potestuj, podotykaj i zobaczysz dwie strony medalu tej technologii. Zobaczysz potencjał, ale zobaczysz też ograniczenia i limity. Wydaje mi się, że właśnie to poznanie limitów i ograniczeń bardzo pomaga w uspokojeniu się, pomaga w tym, żeby nie czuć tej nadmiernej presji względem tego, czym ta technologia tak naprawdę jest. Zawsze mówimy to też na koniec warsztatów naszym klientom: fajnie, że spędziłeś z nami 4-8 godzin albo 2 dni pracując nad danym tematem, ale jeśli ty z tego nie będziesz korzystał, to te warsztaty były tak naprawdę stratą czasu, bo będziesz bazował na naszych wyobrażeniach. Praktyka i taki codzienny kontakt z tymi rozwiązaniami jest istotny nie tylko pod względem feature'ów i maksowania swoich możliwości, ale tego, żeby troszkę spokojniej do tego wszystkiego podchodzić, bo tam są po prostu realne ograniczenia. Nawet wczoraj widziałem jakąś reklamę kursu czy usługi (nie chcę skupiać się na nazwiskach), która mówiła, że halucynacji już nie ma, a teraz naprawdę chodzi o to, żeby zdobyć wiedzę jak komunikować się z AI. To jest nieprawda. Halucynacje są i dość łatwo je wywołać. Chociażby ta kwestia frameworków, o których rozmawialiśmy przed chwilą. Natomiast z tą druga częścią bym się zgodził – faktycznie warto uczyć się komunikacji z tymi modelami, żeby zobaczyć, że te halucynacje tam tak naprawdę są. W przyszłości może w mniejszym stopniu, ale nadal są. Druga część tej odpowiedzi – taka, którą ja praktykuję na co dzień – jest być może nieco trudniejsza, ale znowu, mi osobiście pomaga, więc się nią podzielę. Jest to zasięganie wiedzy u źródła. I źródłem przepraszam, że to powiem, to nie są media społecznościowe, albo influencerzy, którzy zajmują się tą tematyką. Źródłem są często publikacje naukowe, które po prostu realnie mówią o tym, do jakich wniosków doszedł dany ośrodek badawczy pracując nad daną technologią, jakie możliwości są w tej technologii, jakie są ograniczenia. Jeśli chodzi o benchmarki, to co ten benchmark tak naprawdę mierzy, czego nie mierzy itd. To jest o tyle trudne, że te kropki, w tym przypadku w kontekście nauki u źródła, zaczynają łączyć się znacznie później, bo np. jeśli popraktykujemy pracę z ChatGPT, to już po pierwszym tygodniu można mieć jakieś wyobrażenia à propos tego, czym ten ChatGPT jest. Jeśli uczymy się z prac naukowych, to jest bardzo duża bariera wejścia. Przynajmniej ja miałem dużą barierę wejścia, bo przez całą karierę zajmowałem się zupełnie czymś innym. Wejście do świata machine learningu, głębokiego uczenia maszynowego było większym wyzwaniem, ale i tak te kropki później zaczynają się łączyć i okazuje się, że właśnie osoby, które zajmują się tą technologią widzą paradoksalnie więcej ograniczeń niż osoby, które o tym wszystkim opowiadają. To jest takie bardzo ciekawe zachowanie. Tutaj często przytaczam przykład jednej z konferencji, na której byłem chyba pod koniec 2023 – była to konferencja o machine learningu i ani razu nie padła tam nazwa sztuczna inteligencja, bo badacze, którzy zajmują się tym tematem są troszkę bardziej przy ziemi jeśli chodzi o pracę z tymi technologiami. Nie ma aż tak dużego budowania narracji przejmowania świata jak mogłoby się wydawać – co pokazało mi, że może to jest jednak ten kierunek, którym powinienem się zająć, czyli właśnie machine learning, deep learning, rozumienie pokrótce, po części tego, czym te modele są i to mi pomaga. Na pewno zachęcam do praktyki i tego, żeby czasami zejść nieco głębiej, spędzić tam troszkę czasu i wyciągnąć wnioski.
To tak na koniec pytanie, może nawet hipoteza – czy nie uważasz, że na naszych oczach odbywa się zmiana pokoleniowa wśród programistów? Spora część devów nie chce AI albo nie chce się starać o pracę, woli po prostu przejść na emeryturę, co może być szansą dla juniorów, którzy będą musieli zastąpić seniorów?
Jeśli chodzi o zmianę pokoleniową, to przynajmniej w naszym polskim kontekście jest to o tyle utrudnione, że nie mieliśmy aż tak wielu pokoleń, które w tym IT pracowało. Nie jest to np. sytuacja z Doliny Krzemowej, gdzie przy firmach, które dzisiaj znamy, pracowali nasi rodzice. Raczej w Polsce większość programistów jest pierwszym pokoleniem, które pracuje w IT w ten czy inny sposób, więc może nie jest to zmiana pokoleniowa, ale taka zmiana paradygmatów na pewno się odbywa, a przynajmniej jest debata o tym, czym te nowe paradygmaty mają być. Jak można to sobie wyobrazić? Zmianą takiego paradygmatu na pewno było przejście z desktopa na rozwiązania webowe – to była jakaś zmiana. Musieliśmy nauczyć się innego sposobu dowożenia aplikacji. Ta dystrybucja była ułatwiona, ale mieliśmy inne kategorie szans i ryzyk. Taką zmianą paradygmatu był na pewno mobile i AppStore’y oraz to, że np. każdy mógł sobie wrzucić aplikację do sklepu. Ten sklep był promowany przez dostawcę danej platformy, kiedyś Microsoft, teraz głównie Android i iOS, czy Google i Apple – ale to też była jakaś zmiana paradygmatu. Chmura była też na pewno taką zmianą koncepcji, gdzie nie widziałeś już infrastruktury, a dalej działało coś w sieci. Wydaje mi się, że to wejście na sztuczną inteligencję, czy w ogóle popularyzacja sztucznej inteligencji, to jest znowu taka zmiana paradygmatu. Znowu możemy debatować czy jest bardziej szansą, czy ryzykiem. Nie ma co ukrywać – mam ten bias wierzenia w to, że to ogólnie będzie mieć pozytywny wpływ na naszą branżę. Natomiast widzę też programistów, którzy są zupełnie na nie i po prostu wzbraniają się rękami i nogami, żeby tę technologię badać i eksplorować. Powiedziałbym raczej, że jest to szansa dla pozostałych, bo jest sporo miejsca na to, żeby firmy czy jakieś indywidualności wzrastały, „rozkwitały” na tym polu przez to, że część ludzi po prostu zupełnie nie chce się zajmować nowymi technologiami. I teraz pytanie brzmi, kto ten nowy tort w ten czy inny sposób obsłuży?
To ja może jeszcze dopytam o te szanse, o których mówisz, bo bardzo pozytywnie o tym opowiadasz. Trochę starasz się powiedzieć o tym, że to twoja bańka i ty tak na to patrzysz, ale jakbyśmy popatrzyli do mainstreamowych mediów, to raczej nie mówi się o szansie, tylko o samym zagrożeniu, a w zasadzie końcu branży. Chciałbyś to jakoś skomentować?
Tak, znowu – czy to jest taka tendencja, która pojawiła się na skutek rozwoju sztucznej inteligencji? Myślę, że nie. Na Facebooka wchodzę rzadko, ale jak wchodzę, to raczej częściej dowiaduję się, jaki samochód miał wypadek w mojej okolicy, który polityk obraził innego polityka i jaka afera na poziomie państwa czy świata się odbywa. Po prostu media tak działają. Mamy też skłonność do tego, żeby bardziej zwracać uwagę na ryzyka, na informacje niekorzystne. Jest to pewnie częściowo uzasadnione ewolucyjnie, tzn. byliśmy bardziej wrażliwi na to, co może nam się stać złego, aniżeli dobrego. W przypadku sztucznej inteligencji też tak jest. Na pewno mamy tutaj mocne bazowanie na popkulturze, na tym, że oglądaliśmy Terminatora. Terminator nas akurat ratował (przynajmniej jeden z nich, ten drugi chciał zgładzić ludzkość), ale mieliśmy inne filmy, które pokazywały, że ta sztuczna inteligencja raczej niczego dobrego nie wprowadzi. I to się łączy. Wcale nie mamy też łatwych warunków ekonomicznych, globalnych i to też wpływa na to, że czy programista, czy każdy inny pracownik umysłowy będzie w dobrej pozycji. Wojna, jakieś kwestie inflacji, kwestie tego, że w ogóle pracodawcy patrzą na koszty w o wiele bardziej ostrożny sposób. Do tego wszystkiego dochodzi właśnie ta nowa technologia, więc z mojej perspektywy po pierwsze temat jest złożony, z drugiej strony wolałbym poszukać miejsca dla siebie, jakichś szans w tym wszystkim. Po trzecie, wśród ludzi jest ogólnie tendencja do zauważania niekorzystnych aspektów tej rzeczywistości, która cię otacza. I to wszystko wpływa chyba na to, że jak włączasz wiadomości, to o tym słychać. Natomiast wydaje mi się, że gdybyśmy tak szczerze popatrzyli na to, co pojawia się w śniadaniówkach, które czasami oglądam, czy w innych programach, to jest dużo informacji o nowych osiągnięciach, o nagrodach Nobla dla twórców, którzy zajmują się sztuczną inteligencją, o tym, że sztuczna inteligencja wynajduje nowe leki, pozwala kontrybuować do algorytmów itd., więc tak po prostu to widzę.
OK, to może jeszcze coś na temat samych juniorów – czy dla nich to jest faktycznie szansa, czy wręcz odwrotnie? Czy powinni się obawiać, że zamiast nich, będzie wykorzystywana sztuczna inteligencja, która po prostu będzie pisać za nich lepszy kod?
To też jest trudne pytanie. To jest tak samo trudne pytanie, jak pytanie o to, jak będzie się zmieniać programowanie jako takie. Ja tutaj trochę odpowiem jak taki boomer – jak jesteś początkujący, świeżo po studiach, to prawdopodobnie nigdy więcej już nie będziesz miał tyle czasu i energii, żeby wejść do programowania. Im bardziej skomplikowane staje się twoje życie, im więcej odpowiedzialności masz w innych obszarach, tym pewnie trudniej będzie zająć się tym programowaniem. Natomiast początkujący ma też otwartą głowę, która jest korzyścią samą w sobie, co można wykorzystać na swoją korzyść. Wydaje mi się, że jest jakaś szansa dla tych początkujących. Pracodawcy nie zawsze mają takie zdanie jak ja, ale ja tymi budżetami nie zarządzam, więc nie chciałbym tutaj mówić, że ten czy inny pracodawca się myli. Raczej powiedziałbym, że jeśli chodzi o pracodawców, to jest może taki okres z jednej strony chaosu, przeczekania tego początkowego tornado o nazwie sztuczna inteligencja, poukładania sobie procesów na nowo, bo nie ma co ukrywać – z punktu widzenia pracodawców, to też jest duża zmiana – kiedy np. prowadzisz rekrutację zdalnie i ktoś przychodzi na rekrutację z otwartym ChatGPT w innym oknie, ty tego nie widzisz. On okazuje się być niesamowitym programistą. Przyjmujesz go do pracy i okazuje się, że on nie ma pojęcia, o czym w ogóle rozmawialiście na tej rozmowie kwalifikacyjnej, więc nie dziwię się, że jest jakaś taka wrażliwość czy ostrożność względem zapraszania do tej branży początkujących. Znowu – jeśli nie sprowadzimy tego do takiego wyrachowania, że masz Excela i oceniasz opłacalność, że to mi się opłaca, tylko interesuje cię ten temat, to wierzę w to, że rynek ci to wynagrodzi w ten czy inny sposób. Raczej mówi się, że osoby, które naprawdę coś osiągnęły w dowolnej branży, to ich ścieżka nie rozpoczynała się od rozpisania 45 punktów, przez które muszą przejść 78 czynników ryzyka, 128 wymiarów opłacalności tej rzeczy. One po prostu pochłaniały się bez reszty w jakimś obszarze, chciały się czymś zajmować i po prostu wymyślały siebie na nowo. To, co na pewno nie działa, to moim zdaniem przesadne teoretyzowanie, trzymanie się jakichś labelek à propos tego, co wolno, a co nie wolno, raczej po prostu nastawiałbym się na praktykę – na to, żeby budować rzeczy, budować swoje portfolio, żeby dawać się poznać. Był chyba taki program/kampania Maćka Aniserowicza, „Daj się poznać”, gdzie początkujący programiści mogli zgłaszać swoje projekty i na tej podstawie starałbym się wyszukiwać szanse. I też reguły rynku są takie jak mówisz – skoro chcemy zatrudniać seniorów, a jedni będą odchodzić na emeryturę, to skądś trzeba czerpać. Częściowo może będziemy czerpać z tego, że narzędzia pozwolą nam pracować lepiej, łatwiej, skuteczniej, ale częściowo musisz mieć ludzi, żeby mieć ciągłość, jeśli chodzi o to jak twoje zespoły działają, więc nie jestem tutaj w stanie przytoczyć twardych danych czy statystyk à propos tego co mówię, natomiast wydaje mi się, że jak masz czas i przestrzeń i okazję, żeby się nauczyć programowania, to biorąc pod uwagę to, ile tej technologii wokół nas jest, to jest ciekawy i warty rozważenie kierunek.
To skoro jest ciekawy i warty rozważenia, to może polecisz nam jakiś materiał, np. książkę, która pozwoli zgłębić wiedzę na temat AI?
W moim przypadku takim materiałem, który zrobił na mnie największe wrażenie i był też najbardziej praktyczny, był kurs Jeremy'ego Howarda o nazwie Practical Deep Learning for Coders. Dlaczego jest to materiał, który chciałbym polecić? Z tego powodu, że wiele publikacji na temat sztucznej inteligencji wymaga jakiegoś backgroundu czy to w świecie machine learningu, czy matematyki, czy takiej wiedzy akademickiej. Tutaj Jeremy Howard, który jest właściwie ikoną w świecie machine learningu, bardzo mocno stawia na to płynne przejście z punktu, w którym jesteś, do świata machine learningu. Bazuje on na wiedzy o programowaniu, na budowaniu aplikacji, na dość wysokich poziomach abstrakcji. Nie zasypuje cię matematyką, macierzami, ale pokazuje ci po pierwsze, co możesz zrobić z tą sztuczną inteligencją, jakie narzędzia warto stosować. Na samym początku jest tam dość wysoki poziom abstrakcji i stopniowo ten poziom trudności wzrasta. I dodatkowo to jest darmowe – zero złotych musisz za to zapłacić, więc ja to wykorzystywałem.
Uczciwa cena.
Dokładnie tak, więc to jest od razu plus tysiąc do rekomendacji.
A czy ten materiał nadaje się dla osób, które są na początku swojej drogi? Mam tu na myśli osoby, które jeszcze nie mają doświadczenia komercyjnego. Czy myślisz, że są w stanie przejść ten materiał i coś z niego wynieść?
Będzie to trudne, będzie to wymagające. Wydaje mi się, że nadal dobre kursy o tym, czym programowanie jest, mogą się okazać tutaj korzystne na start, żeby zrozumieć temat w obszarze jakiejś jednej technologii, jednego problemu.
Ale powiedzmy, że uznajemy, że taka osoba np. zrobiła parę projektów w JavaScripcie, we front-endzie, wie, co to jest API?
Taka osoba tak. Myślałem, że mówisz o osobie, która w ogóle nie miała kontaktu z programowaniem. Natomiast pierwsze lekcje w tym kursie (kurs jest w ogóle dostępny na stronie Fast.AI) polegają po prostu na tym, że importujesz bibliotekę FastAI od Jeremy'ego Howarda i robisz coś na zasadzie wytrenuj model X i wygeneruj treść Y. I to jest wszystko. On pokazuje, że zobacz, jak wiele możesz zrobić przy minimalnej ilości kodu, który musisz napisać i dopiero później ten poziom trudności rośnie. On używa tam takiej fajnej metafory, że jak ktoś chce się zakochać w koszykówce to najpierw powinien pooglądać sobie mecze, wsady, zobaczyć jak ktoś rzuca piłką, a dopiero potem zajmować się np. teorią kozłowania. I właśnie w tym samym stylu podchodzi do promocji swoich materiałów – najpierw zajawia cię tym, czym ta sztuczna inteligencja jest. Tam akurat są ćwiczenia pokroju np. rozpoznawanie ras psów albo analiza jakiegoś tekstu poetyckiego, albo jedno z ćwiczeń, które tam się pojawia, dotyczy tego, że mamy listę pasażerów Titanica z wieloma różnymi cechami każdego pasażera i musimy przewidzieć, czy on tę katastrofę przeżył, czy nie. To jest już taki bardziej złożony przykład, ale bardziej obrazujący to, gdzie można wykorzystać tę sztuczną inteligencję, zamiast właśnie okładania się teorią, bo jest mnóstwo publikacji czy wykładów mówiących o tym, jakie są teoretyczne podstawy tego wszystkiego. Zupełnie szczerze, dla mnie to jest często zbyt wymagający temat na dzisiaj, ale właśnie w Practical Deep Learning for Coders jest to fajne przejście od kompetencji dotyczących programowania do kompetencji takiego AI engineera czy osoby, która w ogóle rozumie, z czym ma do czynienia. Dlatego właśnie to rekomenduję.
OK, super. To tak na koniec Przemku, gdzie możemy cię znaleźć w sieci?
Na dzisiaj takim koronnym projektem, który rozwijamy razem z Marcinem Czarkowskim, jest projekt Opanuj.AI. To jest taka platforma, takie przedsięwzięcie dotyczące ogólnie sztucznej inteligencji i uczenia maszynowego. Jednym z przedsięwzięć jest tam podcast, który rozwijamy. Co miesiąc pojawia się podsumowanie najważniejszych informacji ze świata sztucznej inteligencji. Celowo nie robimy tego częściej, bo właśnie często brakuje jednak tego dystansu w branży. Wydaje nam się, że taki miesięczny cykl informowania jest optymalny. Zresztą ludzie to też doceniają. Na Opanuj.AI jest też możliwość zapisania się na konsultacje. Jeśli chcielibyście np. u siebie w firmie przeprowadzić warsztaty, które my poprowadzimy, to na Opanuj.AI możecie się na takie warsztaty zapisać. Wywodzimy się z YouTube'a – mamy kanał Przeprogramowani na YouTubie. Tam jest kilkaset filmów na temat programowania, które wspólnie tworzyliśmy. Taki najnowszy projekt, który rozwijamy, to jest 10xDevs.pl, czyli program dla programistów, którzy są zainteresowani bardziej komfortowym, bardziej skutecznym, produktywnym programowaniem z wykorzystaniem potencjału sztucznej inteligencji. Akurat teraz jesteśmy na takim etapie przejściowym, pomiędzy pierwszą a drugą edycją, ale można zapisywać się już na listę oczekujących, więc 10xDevs.pl tam można znaleźć coś fajnego.
Wszystkich zainteresowanych zapraszam na podane strony, w podane miejsca. A tobie Przemku bardzo dziękuję za tę rozmowę i podzielenie się z nami swoimi doświadczeniami.
Bardzo dziękuję za zaproszenie, a wszystkim początkującym: stay strong, nie trać wiary – programowanie jest czymś, co warto eksplorować. Powodzenia!
Dzięki jeszcze raz. Trzymajcie się. Hej!




