Czy AI może pisać kod za mnie? O moich doświadczeniach z Copilotem

Prawie dwa lata temu nagrałem film na moim kanale YouTube, w którym testowałem ChatGPT i zastanawiałem się, czy sztuczna inteligencja może zastąpić programistów. Testowałem dość proste zadania programistyczne, głównie związane z WordPressem, gdzie sztuczna inteligencja miała wygenerować kod na podstawie mojego zapytania. Efekty były średnie i wówczas dość sceptycznie podchodziłem do AI w kontekście programowania.

Dziś korzystam na co dzień z GitHub Copilot – narzędzia, które znacząco ułatwia moją pracę. GitHub Copilot to płatne narzędzie (10 dolarów miesięcznie), ale patrząc na oszczędności czasowe, to naprawdę niewielki koszt w porównaniu do korzyści, które daje. Zaczęło się od prostego testu – po rozmowie z kolegą z pracy, który polecił mi to narzędzie, zainstalowałem plugin do Visual Studio Code i od razu zacząłem korzystać. A po więcej zapraszam oczywiście do podcastu.

🎥 Partner odcinka: cyber_Folks – 20% rabatu na hosting WordPress z kodem podcast!

Podcast dostępny m.in w: Spotify, Apple Podcasts, Google Podcasts

TRANSKRYPCJA AUTOMATYCZNA:
Cześć, witajcie w kolejnym odcinku mojego podcastu. W dzisiejszym odcinku chcę podzielić się z tobą moimi doświadczeniami z używania narzędzia takiego jak GitHub czyli takiej sztucznej inteligencji, która wspiera programistów w codziennej pracy.

Prawie dwa lata temu na moim YouTube pojawił się film, czy ChatGPT zastąpi programistów i tam wtedy w tym filmie testowałem sobie takie, można powiedzieć, dosyć proste zadania programistyczne, dotyczące oczywiście WordPressa, gdzie zadawałem mu jakiś konkretny problem do rozwiązania, miał wygenerować. Powiedzmy, że te efekty były takie sobie i tak dosyć sceptycznie podchodziłem do całego tego AI’a w kontekście programowania. Natomiast w tym momencie korzystam z tego na co dzień. Oczywiście nie z ChatGPT, chociaż też zdarza mi się korzystać – ale właśnie z Copilot’a. Z Copilot’em pracuję ponad rok, bo jak sobie zajrzałem do GitHub’a na rozliczenia, to pierwsza płatność została pobrana w listopadzie 2023, bo GitHub Copilot jest narzędziem płatnym, natomiast kosztuje on 10 dolarów, myślę, że w skali miesiąca jest to żaden wydatek, jeśli zawodowo zajmujecie się programowaniem, a naprawdę bardzo, bardzo dużo czasu można zaoszczędzić. No ale o tym powiem za chwilę.

Oczywiście jak zawsze jest z nami partner mojego podcastu, czyli marka CyberFolks dostarczająca domeny i hosting pod WordPressa, jeśli szukacie to możecie zajrzeć na ich stronę i poznać ofertę. Z kodem podcast pisanym przez C otrzymacie 20 % rabatu na hosting WordPress.

Ok, wracajmy więc do tego naszego Copilot’a i jak w ogóle ta moja historia z nim się zaczęła. Wyglądało to tak, że od dawna wiedziałem, że jest takie narzędzie, że ono jest niby fajne, że coś tam robi, podpowiada, jakoś tam wspiera programistę w takiej codziennej pracy. Natomiast to było trochę takie podejście na zasadzie, no trzeba do tego na spokojnie usiąść, zobaczyć. Pewnego dnia w pracy w WLC właśnie rozmawiałem z kolegą z Dawidem temat tego narzędzia i on mówi, że używam i w ogóle nie bez tego. Ja w sumie tak mówię do niego, no też muszę na spokojnie usiąść, spróbować. On mówi, że tam nie ma w zasadzie jakiegoś większego problemu, bo wystarczy szybka rejestracja, instalacja dodatku na przykład do Visual Studio Code’a.

Chyba jeszcze tego samego dnia zarejestrowałem się, pobrałem sobie jakąś tam wtyczkę do tego Visual Studio Code’a i zacząłem pracować z narzędziem i moje pierwsze wrażenia były dosyć ciekawe. Tutaj jeszcze wspomnę, że pierwszy miesiąc jest darmowy więc spokojnie możecie się zapoznać z tym narzędziem, przetestować bez ponoszenia kosztów, a potem ten plan taki indywidualny kosztuje bodajże 10 dolarów. Chyba się nic nie zmieniło, dokładnie tyle ostatnio zeszło z mojej karty. Oczywiście klasyczne podpinacie subskrybcję i co miesiąc schodzi wam te 10 dolarów.

Moje pierwsze próby z tym narzędziem były takie trochę dziwne, bo z jednej strony super fajnie to wszystko zaczynało działać. Z drugiej strony trochę taki mindfuck w głowie, bo no pisałem sobie tam jakiś kod i pamiętam, że to był case, gdzie jakiś kod JavaScriptowy i chciałem sobie w kolejnych linijkach coś tam debugować i zrzucić po prostu jakieś dane konsoli, żebym widział, co tam się w tym kodzie dzieje, jak te dane są przetwarzane.  Kończyłem jakąś tam linijkę, która coś robiła z tymi danymi i w następnych miałem zrobić jakieś tam debugi i zacząłem pisać i on dosłownie tak jakby siedział w mojej, bo zaproponował mi dokładnie to, co chciałem napisać. W pierwszych momentach właśnie miałem taki stan, bo myślisz o czymś i za chwilę ten komputer ci to podpowiada.

Dziwne uczucie. Oczywiście to stało się normą i już zupełnie nie zwracam na to uwagi, ale to w pierwszych momentach, w pierwszych dniach było trochę dziwnie. Może tutaj jeszcze krótko opowiem Ci, co w zasadzie potrafi ten Copilot. Bardzo możliwe, że funkcje, o których ja powiem, to oczywiście nie będzie wszystko, bo tak jak mówię dzielę się tu swoimi doświadczeniami w tym odcinku. Copilot jest naprawdę potężnym narzędziem jeśli się go odpowiednio wykorzysta.

Jeśli chciałbyś zacząć współpracę z Copilotem na co dzień jak w ogóle to funkcjonuje, jak to działa. Taką, myślę, podstawową funkcją jest po prostu podpowiadanie kodu, ale nie takie podpowiadanie jakie znamy i znaliśmy do tej pory we wszelkich edytorach, że jeśli zaczniemy pisać jakąś tam nazwę funkcji, no to on nam ją dopełni, poda nam jakieś argumenty i tak dalej.  Tylko to jest takie podpowiadanie kodu, gdzie nawet może nam podpowiedzieć całość metody w klasie, czy jakiś tam fragment kodu. On się oczywiście też uczy na bazie tego kodu, na którym pracujemy, on podpowiadając nam, załóżmy użycie jakiejś funkcji jest już w stanie elegancko podstawić odpowiednie parametry, czyli jeśli mamy jakąś tam zmienną przechowującą, choćby nie wiem, jakieś wpisy, produkty, cokolwiek, no to on już wie, że albo przynajmniej się spodziewa, że w tej zmiennej jest to, co trzeba wstawić, na przykład tam nie. W trzecim argumencie danej funkcji, której gdzieś tam użyje. I oczywiście generuje nam nie tyle linijkę, co czasem całe bloki kodu.

Może nam to wygenerować na kilka sposobów. Jednym sposobem to jest oczywiście takie podpowiadanie i on to robi praktycznie non stop. Jeśli zaczynamy pisać kod w danej metodzie jakiejś klasy, no to on nam podpowiada, bo przewiduje na przykład po tym jak nazwaliśmy daną metodę, co ta metoda chce zrobić. Oczywiście gdzieś tam tak kontekstowo nam to podpowiada i to działa można powiedzieć zawsze. Oczywiście on działa z wszystkimi typami plików. Mam na myśli tutaj pliki PHP-owe, JavaScript-owe, HTML-owe, CSS-owe jest w stanie po prostu wszystkie te języki obsługiwać. I może właśnie tak podpowiadać gdzieś tam kontekstowo kolejną linijkę 2, 3, 5 w zależności jak tam mu się wygeneruje, ale też możemy zrobić to na zasadzie takiej, gdzie piszemy sobie na przykład komentarz taki dokumentujący co dana metoda ma robić. On na podstawie tego komentarza jest już w stanie na przykład nazwać tą metodę, przygotować właśnie ciało tej metody jeśli chodzi o kod. No i my możemy sobie gdzieś tam przejrzeć to co on wygenerował. Zwykle trzeba tam wprowadzić jakąś mniejszą bądź większą modyfikację. No ale radzi sobie z tym bardzo dobrze. Ja też czasem korzystam z jakiegoś takiego… można powiedzieć skrótowego promptowania go, a mam na myśli tu sytuację, w której piszę jakiś tam większy kod i w danym momencie chcę zrobić coś, czego on mi nie podpowiada, czyli nie wiem, wyciągnąć jakieś tam dodatkowe dane z bazy, cokolwiek co jest mi potrzebne w danym momencie, no to możemy po prostu po dwóch sleszach wpisać jakiś tam krótki komentarz typu get all orders.

Wtedy już w kolejnej linijce sugeruje mu to co podaliśmy w tym komentarzu i to naprawdę świetnie działa, bo jeśli ten komentarz jest wystarczająco precyzyjny to naprawdę może wygenerować bardzo dużo fajnego kodu. Oczywiście wszystko należy też sprawdzić, bo to nie jest tak, że ten kod zawsze będzie w 100% poprawny i będzie działał tak jak chcemy, bo niestety też się zdarzało, że on gdzieś tam radośnie sobie zaczynał halucynować i podpowiadał mi na przykład użycie funkcji, które nie istnieją w WordPressie czy w WooCommerce.

To narzędzie działa też w drugą stronę, czyli jeśli mamy już jakiś kod napisany, czyli np. mamy jakąś klasę, gdzie mamy te metody już zaprogramowane, bo jest to jakiś powiedzmy stary projekt, chcielibyśmy dodać tam komentarze, takie dokumentujące dane metody, no to możemy też go poprosić o wygenerowanie i on na podstawie kodu, który tam się znajduje, jest w stanie też przygotować takie komentarze. Również jeśli analizujemy jakiś kod, nie do końca wiemy co on robi, możemy mu zaznaczyć cały blok kodu i poprosić go o wyjaśnienie tego i on krok po kroku opisze nam co ten kod robi, co tam dana funkcja, dana metoda robi. I to też bywa przydatne do takiej analizy jakiegoś bardzo skomplikowanego kodu, jeśli mamy czasem jakiś taki kod, który jest napisany w nie najlepszy sposób i musimy się szybko zorientować o co autorowi chodziło. To sprawdza się to dosyć fajnie.

Możemy też zaznaczyć jakiś blok kodu i poprosić go o poprawienie tego kodu. On wtedy tam sugeruje nam jakieś zmiany, które można by było zrobić, aby ten kod uprościć, czy poprawić jakieś tam rzeczy związane choćby z security. Również możemy wykorzystać czat, taki podobny jak choćby czat GPT, czy inne tego typu narzędzia, gdzie możemy po prostu z nim pogadać, zapytać go o coś, poprosić go czy zapytać jak zrealizować jakiś kod, który rozwiąże nam problem. Czyli możemy mu napisać, że hej, potrzebuję po zakrzangowaniu płatności w WooCommerceie wykonać jakąś akcję. No to on wam wtedy odpowie, możesz użyć takiego kodu, poda nam konkretną akcję z WooCommercea, pod którą się możemy podpiąć i jakiś tam przykładowy kod, który realizuje jakieś tam zadanie.

Więc działa to całkiem spoko. Zdarzyło mi się też korzystać właśnie w kontekście WooCommerce. Nie pamiętałem po prostu nazwy hooka. Robiłem coś takiego kiedyś tam wcześniej i nie mógłbym sobie przypomnieć nazwy hooka, żeby wygooglować sobie i sprawdzić jakie tam parametry przyjmuję i tak dalej. Powiedziałem mu co chce zrobić i trafił bardzo dobrze. Powiedział mi co i jak. Natomiast miałem też case, gdzie się wywalił można powiedzieć na tym podpowiadaniu, chodziło tam o jakieś specyficzne query jeśli chodzi o produkty. Potrzebowałem wyciągnąć produkty z jakimś tam określonym parametrem. Według kilku jakichś tam kryteriów, nie pamiętam w tym momencie co to było. Natomiast wprowadził mnie w błąd, bo podał mi jakiś kod, który zawierał parametr, który w ogóle nie działał, nie było tego parametru w WooCommerce nieobsługiwany był, więc brzmiał całkiem logicznie, bo sama nazwa parametru sugerowała, że dokładnie to czego potrzebuje, ten kod mi wyciągnie, ale okazało się, że to był jakiś taki parametr, który AI sobie wymyśliła, a on w ogóle nigdy w WooCommerce nie był obsługiwany. Więc zdarza się też tak.

Jako przykład z drugiej strony, czyli tam gdzie Copilot mnie bardzo pozytywnie zaskoczył, mogę podać taki case, gdzie pisałem sobie jakąś klasę, która miała za zadanie zapisywać logi określonych czynności do customowej tabeli w bazie danych i oczywiście tam miała umożliwiać wyświetlanie ich i z tego co pamiętam tam jeszcze było jedno zadanie, czyli czyszczenie logów starszych niż 30 dni. No i tutaj bardzo, bardzo mnie zaskoczył pozytywnie. Już troszkę tak świadomie podszedłem do tego. Najpierw mu wrzuciłem kawałek komentarza i w tym komentarzu zawarłem między innymi strukturę tabeli, której chodziło. Po prostu wyeksportowałem sobie w jakimś tam PHPMyAdminie, czy czymś podobnym tabelkę, której ta klasa miała dotyczyć, na której miała operować. I co ciekawe, on mi można powiedzieć zaproponował od razu wszystkie metody, które tam były potrzebne, czyli na przykład dodawanie nowego rekordu, pobieranie rekordów, wyświetlanie ich w jakimś tam sensownym formacie i tak samo ta metoda doczyszczania rekordów starszych niż 30 dni, można powiedzieć, napisała się sama, po prostu on wygenerował wszystko odpowiednio.

Zadbał oczywiście też o wszelkie rzeczy jakieś tam związane z bezpieczeństwem. Z tym żeby te rekordy były zapisane w poprawny sposób w bazie danych. I tutaj, no w zasadzie ta klasa napisała się sama. Dosłownie tam zrobiłem może kilka jakichś drobnych modyfikacji. Ale reszta, super wszystko można powiedzieć zadziałało i zadanie, które miałem przewidziane na troszkę więcej, zajęło mi dosłownie 10 minut, żeby przygotować całą tą klasę. No gdybym pisał to ręcznie, to raz, że jakaś tam zawsze możliwość większa popełnienia błędu, jakiegoś takiego powiedzmy głupiego typu, jakaś konstrukcja zapytania nie taka, jakaś literówka tego typu rzeczy. No a dwa, to są takie dosyć powtarzalne rzeczy. 

Nie było nic odkrywczego, tak jak mówiłem, jakieś standardowe operacje wykonywane na tej tabeli, plus właśnie ten mechanizm czyszczący, który de facto odpalał jedno zapytanie do bazy, które miało usunąć wpisy starsze niż 30 dni. I właśnie przy okazji takich zadań ten Copilot, mam wrażenie, sprawdza się najlepiej. Jeśli mamy takie jakieś powtarzalne rzeczy, trochę nudne, no bo umówmy się, pisanie takiej klasy to jest nic specjalnego i myślę, że żaden programista jakoś nie jest szczególnie zafascynowany pisaniem klas, które operują na tabelkach i robią operacje zapisu czy usuwania tych danych. A tutaj możemy sobie bardzo, bardzo skrócić ten proces i właśnie zrzucić ze swoich barków taką prostą, powtarzalną robotę, która bywa też po prostu nudna czasem.

Jeśli chodzi o jakieś takie bardziej specjalistyczne, customowe rozwiązania, to bardziej to wygląda tak, że właśnie kawałek po kawałku mu gdzieś tam albo podpowiadam, albo wręcz on gdzieś tam patrząc na to, co ja programuję, próbuje zgadywać, co chcę zrobić. No i zarówno jedna, jak i druga metoda tak powiedzmy małymi krokami zbliża mnie do tego finalnego efektu. Natomiast też pozwala mi pracować czy bezpośrednio nawet konsultować jakieś rzeczy, nie wyskakując z edytora kodu do Google’a, tylko na przykład mogę go dopytać na tym czacie. Jeśli nie pamiętam czegoś, to nie muszę grzebać gdzieś tam po dokumentacji, tylko od razu w jednym miejscu mogę sobie to robić. I też kwestia tego, w pewnym sensie jest to dobry sposób na naukę, bo czasem sugeruje też jakieś takie konstrukcje czy metody rozwiązania danego problemu, których bym może nie pomyślał, może bym na nie nie wpadł i zawsze jest to jakaś tam wartość dodana do całego tego procesu.

Zbliżając się już tak do końca odcinka, jeśli miałbym to podsumować, oczywiście nie jest to narzędzie, które zrobi coś za ciebie od A do Z. W moim odczuciu najlepsze efekty będą mieli jednak seniorzy bądź takie bardziej zaawansowane osoby, które z tym kodem pracują i są w stanie też ocenić to, co zostaje wygenerowane przez tę sztuczną inteligencję, no bo jednak zdarza się, że tam są generowane też głupoty. Więc jeśli jakiś junior chciałby bardzo pisać rozbudowany plugin, bazując tylko na umiejętnościach czy wiedzy Copilota, o to może się to sprawdzić nie do końca dobrze. Bo zdarzało się też, że robił mi na przykład konstrukcję typu – jeśli chciałem usunąć wszystkie posty –  no to mimo tego, że funkcja odpowiadająca za usunięcie posta czyści też wszystkie postmety i jakieś tam inne relacje typu kategorie, taksonomie i tak dalej, no to on mi wygenerował kod, którym po usunięciu posta jeszcze usuwał, próbował usuwać z postmeta te wszystkie informacje, mimo tego, że przecież ta jedna funkcja załatwia już cały temat. Więc no trzeba wiedzieć przede wszystkim co się robi i jednak. Nie traktować tego kodu, który dostaniemy z Copilot jako taki stuprocentowo poprawny kod, którego możemy użyć już produkcyjnie.  Mając odpowiednią wiedzę i potrafiąc zweryfikować jakość rozwiązań, które dostarczane są przez sztuczną inteligencję, myślę, że spokojnie jesteśmy w stanie przyspieszyć swoją pracę o jakieś 30-40%, a czasem nawet i więcej. Oczywiście patrzę tutaj to tak czysto subiektywnie i szacunkowo w żaden sposób nie mierzyłem tych przyrostów. Natomiast patrząc w skali tygodnia, wyglądają moje zadania i ile Copilot mi nich pomaga, myślę, że te 30 % czasu mniej to jest taka bezpieczna estymacja, jeśli chodzi o przyrost szybkości tworzenia tego kodu. I co więcej, tak jak mówiłem, najbardziej pomaga właśnie w takich prostych zadaniach, które są zwyczajnie nudne, więc też troszkę przyjemniej się robi, bo to takie rzeczy, które trzeba zrobić, bo trzeba, ale nie są jakiejś szczególnie pasjonujące, typu rejestrowanie jakiegoś typu posta, czy jakiejś taksonomii, typu rzeczy, które są po prostu powtarzalne i wykorzystywane w takiej samej formie niemalże w różnych projektach. No to do tego sprawdza się świetnie, bo po prostu zdejmuje nam z głowy takie zadanie, gdzie trzeba odsiedzieć i odklepać ileś tam linii tego kodu. 

Oczywiście możesz mieć zupełnie inne zdanie na temat AI i programowania. Chętnie je poznam, więc podziel się nim gdzieś tam w komentarzu czy w social mediach. To też nie jest jedyne rozwiązanie tego typu, bo na rynku są inne rozwiązania oparte o AI, które mają wspierać programistów. Natomiast ja zdecydowałem się sprawdzić to rozwiązanie bardzo. Już ponad rok, z niego korzystam i raczej się to prędko nie zmieni, żebym albo zamienił go na coś innego, albo z niego zrezygnował zupełnie. 

Jeśli jeszcze nie miałeś okazji spróbować tego typu narzędzi to naprawdę zachęcam bo jest to fajna opcja i tak jak mówiłem wcześniej można z niej skorzystać zupełnie bezkosztowo przez 30 dni no a potem możesz podjąć decyzję czy warto wydać te 10 dolarów miesięcznie na tego typu narzędzie żeby się wspierać w takiej codziennej pracy. 

Na koniec chciałem Cię zaprosić jeszcze do mojego newslettera, ponieważ zacząłem go znowu regularnie wysyłać. Jeśli się zapiszesz, to mniej więcej dwa razy w miesiącu otrzymasz ode mnie wiadomość z tym co się dzieje w podcaście, jakie są nowe odcinki oraz z takimi newsami ze świata WordPressowego, więc zachęcam do zapisania się na maciekuchnik.pl, łamany przez newsletter. No i będziemy wtedy w stałym kontakcie będę Cię informował o nowych odcinkach. Dzięki za wysłuchanie i słyszymy się w kolejnym odcinku. Cześć!

0 0 votes
Article Rating
Subscribe
Powiadom o
guest
0 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x