Przejdź do Treści

Kodując z AI: Ewolucja czy rewolucja programowania?

TechChatter – sezon 3 – odcinek 1.

Kodując z AI: Ewolucja czy rewolucja programowania?

Czy AI naprawdę zastąpi programistów, zmieniając rynek pracy raz na zawsze? A może zamiast tego stanie się ich najcenniejszym narzędziem, które pozwoli tworzyć szybciej, lepiej i bardziej efektywnie? W tym odcinku przyglądamy się, jak sztuczna inteligencja rewolucjonizuje branżę programistyczną – od eliminowania rutynowych zadań po wspieranie innowacji i rozwój kreatywnych rozwiązań.

Zapraszamy do słuchania!

Tematy poruszane w odcinku:

  • Czy AI faktycznie wyeliminuje część programistów z rynku pracy?
  • Jakie zadania AI przejmuje, a jakie nadal wymagają ludzkiej kreatywności?
  • Praktyczne zastosowania narzędzi takich jak Copilot, SourceGraph czy SonarCube.
  • Dlaczego dobre prompty są kluczowe w pracy z AI?
  • Jakie zagrożenia i wyzwania wiążą się z używaniem sztucznej inteligencji w projektach?

Ekspert odcinka:

Senior Delivery Architect. Programista oraz Project Manager z ponad 17-letnim doświadczeniem zawodowym, specjalizujący się głównie w technologiach Microsoftu. Jego pasją są Internet Rzeczy (IoT) oraz nowe technologie. Prywatnie angażuje się w rozwój kilku innowacyjnych projektów związanych z elektroniką oraz sztuczną inteligencją. Czerpie ogromną satysfakcję z tworzenia nowatorskich rozwiązań, które łączą te dwa światy.

Artur Smólka

Prowadzący podcast:

Szymon Głowania

Lider do spraw programowania w Capgemini. Specjalizuje się w projektowaniu kokpitów menedżerskich oraz automatyzacji procesów. Regularnie prowadzi szkolenia, dzieląc się swoją wiedzą i umiejętnościami. Pasjonuje się uczeniem maszynowym, które rozwija w ramach projektu doktorskiego. W wolnym czasie realizuje swoje pasje, takie jak jazda konna, wędkarstwo, słuchanie muzyki oraz gra na instrumentach.

Linki do zagadnień poruszanych w rozmowie:

GitHub Copilot: https://www.sonarsource.com/learn/github-copilot-ai-generated-code/

Sourcegraph Cody: https://sourcegraph.com/blog/copilot-vs-cody-why-context-matters-for-code-ai/

SonarQube: https://www.sonarsource.com/solutions/ai/ai-coding-assistants/

Copilot Edits: https://code.visualstudio.com/docs/copilot/copilot-edits/

Tabnine: https://www.tabnine.com/

Vision for Copilot: https://www.microsoft.com/en-us/microsoft-copilot/blog/2024/10/01/introducing-copilot-labs-and-copilot-vision/

Data Analysis for Copilot: https://github.com/microsoft/vscode-data-analysis-for-copilot/

Podcast Capgemini Polska

    Artur Smółka
    Każdego programistę zachęcam, żeby spróbować, żeby zapoznać się z tymi narzędziami, bo część z nich uważa, że używanie Chatu GPT to jest tak jak boczne kółka przy rowerze. Ja w wieku 30 lat już nie chcę z bocznymi kółkami przy rowerze jeździć, bo będę co najmniej dziwnie wyglądał na ulicy. A to wcale nie tak. To raczej możemy sobie przyrównać do takiego przejścia z silnika parowego na silnik spalinowy, czyli całkowicie konkretny game changer, czyli coś, co bardzo mocno zmienia zasady gry.

    Szymon Głowania
    Słuchasz trzeciego sezonu podcastu TechChatter, audycji Capgemini Polska, w której zanurzymy się w świecie technologii. Posłuchaj rozmów naszych ekspertek i ekspertów, odkryj projekty realizowane w Polsce i zobacz, jakie innowacje, które współtworzymy, kształtują naszą przyszłość. Przekonajmy się, że praca w sektorze IT może być naprawdę pasjonująca. Gotowi? Zaczynamy!

    Dzisiejszym gościem naszego programu będzie Artur Smółka, który jest deweloperem z długoletnim stażem w Capgemini. Obecnie dostarcza i opiekuje się projektami z różnych dziedzin, głównie dostępnych w technologiach Microsoftu. Oprócz tego, że jest programistą i entuzjastą AI oraz stara się zastosować wszystkie te możliwe rozwiązania z AI u nas w firmie w codziennej pracy, interesuje się IoT, czyli internetem rzeczy, czyli pewnie cały dom będzie nam świecił i wszystko będzie sterowane z telefonu, no i chętnie podzieli się z nami tutaj tą wiedzą.

    Szymon Głowania
    Witam cię Arturze.

    Artur Smółka
    Cześć, witaj Szymon. Dokładnie tak jak powiedziałeś, przede wszystkim programowanie, później kwestie wiązane z zarządzaniem projektami, ale programowanie to jest to, co najbardziej mnie interesuje, także myślę, że będziemy mieli o czym rozmawiać.

    Szymon Głowania
    Temat programistów 30K już się powoli wyczerpał u nas na rynku. Natomiast bardzo kluczowym pytaniem wydaje się obecnie to, czy AI zastąpi programistów i zupełnie będziemy mogli się ich pozbyć, czy pozbyć się nas, bo w sumie programistami jesteśmy obydwoje.

    Artur Smółka
    Widzę, że lecimy od razu z takim pytaniem, które nurtuje większość programistów. Odpowiedź jest na to, że tak, oczywiście AI zastąpi programistów, ale tylko tych słabych, tylko tych, którzy są naprawdę po jakichś kursach, którzy nie mają doświadczenia, ponieważ w tym momencie rynek oczekuje od programisty nie tylko znajomości kodu. Znajomość kodu, jak wiecie, może być doskonale delegowana do AI. Tam kod pisany jest praktycznie od ręki w bardzo szybki sposób. Często ten kod jest całkiem dobrej jakości. Natomiast to czego AI jeszcze nie potrafi i myślę, że przez długi czas nie będzie potrafić, to jest wymyślanie algorytmów, wymyślanie rozwiązań, taka bardzo kreatywna praca abstrakcyjna.
    I tutaj programiści czy architekci oprogramowania będą zawsze, zawsze potrzebni myślę, że jeszcze przez długi, naprawdę długi czas. Także odpowiadając na twoje pytanie w skrócie zastąpi klepaczy kodu. Zastąpi te osoby, które mają podstawową znajomość jakiegoś języka programowania bez idącej za tą znajomością wiedzy związanej z architekturą, związanej z technologią i bez wiedzy związanej z rozwiązywaniem jakichś problemów. Także część programistów z pewnością może być zaniepokojona, ale ci lepsi mogą być spokojni.

    Szymon Głowania
    Czyli jakby siłą rzeczy zredukuje to część naszej pracy, mam nadzieję, że tej, której nie lubimy na co dzień robić, czyli po prostu jakieś zwykłe, nieciekawe elementy, które trzeba po prostu przeklepać, żeby one rzeczywiście były dostępne i nie są szczytem naszych marzeń do pisania programistycznych. Natomiast siłą rzeczy tak czy inaczej musimy też pewnie pamiętać o tym, że żeby stać się tym dobrym programistą, no to kiedyś trzeba być tym słabym. Czyli każdy z nas będzie startował i uważam, że my też kiedyś zaczynaliśmy. Wtedy tych narzędzi AI, takich dostępnych, konwersacyjnych nie było za dużo. Uczyć trzeba było się raczej z dokumentacji, później dopiero ewentualnie z jakichś książek i to raczej wszystko było anglojęzyczne.
    Natomiast na chwilę obecną jesteśmy w stanie się uczyć z takich narzędzi, z którymi rozmawiamy i tą podstawową wiedzę tam zdobywać. Czyli jest to zarówno ułatwienie w pewnym stopniu, przynajmniej z mojej perspektywy, no bo mamy nauczyciela 24 godziny na dobę z danego języka, no ale też utrudnienie, no bo ten próg, czyli ta nasza wiedza musi być większa, żebyśmy byli w stanie z tego korzystać. Nie wiem jak z twojej perspektywy, ale u mnie wykorzystanie tych narzędzi AI to nie jest tak, że każdy może siąść do tego toola i napisać wszystko, tylko jeśli masz tą wiedzę rzeczywiście programistyczną, no to jest dużo łatwiejsze.
    I tutaj te pytania są już stricte związane z kodem, a nie tylko z logiką biznesową. Jak u Ciebie to wygląda? 

    Artur Smółka
    Tak, dokładnie, masz pełną rację, całkowicie się z Tobą zgadzam. Generalnie na AI możemy delegować to, co najmniej nas interesuje. Szczególnie jeżeli to są takie bardzo długie instrukcje, dobrze nam znane, jakieś rozbudowane instrukcje warunkowe czy zapytania, AI doskonale sobie z tym poradzi. Natomiast to co pozostaje cały czas na barkach programisty to jest wymyślenie rozwiązania i zasugerowanie AI jak ma dane rozwiązanie zaimplementować. Musimy też pamiętać, że używanie AI np. takie narzędzia jak CoPilot jest to taki swoisty game changer. To nie tak, że on nam proponuje rozwiązanie i my musimy zawsze je zaakceptować. Często to pierwsze rozwiązanie, pierwsza wersja kodu, którą AI nam zasugeruje jest może nie tyle wadliwa, co nieoptymalna, lekko tak rzecz ujmując.
    I wtedy jest rolą programisty czy właśnie architekta, aby dyskutować, bo pamiętajmy, że te wszystkie dzisiejsze dodatki do środowisk programistycznych mają gdzieś tam wbudowany chat w takiej albo innej wersji. I z reguły my musimy wspólnie z AI dojść do tej najbardziej optymalnej wersji kodu, sugerując mu na przykład co powinien zmienić, czy co jednak pozostaje jeszcze do optymalizacji, bazując na naszej wiedzy i na naszym doświadczeniu.

    Szymon Głowania
    Czyli zwróci w takim pierwszym kroku rozwiązanie, które jest mu najłatwiej zrobić, tak samo jak programiście, ale pozostawia pewne pole do tego, żeby to później gdzieś dożyłować i już w pewnym momencie ta architektura była optymalna i dostarczane było to w takim czasie jak chcemy. 

    Artur Smółka
    Tak, dokładnie tak. I tu znowu widzisz, rozróżniamy takich programistów, powiedzmy niedoświadczonych, nie? Programistów, którzy się zachłysną. O kurcze, ten AI naprawdę napisał cały ekran kodu, po kompilacji on działa, nawet test jednostkowy przeszedł, czyli wydaje się, że to jest fajnie, że jest okej. I mam taką obserwację, że część programistów niejako zachłyśnie się. Ojej, on zrobi tyle rzeczy za mnie, to idźmy tą drogą. Podczas gdy bardziej doświadczony deweloper zauważy, że to wcale tak nie działa, że jednak ten kod co prawda jest napisany, często spełni większość, o ile nie wszystkie testy jednostkowe, ale on nadal nie jest optymalny.
    Być może nie jest też spójny z naszym stylem programowania, z tym jak mamy ułożone jakieś klasy. Często, tak jak powiedziałeś, to rozwiązanie jest najbardziej oczywiste. Takie, które powiedzmy jakiś student też by napisał i by wpadł, tylko tyle, że AI zrobi to zdecydowanie szybciej, wręcz w mgnieniu oka nam ten kod wygeneruje.

    Szymon Głowania
    Pierwszy wynik wyszukiwania na Stack Overflow, nie?

    Artur Smółka
    Tak, natomiast dalej jest rolą programisty, żeby to zweryfikować, zwalidować i niejako wspólnie z AI dojść do optymalnego rozwiązania. I tu znowu jest ta ekspertyza programisty, ekspertyza dewelopera, który już ma doświadczenie, widzi ten kod, widzi jakieś tam patterny takie bardzo oczywiste w tym kodzie. No i wspólnie z AI właśnie przez ten chat najczęściej albo przez zwykłe takie ingerencje manualne w kod spróbuje dojść do najbardziej optymalnej wersji. I często ona jest zdecydowanie odmienna od tego prototypu czy tej wersji pierwotnej zaproponowanej przez AI. odróżnia tych deweloperów początkujących, którzy są pod wielkim wrażeniem tego AI od deweloperów bardziej zaawansowanych z doświadczeniem, którzy często podchodzą do AI z rezerwą.
    Bo jeszcze taka myśl poboczna, którą chcę się z wami podzielić jest taka, że ja generalnie jestem wielkim fanem AI, jestem wielkim fanem tych wszystkich możemy sobie zaraz przez nie przejść, bo niektóre z nich są po prostu świetne, a przy tym dość tanie, więc tam wartość do ceny jest niesamowicie korzystna dla nas. Ale widzicie, ja zawsze zachęcam właścicieli projektów, czy jakichś liderów technicznych, żebyśmy jednak używali tego AI. Oczywiście możemy sobie powiedzieć o wszelkich niebezpieczeństwach, które za tym idą, no ale ja jednak zachęcam. I często pojawia się, wiecie, taki opór ze strony tych bardziej doświadczonych programistów. Oni mówią, nie, AI to sugeruje tylko jakieś najprostsze rozwiązania, to jest plagiat, to jest stack overflow i tak dalej.
    I jak ktoś tak mówi, to od razu zapala mi się taka lampka, aha, on chyba wcale tego AI-a tak naprawdę nie używa, a jak już go używa, to akceptuje tą pierwszą odpowiedź. Czyli nie ma tego kroku takiego refine, tego kroku wygładzania, optymalizacji tego kodu. Ponieważ jeżeli ten krok będziemy zawsze uwzględniać i mieć w naszym procesie wytwarzania programowania, to myślę, że każdy będzie z tego AI zadowolony, bo robi on naprawdę świetną robotę, tylko tak jak mówię, trzeba troszeczkę mieć wiedzy i doświadczenia jak z tego najbardziej optymalnie skorzystać.

    Szymon Głowania
    No jakby ten AI nie będzie, myślę, że nie zniknie z naszej pracy, raczej będzie wchodził coraz głębiej i będziemy mieli tych narzędzi, i potrzeb korzystania z nich coraz więcej, więc tutaj musimy się tych narzędzi na pewno nauczyć. Mi pojawiło się w trakcie twojej wypowiedzi takie pytanie, czy zastanawiałeś się, kiedy najczęściej nie działa ci jakiś kod zwrócony przez AI?

    Artur Smółka
    To jest bardzo dobre pytanie, bo w ogóle ten kod to zazwyczaj działa, tylko w sensie kompiluje się i jest w stanie zwrócić jakiś rezultat. To raczej rzadko się zdarza, żeby ten kod był całkowicie wadliwy. Natomiast to, co się dzieje, to jest to, że ten kod nie spełnia wszystkich oczekiwań, czyli nie bierze pod uwagę wszystkich ograniczeń czy wszystkich wymagań, jakie my byśmy chcieli, aby on wziął pod uwagę. I najczęściej, słuchajcie, odpowiedź jest niestety dość smutna, mianowicie taka, że deweloper nienależycie starannie skonstruował prompt. Czyli nie poinformował tego AI o wszystkich ograniczeniach, o wszystkich wymaganiach, kryteriach, jakie chcemy, aby ten kod spełniał.
    Ja w swojej obserwacji, swojego doświadczenia mogę powiedzieć, że jeżeli dostatecznie dużo uwagi i pracy włożymy w napisanie promptu, dostarczymy mu dobry kontekst, czyli najczęściej po prostu w CoPilocie przeciągniemy, powiemy mu, słuchaj, kontekst to jest ten plik, ten plik i ten plik. I on weźmie pod uwagę cały kontekst, nie tylko wycinek. Prompt jest dobrze skonstruowany, to z reguły odpowiedź jest satysfakcjonująca. Więc odpowiadając na swoje pytanie, nienależycie skonstruowany prompt, AI nie ma wiedzy o wszystkich kryteriach i ograniczeniach, jakie chcemy, aby wziął pod uwagę.

    Szymon Głowania
    Z mojej perspektywy pisania promptów zazwyczaj podchodzę do niego jak do mojego sześcioletniego syna, czyli ogólnie rzecz biorąc jakaś znajomość świata jest, ale wszystkie szczegóły z dokładnością jakie kolejne po sobie zadania mają zostać wykonane, jest kluczowa do tego, żeby on zwrócił jakiś wynik. Jeśli chodzi o kompilację kodu, u mnie wygląda to tak, że najczęściej jeśli się nie kompiluje albo generuje jakiś błąd, to jest związane z nieaktualnością rozwiązania, które dostarczył, czyli pojawiła się nowa wersja biblioteki i najczęściej to jest przejście z wersji tam 2 na 3, z 7 na 10, a nie tam wersję ileś po przecinku i po prostu w nowej implementacji albo nie była zachowana zgodność wsteczna, no albo gdzieś po drodze ktoś, że tak powiem, popełnił błąd i aktualnie zwracany kod jest po prostu niedostępny najnowszej wersji.
    Natomiast tak jeśli chodzi o dodawanie tych szczegółów to jest to kluczowe. Jak ty zaczynasz w ogóle podchodzenie do takiej budowy takiego prompta czy masz jakieś określone kroki które zawsze zakładasz, że wykonujesz czy starasz się po prostu przejść na przykład z jakąś dokumentacją.

    Artur Smółka
    Przede wszystkim zależy to też od narzędzia, z którego korzystam bo staram się dostosować narzędzie do potrzeby, którą mam. Oczywiście głównie to jest CoPilot, który rzeczywiście jest takim standardowym już dzisiaj chyba dodatkiem do Visual Studio i wiem, że wiele firm po prostu kupując Visual Studio od razu kupuje subskrypcję na GitHub’a po to, aby tego CoPilota programistom swoim dać. Natomiast bywa, że korzystam też z innych narzędzi. Mogę na przykład wspomnieć o narzędziu, którym jest SurfGraph, który świetnie radzi sobie z analizą takiego dużego kodu. On bierze pod uwagę wszelkie zależności w kodzie, dostarcza taką analizę pełnej tej bazy kodu, czyli bierze pod uwagę wszelkie zależności.
    Też świetne narzędzie, jeżeli dostajemy jakiś kod, który mamy po prostu rozpoznać i chcemy gdzieś dalej z nim pracować. Więc generalnie dostosowuję do narzędzia. Bywa też, że używam zwykłego Chatu GPT czy Microsoft Copilot, zwykły chat i wtedy ta praca wygląda trochę inaczej. Jeżeli natomiast chodzi o CoPilota, czyli to, co najczęściej interesuje programistów, to zaczynam zawsze od ustalenia kontekstu. Czyli jeżeli na przykład, chyba nie z dzisiaj rana, miałem zmienić dość istotnie wygląd wizualny pewnej formatki, pewnej strony w aplikacji klienta. I to od czego zaczynam, to które pliki prawdopodobnie będę ja jako programista musiał dotknąć, zmodyfikować. Czyli pewnie arkusz stylów globalnych, arkusz styli danego komponentu, kod HTML danego komponentu i może TypeScript, bo to był Angular, bo tam jeszcze jakieś pewne rzeczy były ukryte.
    Czyli ustaliłem, że cztery pliki wchodzą w skład kontekstu i to przekazałem do CoPilota. Mówię, słuchaj, prawdopodobnie analizując to, o co ja zaraz Cię poproszę, będziesz musiał wziąć pod uwagę zawartość tych czterech plików. I to jest kluczowe, bo jeżeli przekażemy mu tylko jeden plik, on spróbuje zbudować rozwiązanie, jakby tu zmodyfikować ten jeden plik przekazany jako kontekst, aby osiągnąć ten rezultat. Nie o to nam chodzi. My chcemy zrobić to tak, jakby to robił programista. Więc ustalenie kontekstu, jaka była rzecz kluczowa. A druga kwestia, dobre napisanie promptu. Czyli nie jedna linijka, bo wiemy, że CoPilot nam zawsze zwróci jakąś odpowiedź, nawet jeżeli jedną linijką go tylko zapytamy.
    Ale wtedy ta odpowiedź będzie co najmniej nietrafna. Także dość rozbudowany prompt wymagania, czyli mówię co ma zrobić i mówię kiedy ja uznam, że to co zrobił jest OK, jest gotowe. Czyli chociaż takie krótkie kryteria akceptacyjne. Oczywiście to wymaga włożenia tych kilku minut, ale często już po jednej, dwóch interakcjach ta odpowiedź jest satysfakcjonująca i po prostu to działa i wręcz mogę to commitować do reprezentantów.

    Szymon Głowania
    Wspomniałeś tutaj o różnych narzędziach, z których możemy korzystać do tego, żeby łatwiej sobie z jakimś kodem radzić, tworzyć ten kod, tworzyć rozwiązania. Czy moglibyśmy przejść przez takie kategorie z uwzględnieniem tego co powiedziałeś i zobaczyć z czego warto przynajmniej z naszej perspektywy tutaj korzystać?

    Artur Smółka
    Świetnie, bardzo dobre pytanie, bo warto właśnie skorzystać z tej okazji, że rozmawiamy, żeby trochę tak, nazwijmy, poewangelizować deweloperów, bo ja wiem, że niektórzy nie mają, wiecie, takiej pełnej wiedzy i dużo rzeczy po prostu im umyka, a mogliby skorzystać i sobie po prostu pomóc. I właśnie, pierwsza kategoria to są narzędzia, które generują nam kod i automatyzują tworzenie tego kodu, wszelkiego typu ułatwiacze. Przede wszystkim sztandarowy przykład to jest Copilot. Dalej mamy np. Tab9 czy Code Whisper od Amazonu. To są takie dość znane, to są akurat popularne narzędzia, często jako dodatek do Visual Studio. Pomagają w tworzeniu kodu, mają wybudowany chat, dość standardowe tool’e.
    Ale to, co już mniej osób zna, to jest druga kategoria, czyli analiza dużego kodu. Załóżmy, że mamy zastaną aplikację, zostajemy skierowani do nowego projektu, rozbudowanego, mnóstwo kodu, może w języku, w którym nie jesteśmy ekspertem. Ja na przykład miałem ostatnio do czynienia z Visual Basic. Jestem głównie C-Sharpowcem. Mówili no ale Visual Basic to też .NET to jakoś się odnajdziesz. No to wcale nie tak prosto wygląda. Każdy kto widział Visual Basic wie, że to wcale nie jest takie podobne do C-Sharpa. Wręcz momentami co najmniej zaskakujące. No ale takie zadanie gdzieś tam było postawione i temat był dość krytyczny, bo to był taki core biznes aplikacji.
    I wtedy z pomocą przychodzą narzędzia do analizy kodu, typowo dedykowane, trenowane i uczone, żeby były w tym dobre. I takim sztandarowym przykładem jest właśnie Sourcegraph. On kosztuje kilkanaście dolarów w zastosowaniu komercyjnym. Jest też darmowa licencja, całkiem bogata. I on rzeczywiście, tak jak powiedziałem, ten cały codebase, czyli całe repozytorium, cały kod bierze pod uwagę, próbuje znaleźć relacje, nawet jeżeli te relacje nie są wprost podane. Jeżeli ktoś używa CoPilota, proponuję zainteresować się nową funkcją wprowadzoną nie tak dawno, jakiś miesiąc temu, która nazywa się CoPilot Edit. Przeciągamy kilka plików i mówimy, słuchaj CoPilot, te cztery pliki bierz pod uwagę i te cztery pliki proszę cię modyfikuj, tworząc rozwiązanie, CoPilot Edit, do sprawdzenia, do poszukania informacji.
    Generalnie rekomenduję na razie wersja preview, ale działa całkiem płynnie. Polecam. Kolejny zestaw narzędzi to debugowanie i testowanie. Też do tego mamy świetne toole. Przede wszystkim mam tutaj na myśli Sonar Cube, który większość programistów zna, szczególnie ze świata dotnetowego. Niedawno go wzbogacili o całkiem fajne narzędzia AI i on dokonuje takiej statycznej analizy kodu. Szuka podatności, szuka starych bibliotek. Ale ten AI pomaga nam też zidentyfikować takie typowe patterne programistyczne, które są uznawane za niebezpieczne albo nieoptymalne. Także cała gałąź narzędzi, którą możemy sobie wpleść w nasze procesy continuous delivery, continuous development, analizują, używając AI-a, optymalność tego kodu, bezpieczeństwo tego kodu, jego integralność.

    Szymon Głowania
    Siłą rzeczy takie narzędzie jest w stanie wyciągnąć dużo więcej relacji pomiędzy poszczególnymi obiektami, klasami itd. niż bylibyśmy w stanie znaleźć my. Czyli tutaj to bezpieczeństwo i jakość tego kodu będzie wzrastało. Czyli poniekąd obalamy ten mit, że AI można użyć tylko i wyłącznie do klepania tego właśnie takiego niskojakościowego kodu, który zostaje wypluty ze względu na to, że takie zapytanie zadaliśmy do takiego popularnego narzędzia, a nie dobraliśmy odpowiedniej metody i tego co chcemy zrobić. 

    Artur Smółka
    Tak, świetna obserwacja. Dokładnie tak jest i naprawdę robi świetną robotę. Ja co prawda widziałem w życiu tylko jeden taki pipeline gdzie firma taka już bardzo nowoczesna wpłotła ten Sonar Cube z Appliance AI, ale on robił niesamowite rzeczy. On odkrywał takie kwestie w tym kodzie, które my jako programiści rzeczywiście przyznaliśmy: o kurcze, nie bylibyśmy chyba na to w stanie wpaść, biorąc pod uwagę złożoność tego kodu. Także generalnie byłem pod wielkim wrażeniem i wręcz do teraz cały czas o tym opowiadam, bo robi to niesamowitą robotę. Kolejna gałąź, słuchajcie, to jest Project Management. To nie jest oczywiste, nie każdy sobie zdaje z tego sprawę, ale tak, Jira, której chyba większość z nas korzysta, ma dzisiaj bardzo bogaty dodatek związany z AI.
    Trzeba go kupić dodatkowo, ale nie jest on aż tak drogi w porównaniu do tego jaki zwrot tej inwestycji nam dostarczy. Co możemy tam robić w tym AI-u? Na przykład możemy tak realnie estymować zadania. AI bierze pod uwagę tego typu zadania, o tej złożoności zadania w przeszłości, w jakim czasie były realizowane, bierze pod uwagę opis, nawet bierze pod uwagę kod, jeżeli jest tam odpowiednie połączenie do kodu i to wszystko pomaga mu ustalić jaki jest taki realny czas realizacji tego zadania. Także bardzo fajna pomoc dla project managerów, też forma weryfikacji tego, co twierdzą programiści, ale też pomoc sama dla programistów, żeby nie było zadań niedoszacowanych.
    Umożliwia też wyszukiwanie na przykład powiązanych tasków, jeżeli się coś duplikuje, mamy duży projekt podzielony na kilka boardów. No i JIRA działając w sposób ciągły umożliwia, słuchaj bo tam już inny team będzie realizował podobne zadanie, co najmniej skonsultuj się z nimi zanim ty zaczniesz nad tym pracować. To wszystko już się dzieje, to wszystko już jest dzisiaj. W ten sposób funkcjonuje, to nie jest, wiecie, jakaś wizja. Naprawdę JIRA już taki dodatek zaimplementowała i ci, którzy go używają, wiem, że bardzo, bardzo są zaskoczeni efektywnością, w jaki sposób to sobie radzi.

    Szymon Głowania
    Czyli mając takie narzędzie do monitorowania i zarządzania jakby projektem czy projektami w idealnym stanie, jedna JIRA czy jakiś jeden inny tool dostępny do zarządzania projektem mógłby być wdrożony w firmie? I później redundancja pomiędzy poszczególnymi jednostkami za pomocą AI byłaby w stanie zejść do minimum, czyli te zadania nie powielałyby się takie same w różnych jednostkach, bo byłoby to możliwe do wychwycenia, siłą rzeczy będąc człowiekiem, my tych wszystkich powiązań nie będziemy w stanie zaobserwować, każdy z project managerów też opiekuje jakiś mały fragment, czyli tutaj mamy do zaopiekowania nasze zespoły, naszych kilka zespołów i development konkretnego narzędzia, konkretnych tooli realizujących jakąś potrzebę biznesową.
    Taka sama potrzeba może pojawić się w drugiej części firmy, którą opiekuje zupełnie inny manager i tam ta informacja niekoniecznie musi, że tak powiem, dotrzeć. Więc takie dodatki na pewno by nam pomogły w uspójnianiu się względem firmy no i zarządzaniu szybkim zwinnym.

    Artur Smółka
    Tak, absolutnie. Dokładnie tak jest. No mogę taką anegdotę przytoczyć, że też byłem świadkiem gdzieś sobie testowo, jedna z firm zainstalowała tą Jirę z dodatkiem AI. Wiecie, teraz większość tych firm daje taką 30, nieraz 60 dniową pełną wersję za darmo testową, żeby po prostu przyzwyczaić ludzi, żeby też trochę pokazać im te możliwości i przez to zachęcić do kupna. I w jednym z projektów, w których pracuję, właśnie tak zrobiliśmy, że mówimy, a czemu nie zainstalujmy do Jiry ten dodatek. I słuchajcie, mieliśmy takie spotkanie planowania nowego sprintu, takiego nowego kwartału i estymowaliśmy, tak jak zawsze w Scrumie się to robi, taski.
    No i też ta Jira sobie tam pod spodem działała i niejako czuwała nad tą naszą estymacją. I w pewnym momencie tam się pojawił taki komunikat, słuchaj, to zadanie jest na pewno niedoestymowane. Myśmy byli zaskoczeni, mówimy, a chyba to jednak nie jest wcale takie dobre, na pewno się myli, nie? Ale mamy możliwość poproszenia go o uzasadnienie. No i on mówi, słuchajcie, nie wzięliście pod uwagę tego, tego, tego, a w ogóle jak chcecie modyfikować jakąś część aplikacji, której to zadanie dotyczyło, musicie wejść w taki krytyczny obszar aplikacji, a wcześniej, gdy tam działaliście, to zajmowało wam to zawsze kupę czasu, bo to jest szalenie powiązane i pokomplikowane.
    I myśmy dopiero wtedy mówili, że faktycznie nie pomyśleliśmy o tym. Zapomnieliśmy, że jest tam jakieś ukryte powiązanie, a JIRA z tym dodatkiem AI odkryła to na podstawie historii, na której gdzieś tam się pod spodem uczyła. Także wtedy po raz kolejny się przekonaliśmy, że to jednak rzeczywiście działa, no i pomogło nam uchronić się przed niedoszacowaniem, takim bardzo mocnym niedoszacowaniem taska. Także z pewnością działa to całkiem dobrze, aczkolwiek oczywiście zawsze to ograniczone zaufanie jest konieczne.

    Szymon Głowania
    Czyli nie zawsze wszystko wrzucamy do Chata GPT i podaj mi instrukcję jak mam zarządzać tym projektem, ale mamy inne, bardziej wyspecjalizowane pod tym kątem narzędzia, na przykład właśnie ten dodatek do JIR-y. Ale jakby zarządzanie projektami to nie jedyny aspekt, w którym jeszcze możemy coś zaproponować. 

    Artur Smółka
    Tak, tak. Kończąc, bo jeszcze kilka nam zostało takich gałęzi, gdzie to AI jest pomocne. To słuchajcie, czym ja znowu się, jak słyszycie, ja się wieloma rzeczami zachwycam w obszarze tego AI. Ale to, o czym teraz powiem, szczególnie na mnie duże wrażenie robi, to jest taka strona de facto, która się nazywa Builder.io i ona umożliwia konwersję mock-upów Figmy. Figmę chyba każdy kojarzy z deweloperów, narzędzie do tworzenia mock-upów, do tworzenia takich konspektów, projektów aplikacji od strony wizualnej. I ten dodatek Builder.io, choć Figma też ma coś swojego, po prostu generuje nam kod w języku, jakiego sobie życzymy. Słuchaj, tu jest mockup.
    Tak wygląda mniej więcej wizja naszej aplikacji. No i teraz mamy dwie opcje. Możemy wynająć jakiegoś programistę czy designera, który nam to zaimplementuje, co zajmie mu czas i z pewnością będziemy musieli mu sporo zapłacić. A możemy użyć takiego programu. Z pewnością ten wynik nie będzie idealny, ale będzie świetnym punktem startowym dla deweloperów, którzy już sami dalej sobie z tym poradzą. Także Builder.io konwersja Figmy do normalnego kodu zrozumiałego dla programistów w sposób praktycznie automatyczny. Ja robiłem takie doświadczenie też w Chatem GPT i on też sobie w tym radzi paradoksalnie, szczególnie ta nowa wersja o1. Dałem mu zrzut Figmy.
    Zwyczajny rysunek i poprosiłem słuchaj wygeneruj mi HTMLa i style kaskadowe do tego i paradoksalnie też całkiem dobrze zrobił tę robotę więc jeżeli ktoś nie chce kupować tego Builder.io czy tego typu rozwiązań tej klasy pamiętajcie że zwykły CoPilot czy zwykły Chat GPT też tak nie oczywiście, ale jest w stanie nam w tym pomóc. Także to jest też to, które bardzo, bardzo dużo czasu nam oszczędza w projektach. No i kolejna rzecz to jest samo uczenie się i onboarding nowych programistów. Możemy sobie wyobrazić, że u nas w firmie działa jakieś narzędzie AI, które po prostu nauczymy naszym kodem jakiejś dużej aplikacji.
    Mamy aplikację, oczywiście musi to być zrobione bezpiecznie, ale ono się nauczy wszelkich weźmie pod uwagę dokumentację, weźmie pod uwagę kod, nauczy się zależności. I gdy wchodzą nowi programiści, to już nie musimy angażować seniorów czy całej grupy seniorów, którzy będą po prostu tłumaczyć jak ta aplikacja działa i tłumaczyć wszelkie niuanse kodu. My zwyczajnie delegujemy to zadanie do AI. Jeżeli przed nami jest taki większy onboarding, gdzie tych programistów będzie wielu, uważam, że jest to gra warta świeczki. Czyli mamy do tego szczególnie narzędzia, które robią to w sposób automatyczny, więc to też jest niejako olbrzymi wysiłek, ale zwrot znów w tej inwestycji jest szalony, ponieważ pamiętajcie, że taki senior developer też o wszystkim nie pamięta, też nie zna wszelkich arkanów aplikacji, AI jest w stanie to poznać, zinwestygować i później nauczyć nowych programistów.
    Czyli cały proces learningu, onboardingu też znakomicie możemy delegować do AI.

    Szymon Głowania
    Wszystko co duże będziemy starali się tam wrzucać. Będziemy mieli dużo pracowników, dużo dokumentacji, dużo kodu, więc to z czym my byśmy na co dzień mieli problem się zapoznać, bo nasze ograniczenia stricte ludzkie mają tutaj kluczowe znaczenie jesteśmy w stanie oddelegować tam i zrealizować dużo, dużo szybciej, nie? 

    Artur Smółka
    Dokładnie tak. Jest to pewien, wiecie, taka trochę krzywa uczenia się, nie? I taki koszt startu. Wiemy, że robimy pierwszy raz, to zawsze ten koszt startu będzie dość wysoki i będzie to wymagało od nas sporego wysiłku. Ale każdy kolejny raz będzie już łatwiejszy, zdecydowanie łatwiejszy. Więc ja widzę też taką tendencję, że wiele firmy troszeczkę broni się przed takim szerokim stosowaniem AI, o którym ja teraz mówię, właśnie ze względu na ten koszt startu. To jest dla nich taki Greenfield i oni nie wiedzą w ogóle jak do tego podejść. Natomiast ja uważam, że to jest nieuchronne i oni w końcu i tak zostaną do tego zmuszeni, po prostu przez rynek.
    Dlatego wydaje się, że czym zrobią to wcześniej, tym szybciej będą mieli ten rezultat. Więc zawsze trzeba pamiętać, że ten pierwszy raz z totalnie nowym narzędziem, nową technologią będzie trudny, ale każdy kolejny raz już będzie łatwiejsze dlatego tak jak powiedziałeś wszelkie duże rzeczy zachęcam.

    Szymon Głowania
    No tutaj jest duży próg wejścia niekiedy żeby to sprawdzić dewelopersko żeby sprawdzić sobie to tak żeby działało for fun no to oczywiście wystarczy jakaś tam podstawowa licencja natomiast firmy tutaj już te licencje muszą mieć opłacone nieco wyższe więc próg wejścia jest. Zgadzam się z tobą w zupełności że firmy zostaną do tego zmuszone jakby siłą rzeczy nie będziemy w stanie ludźmi takiego zapotrzebowania na te wszystkie developementy pokryć, więc tutaj będzie to bardzo, bardzo pomocne. Myślę, że nie zastąpimy stricte wszystkich programistów, ale pozwolimy, żeby pracowali najlepsi i w wygodnym dla siebie podejściu. Nie wiem jak u Ciebie w zespole, ale u mnie zawsze duża frustracja wiązała się z tym, że trzeba najpierw przygotować projekt, na przykład właśnie w Figmie, który trzeba doszlifować z klientem, pokazać go, on się i tak jeszcze 10 razy zmieni, bo klient jednak stwierdzi, że ten kolor ma być inny.
    Ktoś przygotuje to w Figmie, czyli potrzebujemy jednego pracownika, który to przygotuje, taki draft projektu. Później ktoś to musi przełożyć na to, żeby kod pozwalał na wizualne wygenerowanie takiej strony, a później jeszcze trzecia osoba musi do tego backend, czyli całe to działanie nam dopisać. Są trzy kroki, gdzie zmieni się często pierwszy w połowie naszego projektu. I trzeba przez nie przechodzić. Kwestia tego, że możemy realizować ten projekt wizualny i później część kodu z niego realizować do kolejnych kroków jest naprawdę bardzo fajnym rozwiązaniem i to wpływa pozytywnie na to, jak można z tego korzystać. Z tej strony nie widzę oporu ludzi do korzystania, bardziej ten próg wejścia wszystkich martwi.

    Artur Smółka
    Znaczy wiesz właśnie to co powiedziałeś prototypowanie to to w ogóle świetna sprawa jeżeli chodzi o AI. No bo widzisz napisać taki dobrej jakości kod z AI to tak jak mówię to trzeba kilka tych iteracji trzeba trochę to walidować. Ale jeżeli my potrzebujemy zrobić taki prototyp aplikacji żeby pokazać coś klientowi bo on sam nie jest pewien czego chce to AI świetnie się do tego nadaje. No bo wiadomo że tam będą jakieś błędy, tam ta logika biznesowa nie będzie dopracowana albo w ogóle jej nie będzie. Ale sam prototyp dobrze opisując czego chcemy to zwykły chat GPT czy Gemini czy cokolwiek spokojnie nam to wygeneruje.
    Także prototypowanie i delegowanie tego prototypowania do AI uważam, że jest też jednym z fajniejszych zastosowań, które naprawdę oszczędzi nam mnóstwo czasu.

    Szymon Głowania
    Mi się wcześniej pojawiło takie pytanie związane z tym, jak przygotowujesz prompty. Kiedy stajesz przed jakimś zadaniem, czy wolisz zacząć od konkretu, czyli właśnie podajesz te konkretne pliki i elementy, na których działasz? Czy mimo wszystko czasem startujesz też z ogółu, czyli zadajesz jakieś ogólne pytania i wtedy pozwalasz mu, żeby on najpierw odpowiedział na te ogólne założenia i dopiero dalej uszczegóławiasz?

    Artur Smółka
    To jest też dobre pytanie, bo widzisz, tym wszystkim narzędziom AI dość łatwo jest coś zasugerować. Jeżeli ty zadasz już takie pytanie bardzo konkretne, focusujesz się na konkretnej technologii czy rozwiązaniu, to on podąży tą ścieżką. On nie wyjdzie poza tą twoją bańkę, w której ty jesteś, tylko raczej podąży i stara się znaleźć rozwiązanie w sposób, w jakim ty mu to sugerujesz. On nie myśli abstrakcyjnie przecież, tak jak człowiek, tylko raczej podąża jakimiś utartymi algorytmami. Także trzeba mieć z tyłu głowy, że łatwo coś AI-owi zasugerować. No i właśnie, jak tego uniknąć? Ja z reguły staram się najpierw, jeżeli to jest totalnie nieznana dla mnie gałąź, czy nieznana funkcja aplikacji, to rzeczywiście staram się zebrać taki ogólny wywiad, jak czy to osobiście, szukając internet, czy używając AI, jakie mamy potencjalne możliwości rozwiązania problemu.
    I ja świadomie, jako powiedzmy osoba z doświadczeniem, wybieram rozwiązanie, być może jeszcze w międzyczasie robię mały brainstorming, Chat GPT też świetnie się do tego nadaje, wybieramy rozwiązanie i wtedy dopiero dostarczamy kontekst, sugeruje rozwiązanie, na które wcześniej się zdecydowałem i proszę go, aby w tym rozwiązaniu już bez jakiegoś kombinowania przygotował rozwiązanie, czyli przygotował już konkretny kod. Natomiast jeżeli problem jest bardzo konkretny, bardzo specyficzny, dotyczy funkcji, która już jest wcześniej zdefiniowana, Wtedy już oczywiście pomijam ten temat brainstormingu i temat w ogóle wyszukiwania gałęzi, którą podążymy. Wtedy już jest mój prompt bardzo konkretny, bardzo specyficzny i zorientowany na wyszukiwanie rozwiązania tego konkretnego przypadku.
    Natomiast w takim Greenfield bardzo fajna sugestia, Szymon, zawsze warto zacząć od takiego brainstormingu, od wyrobienia w sobie zdania, żeby nam Chat GPT czy inne AI nie zasugerowały czegoś, co nie będzie optymalne.

    Szymon Głowania
    Tak, no tutaj na pewno jest to ważne. My w zespole zawsze staramy się, że mimo wszystko też zrobić taki własny brainstorm, gdzieś na chwilę się złapać chociaż na pięć minut w salce i dograć plusy minusy. No bo tutaj znowuż wpada ten drugi element, czyli ta nasza znajomość wiedzy dziedzinowej i tych systemów, w których działamy, czyli wiedza jak to się połączy rzeczywiście już z fizycznym rozwiązaniem, co będziemy w stanie dostarczyć, co dostawca któryś z narzędzi, z którymi musimy współpracować też nam ewentualnie oferuje, bo tutaj też pewne ograniczenia niekiedy na nas wpadają. A propos ograniczeń, bo wymieniliśmy dużo elementów, które nam pozwalają na to, żeby to AI wprowadzać, bo one nam wiele rzeczy ułatwi.
    A czy widzisz tutaj w tej kwestii jakieś rzeczy, które nam to AI może utrudnić albo coś, co bierzemy jako minus? 

    Artur Smółka
    Tak, taki zawsze koronny argument, który ja przytaczam trochę w cudzysłowiu, to jest to też forma ogłupiacza. Ja obserwuję programistów całkiem doświadczonych, którzy bez konsultacji z AI-em nie zacommitują nic do repozytorium. Oni chcą opinię AI, zanim zdecydują się na commit, bo oni wiedzą, że ten AI zazwyczaj coś zasugeruje. Mało tego paradoksalnie zazwyczaj coś zoptymalizuje. Ale wiesz, to też nie chodzi o to, żeby na każdym kroku gdzieś podkopywać tą swoją pewność siebie programistyczną.

    Szymon Głowania
    Zgoda maszyny na dodanie commita.

    Artur Smółka
    Tak. I za każdym razem szukać tej walidacji i takiego powtórnego potwierdzenia w AI. Ja widzę, że dużo ludzi tak robi. Być może wynika to z takiego ich perfekcjonizmu, ale czasem też może tak trochę ogłupić, podkopać tą naszą pewność siebie. Druga rzecz dotyczy młodych programistów, którzy tak jak mówię są trochę zachłyśnięci tymi zdolnościami AI. I oni z kolei idą w drugą skrajność. Bezkrytycznie akceptują wszelki kod, który ten AI wygeneruje. A pamiętajmy, to co powiedziałem, często nie jest optymalny, szczególnie w pierwszym rzucie. A po drugie, często też mamy takie tematy jak użycie kodu właśnie dotyczącego starszej biblioteki, czyli w nowych bibliotekach już powinniśmy to zrobić lepiej.
    Być może jakieś metody są deprecated, powinniśmy skorzystać z czegoś nowszego, bardziej optymalnego. Ponieważ no wiadomo, AI jest uczony na jakiejś bazie wiedzy. Ta baza wiedzy na pewno nie jest tak szybko rozbudowywana i tak szybko aktualizowane są frameworki. Więc często właśnie też dotyczy to rozwiązanie jakiejś starszej wersji. W nowszej wersji powinniśmy to zrobić inaczej. No i znowu tu jest odpowiedzialność programisty, żeby takie sytuacje zidentyfikować. No i nie każdy jest w stanie to zrobić. No i później mamy szereg takich wiecie oczywistych problemów, bo też AI często uczy się na podstawie tego kodu, który my mu dostarczamy. Czyli można powiedzieć, że na podstawie naszego projektu AI się uczy.
    Tak, w CoPilot, możemy to zablokować. Chat GPT, teoretycznie też możemy to zablokować. Jest taka opcja, żeby on nie korzystał z tego naszego wsadu jakby do nauki. Natomiast nigdy nie wiemy, co tam się dzieje pod spodem, więc zawsze zagrożenie jest takie, że możemy nieświadomie popełnić plagiat albo w drugą stronę, nieświadomie nasz kod może zostać użyty przez kogoś innego. Zawsze pamiętajmy też, że za tym kodem stoją duże organizacje. Też one mają powiedzmy pełen wgląd wtedy w to nasze repozytorium, no bo my ciągle te konteksty podłączamy. Niektóre firmy czują się z tego powodu zagrożone, że ktoś ten ich kod może analizować, szukać słabych punktów, dlatego też jest to jedna z takich kwestii przez które część dużych firm z obszarów takich związanych z bezpieczeństwem nie decyduje się na AI.
    Tak jak mówię, podatność właśnie na sugestie, to, że te rozwiązania nie zawsze są optymalne, jeżeli chodzi o bezpieczeństwo. One działają, kompilują się, ale czy są bezpieczne? Wiesz, a dla takiego młodego programisty kod działa, test przeszedł świetnie, ten lider deweloperów będzie zadowolony, commitujemy, pushujemy do repozytorium. Czy sprawdziłeś czy to jest bezpieczne?

    Szymon Głowania
    Pierwszy działający Hello World jest najważniejszy po prostu. 

    Artur Smółka
    Tutaj nie mamy wyboru. Także jest trochę tych problemów związanych z AI-em. Jest trochę wad tego AI-a też. Ten AI też mocno nam kształtuje w którym kierunku idziemy i jak ten rynek będzie wyglądał w przyszłości. Natomiast moje stanowisko jest takie, że on jest nieodzowny. Dzisiaj programista, który nie korzysta z AI-a jest dużo mniej wydajny i po prostu gorzej sobie będzie radził wręcz na rynku. Także powinniśmy go uczyć się, powinniśmy go wykorzystywać, ale traktować z ograniczonym zaufaniem i brać pod uwagę te wszystkie ograniczenia, o których mówiliśmy.

    Szymon Głowania
    Tak, no prompt engineer jest obecnie bardzo popularnym stanowiskiem i prompting jako wymaganie, umiejętność pisania w ogóle promptów się będzie już ciągle pojawiało. Będzie to jak znajomość podstawowych elementów związanych z Microsoftem czy innymi technologiami, które są w naszym życiu na co dzień. Więc tutaj jak najbardziej. Ja o dziwo jeszcze ostatnio miałem właśnie przypadek, gdzie AI przydało mi się, ale w nieco innym kontekście. Właśnie zazwyczaj AI podpowiadało mi wykorzystanie starszych pakietów w aktualnym kodzie, natomiast dostałem, że tak powiem, taką prośbę w spadku, że dostałem czyjś stary kod i on nie działał i trzeba było go naprawić. No i było akurat rozwiązanie napisane w Pythonie, no i z pomocą właśnie AI szybko zostało przepisane na nowszą wersję biblioteki i tam już się uruchomiło.
    Czyli mimo wszystko na przykład te pewne elementy jesteśmy w stanie tam dociągnąć, czy poprzez przesłanie dokumentacji, przygotowanie odpowiedniego promptu, albo po prostu już analizę i poprawę tego ręcznie. Natomiast usprawnia to, czyli jakby zamiast przejrzeć kod aplikacji, który ma ileś tam tysięcy wierszy, zaproponować rozwiązanie, które trzeba byłoby w sumie zacząć pisać od nowa, No bo nie czarujmy się z takim starym nieokomentowanym kodem niedziałającym, bo biblioteka Pythona, to było pisane na dwójkę jeszcze Pythona, więc no trochę by potrwało. Natomiast z AI jesteśmy w stanie to przygotować w dużo krótszym czasie i w miarę efektywnie. Czyli rzeczywiście ta nasza wiedza się tam wtedy przydaje w tych elementach, gdzie jest to wymagane.

    Artur Smółka
    Widzę, że musisz pracować w naprawdę bardzo ciekawym projekcie, bo już któryś raz mówisz, że AI nie miało wiedzy o tych wszystkich nowościach, które wy używacie, to to w ogóle fajnie pogratulować.

    Szymon Głowania
    To nie tak, to bardziej kwestia tego rzeczywiście miałem parę razy, że zwrócił mi kod który jest poprawny ale on był poprawny rzeczywiście w bibliotekach w wersji bibliotek tam ileś wersji wstecz i wtedy się kompilował natomiast jak ja uruchomiłem czy to u siebie czy gdzieś. No to ta biblioteka już nowsza nie działa w takiej formie.

    Artur Smółka
    To jest bolączka, że on jest uczony na jakieś tam źródle wiedzy. Natomiast to co powiedziałeś o tym prompt engineeringu, powiem Ci, że tak ostatnio trochę pod znakiem zapytania, przynajmniej z tego co ja czytam, jest właśnie to stanowisko, o którym wspomniałeś, inżyniera, bo zobacz, jak zaczniemy korzystać z tego najnowszego Chatu GPT, czyli tej wersji o1, to widzisz on potrafi generować sobie pomocnicze prompty pod spodem. Jak sobie zobaczymy jak on działa, to zadając jakieś
    pytania, widzisz, że on z 10 czy 8 promptów dodatkowych, pomocniczych sobie tworzy. Czyli wiesz, oni poszli tam o krok dalej, biorą oczywiście twoje zapytanie jako to źródło, to na co mają odpowiedzieć, ale próbują je sobie zdekomponować na szereg pomniejszych zagadnień. Czyli wiesz, można powiedzieć, że część tego prompt engineeringu jest robiona już za ciebie. To jest też bardzo ciekawy kierunek. Możemy sobie wyobrazić w przyszłości, że wiesz, tylko się rzuci jakąś sugestię, no to starczy kontekst, no bo ten kontekst jest jednak kluczowy, o co generalnie pytamy i jaki jest cel naszego pytania, ale możemy sobie wyobrazić, że bez jakiegoś szczegółowego promptu on będzie w stanie ustalić wręcz o co nam chodzi, zbudować sobie prompt jaki chciałby i odpowiedzieć. To jest też ciekawy kierunek.

    Szymon Głowania
    Z mojej perspektywy firmy na razie patrzą na możliwość użycia AI jako jakiejś nowości, nowinki, którą chcą sobie po prostu dodać do tego, żeby ich produkt mógł się poszczycić tym, że to AI jest w nim stosowane. Więc na razie z tego co widzę najchętniej właśnie jest to robione w ten sposób, czyli zatrudnimy osobę, która zna się na usprawnieniach, jest w stanie w miarę z AI pracować, no i w ramach naszej firmy wykorzystamy to do usprawnień różnych aspektów działalności. Natomiast w miarę tego, jak ta popularność będzie rosła, wydaje mi się, że to będzie jeden z kluczowych elementów, jak kiedyś znajomość języka angielskiego.
    Większość dokumentacji, książek i wszystkich źródeł odnośnie takiej bardzo szczegółowej kompetencji były w języku angielskim, więc żeby to się nauczyć trzeba było umieć język angielski, żeby zapoznać się z tą wiedzą. Teraz trzeba umieć rozmawiać z Chatem. Kolejne wersje Chatów będą coraz łatwiejsze do użytku pewnie dla nas, czyli będą dawały coraz mniejszą dyspozycyjność, a będą miały tą autonomię w podejmowaniu tych pewnych myśli i działań. Natomiast siłą rzeczy tak czy inaczej jakoś ziarenko tam będziemy mieli, czyli podanie tej swojej idei, podanie tego kontekstu, wyszukanie, sklejenie tego, no bo tutaj mamy różne dostępne, tak jak wspominałeś, narzędzia, które nam są w stanie ułatwić poszczególne elementy, ale tak czy inaczej podejście dalej do budowy AI jest tak samo, czyli budujemy eksperta i on jest wtedy świetny w tej swojej dziedzinie, albo budujemy coś ogólnego jak Chat GPT, który może mieć jakiś mniejszych ekspertów w środku, ale tak czy inaczej ktoś tym musi ogólnie zarządzać, no i wtedy narzędzie sprawdza się zazwyczaj troszkę słabiej w konkretnych przypadkach, ale w ogólnym rozrachunku uzyskuje na znaczeniu, więc pewnie tutaj będzie to gdzieś tam podzielone.
    My na razie będziemy starali się pewnie wybierać te poszczególne klocuszki, które są nam w stanie najwięcej dać i jako programiści łączyć to w rozsądną, sensowną całość, żeby zwróciło działający kod dla klienta.

    Artur Smółka
    Dokładnie tak to wygląda jak powiedziałeś i to co już któryś raz powtarzam, ja każdego programistę zachęcam, żeby spróbować, żeby zapoznać się z tymi narzędziami, bo ja do końca nie potrafię jeszcze zrozumieć, ale część z nich uważa, że używanie chatu GPT to jest tak jak boczne kółka przy rowerze. Ja w wieku 30 lat już nie chcę z bocznymi kółkami przy rowerze jeździć, bo będę co najmniej dziwnie wyglądał na ulicy. A to wcale nie tak. To raczej możemy sobie przyrównać do takiego przejścia z silnika parowego na silnik spalinowy, czyli całkowicie konkretny game changer, czyli coś co bardzo mocno zmienia zasady gry, zmienia to w jaki sposób pracujemy.
    I to co wielokrotnie już w naszej dyskusji się pojawiało, w najbliższej przyszłości ten chat GPT czy generalnie te AI staną się po prostu nieodzowne, ponieważ bez nich będziemy trochę przypominać firmę transportową, która używa wozów drabiniastych do transportu zamiast tirów. Po prostu stanie się to nieodzowne, będziemy przez obecny poziom rozwoju rynku i naszej konkurencji wręcz zmuszeni, czy będziemy tego chcieli, czy nie używać AI, aby pozostać konkurencyjny.

    Szymon Głowania
    Czyli to, że piszemy prompty i bierzemy kod właśnie z jakiegoś narzędzia, nie znaczy, że my tego nie umiemy zrobić, tylko po prostu, że jest nam to szybciej i wygodniej zrobić tak. Tak jak zazwyczaj, ja też mam i pewnie ty w pracy, już nie chce mi się niekiedy kodu klepać całego, jak jest to zwłaszcza jakaś prosta funkcja, tylko mówię mu, weź mi to, to, to i to, bo on wie, że musi wejść do tej biblioteki, zrobić takie połączenie, to dodać. Ja jestem w stanie to sprawdzić jednym rzutem oka, bo wiem jak ten kod miał wyglądać, tylko siłą rzeczy on to napisze w 15 sekund, mi zajmie to 5 minut, bo będę musiał wejść na trzy strony i to przekleić.
    Tutaj ta oszczędność czasu w takich małych porcjach, ale później się sumuje. Ja mam takie pytanie też spontaniczne, które się pojawiło w trakcie, bo ja zastanawiam się obecnie nad tym, co byłoby teraz takim game changerem, bo to słowo już parę razy nam tutaj padło, czyli taką dużą nową innowacją w promptingu, bo jeśli chodzi o same AI, no to myślę, że gdzieś coś z generowaniem wideo na potrzeby klienta w czasie online, czyli żebyśmy byli w stanie oglądać sobie serial 45-minutowy na bieżąco. Natomiast czy widzisz coś takiego co byłoby takim kolejnym dużym skokiem w ramach przygotowywania właśnie promptów i takich narzędzi AIowych, czy to wtyczkach, czy jakichś dedykowanych tooli z takiej perspektywy właśnie programistycznej?

    Artur Smółka
    To może być taka szybkość uczenia się, bo to wiadomo, że być może możemy sobie pomyśleć o jakichś takich rzeczach totalnie nowych, innych niż zmieniających tą ścieżkę, którą dzisiaj podążamy, ale przywiązując się do tego, co mamy dzisiaj, to obecnie firmy, które dostarczają rozwiązań AI dla deweloperów, pracują nad przyśpieszeniem szybkości uczenia się tych ich tooli, czyli chcą tego, aby dany tool był w stanie praktycznie na bieżąco w czasie online analizować ten kod, analizować dokumentację, analizować też internet, żeby dostarczać nam jak najbardziej optymalne odpowiedzi i optymalne sugestie co do naszego kodu. I z tego co ja tak obserwuję rynek, to nad czym obecnie prace się toczą, to dostarczenie takiego wrażenia, że to wszystko dzieje się online, że coś nowego się pojawiło, nowy release jakiegoś frameworku, i chat GPT, czy to narzędzie AI, nazwijmy to, już ma tego świadomość, już weźmie to pod uwagę, udzielając nam odpowiedzi.
    Czyli nie bazujemy na takiej zastanej gdzieś wbudowanej bazie wiedzy, tylko ta baza cały czas przyrasta na podstawie naszego kodu, naszych zachowań i internetu. I myślę, że to będzie co najmniej dużym usprawnieniem i ten chat GPT stanie się bardziej niezawodny i taki bardziej

    Szymon Głowania
    Znaczy aktualny, nie?

    Artur Smółka
    bardziej niezawodny i bardziej aktualny. Dokładnie.

    Szymon Głowania
    Będziemy mieli dostęp do wiedzy w zależności od modelu z którego korzystamy czy też z Chata czy z CoPilota tam w zależności od tego który był przygotowany. Niektóre mają dostęp do zapytań w internecie niektóre nie. Więc tutaj rzeczywiście jest to jeszcze do pilnowania. Nie każdy tool zawsze ma, nie do każdego można przesyłać grafiki czy tekst w postaci plików i tak dalej. Niektóre pozwalają tylko i wyłącznie na przygotowanie promptu. Więc tutaj sposoby komunikacji i różnych przesyłania będą pewnie starały się ujednolicić, czyli żeby można było wrzucać wszystko i na tej podstawie generować wszystko, jakbyśmy to my ludzie chcieli, albo najlepiej z niczego zrobić coś.
    Natomiast jeśli chodzi o to, jak to wygląda w tym online, to na chwilę obecną z mojej perspektywy te narzędzia mają dostęp do wyszukiwania, ale to nie znaczy, że on zawsze wyszuka tę odpowiedź w dokumentacji czy w aktualnych wiadomościach. On został nauczony na jakiejś bazie wiedzy i to np. byłyby jakieś tam przygotowane rozwiązania problemów itd. No ale ta baza wiedzy często jest tam sprzed czterech lat.

    Artur Smółka
    Dokładnie. Jeżeli chodzi o takie ciekawostki, bo tak mówimy dużo o tym CoPilocie, ja też czasem używam słowa CoPilot, a myślę ogólnie o tym AI-u, ale rzeczywiście wracając do tego CoPilota od GitHuba tak konkretnie, mamy teraz nowe dodatki np. do Visual Studio Code, ale zdaje się, że do innych edytorów są ich odpowiedniki. Na przykład dodatek, który się nazywa Vision for CoPilot. Czyli tam możemy przesłać jakieś zdjęcie czy obraz i poprosić CoPilota o odpowiednie działanie. Czyli znów przesyłamy rysunek, mock-up i mówimy CoPilot wygeneruj mi teraz, proszę Cię, style kaskadowe czy stronę HTML. Wysyłamy mu diagram bazy danych i mówimy słuchaj, spróbuj wygenerować SQL-a do tego.
    To już się dzieje. Już taka możliwość jest. Jest to wersja preview, ale ona w ten sposób działa. Kolejny dodatek to jest np. Data Analyst, czyli możemy przesłać jakiś plik CSV czy głównie CSV, JSON, ewentualnie Excel i możemy dyskutować z Copilotem o tych danych, które tam są zawarte. Czyli możemy drążyć sobie dane bezpośrednio językiem naturalnym. Nie potrzebujemy robić tego w jakimś wysublimowanym języku zapytań do JSON-a na przykład. To jest też bardzo duże ułatwienie. Ja akurat ostatnio używałem tego do analizy logów, bo miałem duży zestaw logów gdzieś tam w takim formacie JSON-owym z serwera webowego. I też konkretnie interesowało mnie zidentyfikowanie pewnych zależności między dwoma występującymi tam błędami.
    Tak trochę bez pokładania specjalnej nadziei, ale użyłem właśnie tego nowego powiedzmy narzędzia w tej wersji preview cały czas Data Analyst od GitHuba dla CoPilota i słuchajcie, udało się znaleźć to, co dokładnie mnie interesowało, czyli kilka takich linijek w logu, które powiedziały mi jaka sekwencja zdarzeń doprowadza do błędu, który chciałem naprawić. I to jest kolejna taka kwestia, że CoPilot zaoszczędził mi podejrzewam, kilka albo kilkanaście godzin przeglądania tych logów, wynotowywania na kartce identyfikatorów i szukania tych referencji. To jest kolejny dowód na to, że jest nam w stanie naprawdę ułatwić pracę w sztucznej inteligencji.

    Szymon Głowania
    Dobrze, jak jesteśmy już właśnie przy tych projektach, czyli sztucznej inteligencji, to czy jest jakiś projekt, z którego dostarczenia jesteś szczególnie dumny i chciałbyś się nim pochwalić?

    Artur Smółka
    Może niekonieczny projekt, ale zawsze jak ktoś zadaje mi podobne pytanie to przychodzi mi na myśl mój początek z AI-em, bo widzisz ja też byłem dość sceptyczny. Ja też mówię, słuchaj ja się uczę od 15 lat programować, czytam sporo książek, generalnie oglądam na YouTubie, wiesz jak jadę w tramwaju to raczej nie gram w grę tylko oglądam sobie YouTube’a jakiegoś tam programistycznego, bo po prostu to lubię, mnie to pasjonuje. No i mówię, teraz taki CoPilot, no jak on może być mądrzejszy ode mnie? No i tak nie pokładałem w tym specjalnym nadziei, traktowałem to jako fanaberie, do pewnego momentu, gdy dostałem takie zadanie devopsowe.
    Tam chodziło o napisanie dosyć obszernego Powershella, takiego, który analizuje, mówiąc konkretnie, zawartość plików, daty plików i stara się usunąć te pliki, które mają najstarszą zawartość, czyli takie, które już praktycznie nie są potrzebne. Najpierw je archiwizował, pakował, później usuwał. Generalnie taki był temat, żeby PowerShell napisać i wpleść to jako element continuous delivery. Ja, słuchajcie, męczyłem się z tym jakieś 2-3 dni, aż później było mi trochę niezręcznie przed menadżerem, że co tu się dzieje, no taki niby bystry, doświadczony pracownik i nie jest w stanie de facto dość prostej rzeczy napisać. I w pewnym momencie już straciłem nadzieję, że mi się w ogóle to uda.
    No i rzeczywiście poprosiłem akurat wtedy Chat GPT o pomoc, no ten kontekst był dość prosty, bo wiadomo, no to były dwa czy trzy ekrany kodu, więc on spokojnie mógł to objąć. No i okazało się, słuchajcie, że zrobiłem zwyczajnie literówkę w tym PowerShellu. No i on to zidentyfikował w ciągu dwóch sekund, dostarczył mi odpowiedź. Okazało się, że ten kod poza tym no to de facto działał i rzeczywiście myślę sobie słuchajcie, że ja bym do dzisiaj tej literówki nie znalazł, bo ona była gdzieś tam w tym klejeniu stringów, zaszyta. Spodziewam się, że byłoby bardzo, bardzo trudno to zidentyfikować.
    On mi pomógł, ale pamiętam jeszcze wtedy poszedłem trochę dalej, bo przekonałem się, że to jednak może działać i ma potencjał. Mówię, kurczę, te dwa ekrany kodu trochę dużo. Może coś będzie w stanie ten CoPilot jeszcze zaproponować, jak to zoptymalizować, żeby ten kod był trochę ładniejszy, łatwiejszy w odbiorze dla innych programistów, którzy kiedyś być może będą to po mnie poprawiać. I słuchaj, on był w stanie z dwóch ekranów kodu, który ja napisałem tak dosyć proceduralnie, linijka po linijce, zejść do jakiegoś trzy czwarte, może nawet dobrej połowy ekranu, stosując funkcje PowerShell’a, które były w najnowszej wersji, którą de facto też mieliśmy zainstalowane na serwerze, ale o tych funkcjach ja nie wiedziałem, albo wiesz, nie znałem ich, nie?
    Czyli w takim pierwszym odruchu pisząc kod, no po prostu nie używasz to, o czym czytałeś tylko raz, no bo to jeszcze nie jest w twojej głowie, piszesz to, co umiesz. I on mało że zidentyfikował błąd, to też skrócił bardzo mocno i sprawił, że wizualnie i też jeżeli chodzi o innych programistów, którzy będą to czytać, wyglądało to dużo przystępniej. I to wszystko, cała ta interakcja trwała dosłownie 2-3 minuty. Więc to może nie jest kwestia, z której jestem najbardziej dumny, ale to jest takie najbardziej sztandarowe użycie i najlepszy przykład, który reprezentuje jak mocno CoPilot jest, czy generalnie ta sztuczna inteligencja jest w stanie nam pomóc.
    I od tego czasu zacząłem dużo bardziej się tym interesować, ponieważ przekonałem się co do możliwości, jakie to posiada.

    Szymon Głowania
    Kolejny z tematów, który chciałbym Cię lekko zahaczyć, który się też przewijał pomiędzy tym naszym kodem, bo tak, dzięki temu, że generujemy część tego kodu albo inaczej porządkujemy go też z użyciem różnych narzędzi AI, no ten kod staje się krótszy i bardziej czytelny. Staramy się używać tych samych funkcji, w sensie AI używa tych funkcji najnowszych, dzięki czemu później siłą rzeczy nie tworzymy własnych funkcji, tylko używamy to, co jest dostępne. Ja często, żeby nie powiedzieć zawsze, korzystam jeszcze dodatkowo z tej funkcji, że okomentowywuje mi kod. Nie jest to często komentarz taki stricte biznesowy, jaki bylibyśmy w stanie dostarczyć my jako programiści, którzy zmierzamy do tego, żeby ten dany projekt zrealizować, no bo on niekiedy całego tego kontekstu w takiej formie nie ma zapisanej, natomiast u mnie ułatwia to komentowanie.
    Jak to wygląda u ciebie? Czy też się cieszysz z tego, że w końcu część komentarzy nie trzeba pisać ręcznie? I mogą być wygenerowane do dokumentacji, czy jednak jesteś zwolennikiem stricte biznesowego komentowania i piszemy ręcznie?

    Artur Smółka
    Ta zdolność właśnie komentowania w tych narzędziach AI zawsze bardzo mnie zaskakuje, ponieważ czasami ja sam do końca nie jestem pewien do czego dana funkcja służy i jak ona działa. Ale gdy poproszę tego AI o komentarz to często, nie zawsze wiadomo, ale często jest tak, że jest on w stanie gdzieś sprawdzić te powiązania tej funkcji, że wejść sobie tam trochę głębiej, na przykład na poziom repozytorium, gdzie już mamy mowę o konkretnych polach bazodanowych i na tej podstawie rzeczywiście celnie te komentarze stworzyć. Także tak, od czasu gdy, wiesz, firma wyposażyła mnie właśnie w tego CoPilota czy pozwoliła w ogóle na używanie AI w projektach, bo to też nie było wcale takie oczywiste i te początki były dość trudne, żeby firmę przekonać, to mój kod stał się wyposażony w naprawdę fajne komentarze, dość długie, wyczerpujące i rzeczywiście ta jakość z pewnością jest dużo lepsza.
    Co jest jeszcze, świetnym benefitem komentowania kodu, to jest to, że później możemy generować dokumentację. I tak jak pewnie pamiętasz kiedyś, ja nie wiem jak w twoich projektach, ale u nas zawsze na końcu było takie wymaganie, że słuchajcie, musicie pozostawić po sobie, często pracując jako konsultanci, jakąś dokumentację tego kodu. No i teraz zawsze to było straszne, to generowanie dokumentacji. To była taka syzyfowa praca, jeżeli osoba, która odbierała tą dokumentację była bardzo taka rzeczowa i życzyła sobie tak, skrupulatnie to wszystko analizowała, to rzeczywiście była droga przez mękę. Od czasu, gdy jesteśmy wyposażeni we wszystkie Artificial Intelligence, to mamy strategię taką, że najpierw tworzymy komentarze dobre przy użyciu często AI-a, poprawiamy je nieraz ręcznie, bo wiadomo, że ten AI czasem pisze bardzo ładny tekst, ale z tego za dużo nie wynika, nie ma tego mięsa tam, on jest ładnie po polsku, czy po angielsku sformułowany, ale nie ma tam clue.
    Często musimy te komentarze poprawić, ale sam wsad, który daje nam AI jest nie do przecenienia. A później na tej podstawie już odpowiednimi narzędziami generujemy dokumentację, którą znowu poprawiamy jakąś tam sztuczną inteligencją. No i oczywiście później znów jest wielokrotne czytanie przez programistów, analiza, i tak dalej. To nie jest wiesz co, nie chcę żeby ktoś miał wrażenie, że tutaj wszystko delegujemy na AI, bo gdzieś tam był taki przypadek teraz jak jakaś kancelaria adwokacka się pochwaliła, że używa AI i paradoksalnie straciła klientów, bo wszyscy klienci pomyśleli aha, to oni wszelkie pisma procesowe piszą sztuczną inteligencją, to ja do nich nie pójdę, bo kto wie co tam w tym piśmie będzie. Także w naszym przypadku to wcale też tak nie jest. Zawsze na końcu jest ten człowiek, najczęściej jakiś ekspert, który to analizuje, który to poprawia, który to komentuje. Ale ta wersja inicjalna, którą z reguły najtrudniej jest osiągnąć, czyli wersja na której możemy poprawiać jest generowana tak pół automatycznie i to jest niezwykle łatwiej.

    Szymon Głowania
    U mnie wyglądało to tak samo, czyli też niestety dokumentacja jest smutnym obowiązkiem, który i sobie i innym powinniśmy zostawić, bo tutaj też trzeba podkreślić, że dokumentacja własnego projektu też jest bardzo ważna, bo po dwóch tygodniach już tego projektu jesteśmy w stanie nie pamiętać. Więc tutaj na pewno nam to dużo ułatwi. Czy oprócz tych zalet i perspektyw, które daje nam sztuczna inteligencja widzisz jakieś możliwe problemy, żeby tą sztuczną inteligencję dalej wprowadzać, że może nastąpić jakieś zatrzymanie albo wyparcie tej sztucznej inteligencji, czy to z konkretnych projektów, czy z jakiegoś sektora, którym się zajmujemy? Bo tutaj sektor bankowy, zdrowie, usługi prawnicze są takimi, które potrafią być problematyczne zawsze.

    Artur Smółka
    Obserwując to jaki zysk mamy we sztucznej inteligencji, obserwując to jak duży zwrot tej inwestycji osiągamy, nie spodziewam się, aby coś było w stanie to zatrzymać. Jestem w stanie sobie wyobrazić dwie sytuacje. Pierwsza to byłaby wtedy, kiedy zaliczylibyśmy jakąś dużą wpadkę, taki fuck up, że sztuczna inteligencja coś by nam zasugerowała np. w jakiejś takiej większej skali globalnej, pamiętamy ten wakacyjny problem, który miał Microsoft z tym swoim wtyczką, takim analizującym zachowanie stacji roboczych, gdzie tam uległo to awarii, ludzie nie mogli włączać komputerów. Pewnie jeszcze parę byśmy takich wymienili i myślę sobie, że taki spadek zaufania mógłby przyczynić się z kolei do spadku zainteresowania tą sztuczną inteligencją, a to mogłoby się wydarzyć, gdybyśmy zaliczyli jakiś  taki olbrzymi fuckup.
    Natomiast to też nie byłaby przecież wina samej sztucznej inteligencji, tylko raczej osób, które ją używają. 

    Szymon Głowania
    Źle użyły.

    Artur Smółka
    Dokładnie. I gdzie zabrakło tego procesu weryfikacji, czy chociażby użycia innego tool’a AI, który sprawdziłby tego pierwszego np. w statycznej analizie kodu. Sonar Cube czy jakiś sneak code, o którym wcześniej wspominałem. A druga rzecz to są regulacje. Gdyby w jakiś sposób ta sztuczna inteligencja się nam trochę wymsknęła, zaczęłoby się to… Widzicie, ze sztuczną inteligencją jest trochę problem taki, że na ten moment mieliśmy świetną bazę wiedzy. Był internet, była dokumentacja, gdzie były dokumenty pisane typowo przez ludzi, wyłącznie przez ludzi. Czyli te dwa lata, gdzie mamy bardzo silny rozwój sztucznej inteligencji, tam była świetna baza wiedzy stworzona przez ludzi.
    Dzisiaj połowa pewnie, a może i więcej dokumentów jest już tworzona przez sztuczną inteligencję, co w praktyce oznacza, że sztuczna inteligencja zaczyna się uczyć sama od siebie. To tak jak trochę z kompresją pliku. Jeżeli mamy plik tekstowy, kompresujemy go zipem, no to pierwsza kompresja wypadnie świetnie, pewno z 80%, może 90%. Natomiast gdy próbujemy skompresowany plik zip skompresować ponownie, to może wydusimy 1%, a pewnie wcale, a może nawet ten plik będzie większy w zależności od paru składowych. I boję się, że z tą sztuczną inteligencją może być troszkę podobnie. Gdy dokumenty produkowane przez sztuczną inteligencję będą zawierać błędy, czy gdy generalnie ta wiedza, którą ona wytworzy, będzie nieznacznie błędna, ale w kolejnych interakcjach ten błąd może się powielać i rosnąć.
    On może stawać się coraz większy, aż dojdziemy do jakichś dużych takich przekłamań. Więc generalnie zastanawiam się, czy ta przyszłość sztucznej inteligencji nie zwolni i ten przyszły rozwój nie będzie jednak trochę postępował słabiej, z tego powodu, że nie będziemy już mieli takiej dobrej, niezawodnej, pewnej bazy wiedzy budowanej przez ludzi. No bo internet jest przeszukany, dokumentacja jest przeszukana, książki są przeszukane i na tej podstawie mamy to, co mamy dzisiaj. Natomiast tak odpowiadając w dużym skrócie, ja widzę jak duża to jest pomoc i wiesz, tak jak samochody spalinowe też mają wiele wad, ale raczej nikt nawet nie myśli o tym, żeby ich tak całkowicie zabronić, raczej trochę usprawnić czy uregulować.
    Myślę, że podobnie będzie ze sztuczną inteligencją i tymi tematami wokół AI.

    Szymon Głowania
    Tak, no jakby zostało nauczone na wszystkim co już było, więc tutaj siłą rzeczy ten przyrost w takim kącie może być mniejszy. Ja się zastanawiam tylko czy tutaj nie będzie podobnej sytuacji, nie tak szybko jak, ale będzie podobnej sytuacji jak było z AlphaGo, kiedy najpierw twórcy algorytmu stworzyli algorytm, który nauczył się na grach najlepszych mistrzów i grał w tą grę rzeczywiście z zawodowcami i osiągnął jakiś tam sufit, którego już nie był później w stanie przebić. Natomiast skoro wiedza ludzka się skończyła, to wtedy ten robot zaczął uczyć się grać sam ze sobą, czyli dostarczone podstawowe środowisko, w ramach którego się nauczył grać sam ze sobą i jakie są reguły tej gry.
    Proste reguły tylko zostały narzucone do gry w go. No i później powstały w ramach tych iteracji i tych własnych treningów powstały nowe strategie gry w go, której ludzie przez taki duży czas nie wymyślili. Oczywiście część tych wymyślonych przez AI i tych wymyślonych przez ludzi jest taka sama, natomiast powstały nowe strategie. No ja myślę, że u nas może być podobnie, czyli że przejdziemy już do tego, żeby te maszyny, trochę bardziej algorytmy, uczyły się same ze sobą, czyli jakby ta historia i to skąd biorą wiedzę będzie się trochę zmieniało, natomiast żeby popełnić kolejny krok duży w przód, będzie to musiało wyjść na taką symulację nauki samej ze sobą.
    Tylko pytanie później, jak daleko boimy się oglądać Terminatora i Ja robot, kiedy to maszyny produkują maszyny. Myślę, że jesteśmy fanami takich robotów tutaj, więc raczej byśmy nie mieli z tym problemu.

    Artur Smółka
    Absolutnie. No właśnie, to bardzo ciekawy aspekt poruszyłeś. Jeszcze musi wiesz, gra w Go, powiedzmy, że jest to jakiś taki ala system zamknięty, że ten algorytm jest… w pewien sposób ograniczony granicami.

    Szymon Głowania
    Proste reguły.

    Artur Smółka
    Tak, proste reguły, wiadomo, wiele możliwych rozwiązań, ale skończony zbiór tych rozwiązań. Natomiast gdzieś, gdzie mówimy o wiedzy i mówimy w ogóle o takim AI-u, który tworzy coś, takim generative AI, to on musi mieć jakieś podstawy w konkretnej wiedzy. I czym te podstawy będą lepsze, tym rezultat będzie lepszy. Więc tak jak mówisz, jest duża obawa, gdy te podstawy będą nieco gorsze albo dużo gorsze, ponieważ będą pochodziły od sztucznej inteligencji, która już jako a priori zawiera pewne błędy czy przekłamania, no bo została wygenerowana przez AI. Jeżeli to powielimy wielokrotnie, powielimy, przepuścimy to przez algorytmy, no to wtedy być może będzie w efekcie tak, że te błędy z małych początkowo staną się całkiem duże i te przekłamania będą ogromne i to z kolei mogłoby w teorii doprowadzić do utraty zaufania.
    Natomiast nie spodziewam się, żeby tak było. Myślę też, że zbyt duże finanse i zbyt tęgie głowy za tym stoją, żeby dopuściły do czegoś takiego.

    Szymon Głowania
    Dobra, jeszcze tylko tak już pod koniec jedno pytanie, bo to słowo też parę razy padło dzisiaj na naszym spotkaniu. Zaufanie, mianowicie zaufanie do sztucznej inteligencji. No bo mamy kilka podejść, nie każdy z algorytmów są w pełni rozliczalne. Jesteśmy w stanie sprawdzić, jak będą działały w konkretnych sytuacjach. Albo nie jesteśmy w stanie tak wiele różnych sytuacji wygenerować, żeby to po prostu sprawdzić. Jak z twojej perspektywy wygląda to budowanie tego zaufania do tych rozwiązań, no bo my wiemy jak one działają, więc nam jest trochę łatwiej to zaufanie później budować, bo wiemy jakie elementy możemy się spodziewać, skąd to się wzięło i jesteśmy w stanie sobie później sprawdzić taką odpowiedź.
    Natomiast jak będziemy przechodzili już w taką bardziej automatyczną, rzeczywiście zastosowanie tych tooli, gdzie nie zawsze osoba korzystająca będzie w pełni świadoma jak ten tool działa i czego się można po nim spodziewać, jak to rozwiązanie finalnie powinno wyglądać, no i jak to zaufanie możemy budować teraz, budować później i czy w ogóle, że tak powiem, będzie możliwość, żeby to zaufanie na wystarczającym dla nas poziomie było.

    Artur Smółka
    Wydaje mi się, że na dzisiejszym etapie rozwoju sztucznej inteligencji my w żadnym razie nie możemy darzyć jej zaufaniem. Traktujemy to jako narzędzie i nie powinniśmy go darzyć zaufaniem, ponieważ widzimy jak wiele tych tak zwanych halucynacji, przekłamań, stronniczości, i w tym AI się pojawia. Nasza dziedzina, którą jest programowanie, taka wiedza bardzo deterministyczna, twarda, techniczna jest nieco łatwiejsza, ponieważ tam często jest 0 albo 1. Coś działa albo coś nie działa, więc mamy możliwość zweryfikowania. Natomiast absolutnie odradzam korzystania z rozwiązań AI, a już szczególnie sprzedawania ich do klienta czy używania np. w produkcyjnym kodzie, których nie rozumiemy. Każdy element kodu wygenerowany przez AI musi być zweryfikowany przez nas. My go musimy rozumieć, wiedzieć po co on jest, wiedzieć jak on działa. Czasem ten kawałek kodu może być bardzo odkrywczy, jak w tych funkcjach poshare’owych, o których mówiłem, ale musimy dojść do dokumentacji, sprawdzić te funkcje, ocenić to, zrobić taki własny assessment.
    I ewentualnie się z tym nie zgodzić, zmodyfikować samemu lub znów w pomocy z AI, albo całkowicie usunąć. Absolutnie uważam za niedopuszczalne rozwiązanie, że ktoś z takim dobrodziejstwem inwentarza wykorzysta kod, którego nie rozumie. Jeżeli mówimy o szerszych zastosowaniach AI, jakaś tam medycyna, prawo i tak dalej, sytuacja wygląda identycznie. AI może wygenerować świetny plan leczenia dla kogoś, świetną dietę czy świetne pismo procesowe, ale to my musimy sprawdzić czy to na pewno jest bezpieczne, czy na pewno paragrafy na które on się powołuje istnieją i świadczą, w takim kontekście, w jakim AI to opisuje i generalnie ta walidacja, sprawdzenie jest zawsze konieczne.
    Jeżeli mówimy o zaufaniu do AI, na ten moment, tak jak mówię, wiele halucynacji, wiele podatności na sugestie, wiele stronniczości wynikających z baz wiedzy, na których AI był uczony. Także absolutnie wszystko musi przejść przez sito ludzkie i w takim rozwiązaniu enterprise czy produkcyjnym. Absolutnie odradzam, aby przyjmować to bezkrytycznie.

    Szymon Głowania
    Ja teraz podchodzę trochę tak jak do człowieka, mam wrażenie. Ode mnie duży bonus, bo jest traktowany personalnie. Natomiast traktuje go jak takiego nowego pracownika. Jak taki zaraz po studiach pracownik, który przychodzi do pracy. On trochę o świecie wie, ale nie wszystko. Trzeba mu rzeczywiście w krokach powiedzieć jak się ma zachować. Zawsze odpowie na pytanie. Bo AI, Generative AI zazwyczaj, nie wiem czy się spotkałem z sytuacją, żeby nie odpowiedział na zadane pytanie. więc on zawsze odpowiada na pytanie, czyli po prostu nie przyznaje się, że kłamie, albo że czegoś nie wie. Co też niekiedy jest cechą ludzką, nie tylko generative AI, więc z mojej perspektywy to jest taki właśnie nowy pracownik zaraz po szkole, który coś już tam wie, może mieć świetne pomysły, ale rzeczywiście trzeba po nim wszystko sprawdzić.
    Czyli tutaj ta walidacja niestety po naszej stronie musi być, no bo to przychodzi z automatu i może to pochodzić z różnych części, a siłą rzeczy odpowiedzialność później za taki kod dostarczony jest po naszej stronie. 

    Artur Smółka
    Tak, tak. Świetne porównanie z tym człowiekiem jakimś siedział po studiach czy osobą, która przyszła do pracy. I to w ogóle masz pełną rację, że on zawsze odpowie i to jest niebezpieczne. Ja się spotkałem w pewnym kraju, już tam nie będziemy mówić o konkretnych krajach, żeby nie budzić skojarzeń, natomiast w niektórych krajach jest tak, że jak zapytasz kogoś o drogę, to oni ci zawsze odpowiedzą, nawet jak nie wiedzą. I parę razy mnie tak tam pokierowali, ja wyszedłem gdzieś w całkowicie jakimś innym miejscu i później kogoś pyta, mówię, jak to jest, że ten pan mi kazał tu iść, tu, tu?
    To akurat był obcokrajowiec, ten, którego spytałem, mówi, słuchaj, oni są tacy, że oni się nie przyznają, że nie wiedzą. Oni ci zawsze odpowiedzą, nawet jak nie wiedzą. Nawet jak mają tylko mgławe pojęcie, oni ci zawsze powiedzą, idź tu, tu, tu. I ja właśnie padłem ofiarą takiego wskazywania drogi. I myślę sobie, że jest dosyć dobra ta alegoria do AI. On też często Ci odpowie, nawet jak nie jest pewien, albo nawet jak totalnie nie zna odpowiedzi, bo Ty już wiesz, że w tym pytaniu nie ma jasnej odpowiedzi. To pytanie już jest z gruntu rzeczy błędne, nie idzie na nie odpowiedzieć, a odpowiedź otrzymasz, co jest znakomitym dowodem na tę halucynację i na to, że on odpowie nawet jak nie wie.
    Można się trochę przed tym zabezpieczać, wiesz, są tam różne metody, te ragy, czy jeszcze wiele innych tematów, można w ogóle nawet w prompcie go zapytać, że jeżeli nie masz konkretnych podstaw, do odpowiedzi, nie jesteś pewien odpowiedzi, nie jesteś w stanie powołać się na konkretne źródła, to napisz, że nie wiesz. I często też radzi się, aby gdzieś tam w taki prąd umieszczać. Często też narzędzia, które są już gotowe, przygotowane, mają takie klauzule, takie dyspozycje, takie polecenia dla AI-a. Słuchaj jak nie wiesz, napisz, że nie wiesz, nie odpowiadaj, nie harucynuj. Ale tak jak powiedzieliśmy, zawsze ograniczone zaufanie, podstawowa zasada, wiesz, nie tylko na drodze, ale też w AI.

    Szymon Głowania
    Z mojego doświadczenia, jeśli chodzi o pisanie promptów, dodanie mu informacji, że jeśli w danym kontekście rzeczywiście brakuje mu jakiejś informacji, żeby dopytywał, też poprawia to, jaka ta jakość tego kodu, czy jakość rozwiązania jest dostarczana, nie? Mimo wszystko potrafi przejść później przez jakieś rozwiązanie i dopytać albo sprawdzić taką check listę, natomiast nie jest to coś co tam wskakuje z automatu, czyli my musimy o to zadbać, bo z automatu on ma odpowiedzieć i odpowiada na takim poziomie jak umie, a że nikt nie zawsze wszystko umie to niekiedy te odpowiedzi są.

    Artur Smółka
    Tak, dokładnie. Traktujmy to jak narzędzie. Być może narzędzie o wielkim potencjale, o wielkich możliwościach, ale cały czas jest to narzędzie w naszych rękach. To nie jest wyrocznia, w której możemy bezkrytycznie korzystać. Także ja myślę, że dopóki będziemy traktowali to jako narzędzie, to nic złego się nie stanie w sensie takim, że nie padniemy jakby ofiarom jakichś sugestii, czy jakichś halucynacji AI, które nie są zgodne ze stanem faktycznym. Natomiast gorzej, jeżeli ktoś zacznie brać wszystko z AI za prawdę, że wie, że to na pewno, słuchaj AI mi tak napisało, ja już to widzę nieraz w dyskusjach, gdy ktoś jest, wiesz, jakiś jest spór w dyskusji i ktoś ma różne zdanie czy inaczej się zapatruje na pewne kwestie.
    Ktoś wyciąga telefon, pisze do AI i AI zawsze odpowie jak już ustaliliśmy. Pokazuje i mówi zobacz jest tak. A ktoś mówi nie no tak nie jest. Po prostu AI ci tak odpowiedział. Ja zaraz skonstruuję trochę inny prompt i on odpowie tak jak ja chcę. Także mówię, te duże możliwości i to, że zawsze odpowiedź jakąś dostaniemy, sprawia, że niektórzy ludzie mają wrażenie, że AI jest nieomylny albo wszechwiedzący. Absolutnie tak nie jest, raczej jest totalnie na odwrót. I tak jak mówię, traktujmy to jako narzędzie, tak jak encyklopedię, czy jakiś świetny scyzoryk, który ma wiele różnych możliwości, ale nadal jest to narzędzie i to my jesteśmy odpowiedzialni za właściwe wykorzystanie.

    Szymon Głowania
    Temat sztucznej inteligencji, temat rzeka obecnie bardzo rwąca, która wszystkich chętnie porywa. Tych narzędzi AI jest oczywiście mnóstwo, musimy wybrać jakieś dla siebie, korzystać z rozsądkiem, starać się dostać coś ciekawego od nich, żebyśmy byli w stanie sobie coś z tego torciku wziąć dla nas. Nasz ekspert poleca stosowanie AI?

    Artur Smółka
    Tak, absolutnie, absolutnie polecam, absolutnie doradzam wyrobić sobie swoje własne zdanie, czyli użyć, mówię, to co jest bardzo fajne w tych narzędziach, praktycznie każdy z nich ma wersję testową, która jest bardzo bogata, która jest darmowa, często na miesiąc, być może nawet dożywotnio, do zastosowania komercyjnych, zależy od narzędzia. Każdemu programiście warto skorzystać. Doradzam, aby spróbował. Doradzam wyrobić sobie własne zdanie. Przede wszystkim mieć na uwadze to, że kluczowy jest prompt, kluczowy jest kontekst i dalej kluczowa jest nasza ocena rezultatu, który dostaniemy od AI. Nie bierzemy wszystkiego w dobrodziejstwie inwentarza, nie bierzemy wszystkiego bezkrytycznie, ale próbujemy, bo jeżeli wiążemy naszą karierę z programowaniem, z jakimś tematem technicznym, to AI naprawdę bardzo mocno nam pomoże.
    Dlatego, że nasz zawód jest oparty na wiedzy. Trudno, aby ktoś zgromadził wszystką wiedzę w swojej głowie. Warto wspomóc się takimi narzędziami, które tą wiedzę mają bogatszą, a naszą z kolei wiedzą i doświadczeniem weryfikować to, co dostaniemy. Także raczej nie boimy się AI, raczej współpracujemy z nią, traktujemy jak narzędzie. Naprawdę zachęcam każdego, żeby wyrobił swoje własne zdanie w oparciu o jakąś troszeczkę dłuższą niż jednodniową przygodę z AI.

    Szymon Głowania
    Czyli każdy z nas znajdzie swój mały projekt, z którym będzie mógł sobie przetestować, czy to będzie samochód, czy to będzie nowy pracownik, ale tak czy inaczej jakiś AI będzie z nami współpracował. Zachęcamy oczywiście do korzystania, ale z głową, bo te zastosowania mogą nam po prostu bardzo fajnie ułatwić pracę.

    Aby nie przegapić kolejnych odcinków, zasubskrybuj podcast Tech Chatter w swojej ulubionej aplikacji. A jeśli spodobał Ci się ten odcinek, daj nam znać wystawiając ocenę na Spotify lub Apple Podcasts. Wszystkie linki do zagadnień poruszonych w odcinku znajdziesz w jego opisie.