Case StudyProgramowaniePolecane tematy

Empik podsumowuje testy wykorzystania GitHub Copilot w pracy programistów

Z Bartoszem Chruślińskim, Team Leaderem w Dziale Rozwoju i Utrzymania Platformy Empik.com w Empiku rozmawiamy o testowaniu narzędzi wykorzystujących algorytmy AI do wsparcia pracy programistów; mierzalnych efektach testów GitHub Copilot; celach projektu związanych m.in. z refaktoringiem starego kodu; a także podejściu w przyszłości do rozwoju platformy Empik.com.

Empik podsumowuje testy wykorzystania GitHub Copilot w pracy programistów

Kiedy zaczęliście korzystać z Copilota? I dlaczego zdecydowaliście się na zastosowanie tego narzędzia w procesie wytwórczym oprogramowania?

W kwietniu, kiedy rozpoczęliśmy szerszą współpracę z Microsoft, zaczęliśmy korzystać z wielu nowych narzędzi i usług wspierających m.in. pracę programistów. Wówczas zdecydowaliśmy, że chcemy przetestować narzędzie wspomagające nasz proces wytwórczy.

Po pierwsze zależy nam na usprawnieniu pracy naszego developmentu. Zastanawialiśmy się nad różnymi narzędziami. Jednym z nich – o którym zaczęło być głośno już wcześniej, choć nie mieliśmy jeszcze okazji go testować – był właśnie GitHub Copilot. To nie jest coś, co zostało wymyślone teraz. Narzędzie to było dostępne już od dłuższego czasu. Wcześniej istniał bowiem – stworzony przez Open AI – Codex, o którego oparty jest Copilot.

Rozważamy jednak nie tylko Copilota, bo na rynku dostępnych jest kilka narzędzi wartych uwagi, takich jak Ghostwriter Replit Google’a. Aczkolwiek zaczęliśmy od testów tego pierwszego.

Empik podsumowuje testy wykorzystania GitHub Copilot w pracy programistów

Jak oceniacie pierwsze miesiące testowania Copilota?

Oddźwięk jest bardzo pozytywny. Deweloperzy potwierdzają, że Copilot wspiera ich w codziennej, rutynowej pracy, czyli szybkim pisaniu kodu, który nie wymaga „myślenia”. Dotyczy to powtarzalnych fragmentów kodu, które „dorzuca” się – na zasadzie Copy&Paste – zmieniając co najwyżej poszczególne parametry. Tego typu pracę wykonują znacznie szybciej, tym bardziej, że Copilot podpowiada im fragmenty do „wklejenia”. Jednym kliknięciem można stworzyć metody, a nawet całe klasy. To bardzo usprawnia pracę – podpowiada gotowe rozwiązania, uwzględniając kontekst.

Co to znaczy?

Kontekst to otwarte, inne pliki, w których zapisane są klasy danego programu. Copilot to „sczytuje” i analizuje już napisany kod źródłowy. Na podstawie tak stworzonego kontekstu sugeruje kolejny fragment kodu do dopisania. To ważne, bo programista nie działa wówczas w oderwaniu od programu, który jest tworzony.

Co znajduje się we wspomnianych, otwartych plikach?

To inne pliki tego samego programu. W Empiku, choć zapewne nie tylko u nas, nad jednym programem pracuje cały zespół programistów. Każdy z nich ma własny styl programowania, stosuje inną składnię i nazewnictwo. Oczywiście, zanim aplikacja trafi na produkcję, wszystko to jest uzgadniane na etapie Code Review pomiędzy poszczególnymi programistami.

Jednak dzięki temu, że Copilot widzi kontekst, oparty o gotowy już kod źródłowy, od razu sugeruje styl i nazewnictwo, w którym aplikacja powinna zostać napisana. Dzięki temu później proces Code Review trwa dużo krócej. Nie trzeba poprawiać składni, stylu, nazewnictwa itd., bo ten kontekst został już wcześniej „złapany”, jeszcze w trakcie pisania kodu. Pod tym względem to bardzo pomocne narzędzie.

W jakich jeszcze zastosowaniach stosujecie Copilota?

To, gdzie nasi programiści naprawdę chcieliby zastosować możliwości Copilota, to refaktoring kodu. Obecny kod Empik.com ma już kilka, kilkanaście lat, a może nie wszyscy wiedzą, że. sama platforma obchodzi w tym roku 25-lecie. Początkowo do jej rozwoju stosowaliśmy język programowania PHP, którego dziś już nie używamy. Niemniej znalazłyby się na pewno takie fragmenty kodu, które osiągnęły pełnoletniość.

Kod ten jest też napisany w nieużywanym już przez nas stylu – w starej wersji Java. Zmieniła się nawet stosowana przez nas składnia. Kiedyś przyjmowało się zmienne, które nic nie mówiły. Nadawano im np. nazwy losowych liter alfabetu. Teraz, gdy stosujemy rady Wujka Boba (Roberta C. Martina, autora książki „Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów” – przyp. red.), piszemy go tak, aby był zrozumiały dla czytającego nawet bez komentarzy.

Kiedyś bowiem każda zmienna, np. „xyz”, była opatrzona informacją, w której programista opisywał, czego de facto ona dotyczy. Dziś nazywa się je tak, aby od razu było wiadomo, za co jest odpowiedzialna. Zamiast losowej nazwy stosuje się kilka wyrazów.

Wracając do tematu, mamy w Empik.com sporo starego kodu. Nasi programiści testują więc to, w jaki sposób Copilot poradzi sobie z jego refaktoringiem – należy ułożyć na nowo składnię, zmienić kod tak, aby pasował do tego, który dziś stosujemy, Chcemy po prostu ten kod „posprzątać”, a Copilot może nam w tym pomóc, m.in. sugerując od razu, jak nowy kod powinien wyglądać.

Łatwo jest pisać nowy kod, ale znacznie trudniej pracować na starym, zastałym kodzie. W szczególności młodzi programiści wolą narzędzia najnowszej generacji. Jednak mamy też w zespołach doświadczonych ekspertów, którzy czasami podejmują się pracy w starym kodzie i nie boją się w nim „ubrudzić rąk”. To również dla nich rodzaj nauki i dobrze obrazuje to postęp, jaki nastąpił w inżynierii oprogramowania.

Czy macie już pierwsze wyniki testów wsparcia pracy programistów przez Copilota?

Wciąż testujemy czy to podejście działa, czy nie.

Zastawialiście się też nad narzędziem Google Ghostwriter Replit.

Chcielibyśmy porównać funkcjonalności obu rozwiązań. Z punktu widzenia IT i programistów, Google powinien być technologicznie lepszy niż Microsoft, m.in. ze względu na ich dużo większe doświadczenie w tym obszarze, podczas gdy Microsoft jest lepszy w usługach i gotowych systemach biznesowych. Jednak Microsoft niejako „kupił” rynek, inwestując w ChatGPT stworzony przez OpenAI. Nie chcemy też zamykać się na inne rozwiązania, aby nie przegapić jakiejś przełomowej technologii, np. właśnie od Google.

Zaczęliśmy jednak testy od Copilota, bo ma wtyczkę do wykorzystywanego przez nas rozwiązania IntelliJ IDEA. Podobne jest to do Pair Programming, czyli jednoczesnej pracy dwóch programistów nad jednym kodem. Tylko, że drugim programistą nie jest człowiek, lecz algorytm AI.

Czy Copilot może wspierać tylko pracę programistów?

Generalnie jest to rozwiązanie dla wszystkich, którzy piszą kod. A piszą go także testerzy automatyzujący oraz administratorzy, którzy nadzorują infrastrukturę jako kod. Skrypty, konfiguracje opisujące środowiska IT, to przecież też kod i w tego typu zastosowaniach Copilot jest również bardzo dobry. Wystarczy poprosić go, aby napisał konfigurację np. w jednym języku bashowym, a następnie powiedzieć, aby zrobił to samo w innym języku. I on to zrobi i to naprawdę dobrze, bo widzimy już, że tłumaczenie z jednego języka programowania na drugi świetnie mu wychodzi.

Ja poprosiłem ChatGPT, aby napisał kawałek kodu pozwalający zintegrować się z jego usługą znajdującą się w środowisku Microsoft Azure. Wykorzystał do tego język Python. Choć kolega powiedział mi, że mógł zrobić to lepiej…

Oczywiście, że mógł. Zauważmy jednak, że to dopiero początki wykorzystania tego narzędzia. Minęło może pół roku od udostępnienia ChatGPT 3.5, a już tyle potrafi. Pytanie, co będzie potrafił za parę lat? Technologia ta zapewnia niesamowity postęp i mamy poczucie, że jeśli nie będziemy używać Copilota czy Ghostwriter Replit, to zwyczajnie zostaniemy z tyłu.

Ktoś mądry powiedział, że „AI nie zastąpi programistów, lecz programiści, którzy używają algorytmów AI, zastąpią tych, którzy ich nie używają”. Ale dotyczy to też innych zawodów.

Jeden z moich rozmówców powiedział, że programowanie to dziś de facto zaledwie 40% czasu pracy programistów. Reszta to komunikacja.

To prawda, praca programistów opiera się obecnie nie tylko na czystym kodowaniu, ale też na ustaleniu wymagań. Pracujemy zwinnie, w sprintach, co wymaga ciągłej komunikacji i bliskiej współpracy z biznesem. Tak naprawdę w każdym momencie powinniśmy być gotowi na zmianę kierunku czy wymagań.

Kiedyś pracowało się w metodyce waterfall. Wówczas, w początkowej fazie mieliśmy bardzo dużo czasu na zebranie wymagań i analizę dokumentacji. Potem mieliśmy 2 lata na pisanie kodu i wdrażanie na produkcję Ale wtedy często okazywało się, że dostarczone rozwiązanie jest już niepotrzebne, bo rynek się zmienił.

Wymusiło to na pewno zmianę podejścia na bardziej zwinne. Dziś programiści to nie „nerdzi”, którzy siedzą, piszą i nie odzywają się do nikogo. Są to ludzie, którzy chcą i potrafią rozmawiać z biznesem, rozumieją go i wnoszą w tę relację swój wartościowy wkład.

Jak często dostarczacie nową funkcjonalność?

Codziennie, albo i kilka razy dziennie. Podzieliliśmy naszą platformę Empik.com na domeny. Każdą z domen opiekuje się jeden lub więcej zespołów i każdy z nich ma Product Ownera. Dodatkowo korzystamy dziś z architektury rozproszonej, mikroserwisowej. Wdrożenia na produkcję dzieją się więc non-stop, jak tylko zostaną zaakceptowane przez Product Ownera.

Czy jest coś czego Copilot nie potrafi? Ma jakieś ograniczenia jeśli chodzi o języki programowania?

Na ten moment widzimy, że ciężko korzysta się z niego na mobile. Właściwie nie robimy tam testu Copilota, bo nie mamy jak go tam wpiąć. A to ważny kanał dla naszych klientów i chcemy tam dostarczać funkcjonalności jako pierwsze.

Natknęliście się na jakiś problem na początkach korzystania z Copilota?

Niektórzy mówią – choć można się do tego przyzwyczaić – że Copilot podpowiada dużo, wręcz za dużo. Proponowanych wariantów jest kilka i potrzeba czasu na wybranie właściwego.

Czy Copilot nie uczy się w trakcie pracy, skoro potrafi działać w oparciu o kontekst? Z czasem nie podpowiada najczęściej wybieranego przez programistę wariantu?

Dobre pytanie. Musimy sprawdzić, czy faktycznie – jeśli ktoś najczęściej wybiera wariant A – to w przyszłości Copilot będzie podpowiadał właśnie ten.

Jaka była pierwsza, pozytywna rzecz, na którą uwagę zwrócili użytkownicy?

Przede wszystkim to, że programiści nie muszą już szukać pomocy w innych serwisach takich, jak np. Stack Overflow. Wcześniej programiści poszukiwali tam odpowiedzi na swoje pytania, a teraz Copilot im je sam podpowiada. Dzięki temu, jak wpadną w tryb programowania, nie muszą się już niepotrzebnie rozpraszać.

Wyzwaniem jest zaś promptowanie w Copilocie. Jest to pewien etap, który trzeba przejść na początku. Im lepsze promptowanie – pisanie językiem, który jest najbardziej zrozumiały dla tego narzędzia – tym lepsza odpowiedź. Coraz częściej na rynku pojawiają się oferty pracy dla Prompt Engineer’a, zapewne głównie pod kątem ChatGPT, ale Copilot też używa tej funkcjonalności. Trzeba umieć zadać pytanie, tak, aby Copilot jak najlepiej je zinterpretował i jak najbardziej szczegółowo odpowiedział.

Prompt inżynier to niewątpliwie przyszłościowy zawód. To też ciekawa, alternatywna ścieżka rozwoju dla programistów, testerów automatyzujących czy manualnych. Jest to naturalny, dalszy krok w pisaniu testów czy samym testowaniu. Trzeba tak umieć napisać pytanie, aby dostać dobrą odpowiedź. Ta ścieżka kariery pasuje więc też do roli analityków.

Czy w Empik Group cały Twój zespół korzysta z Copilota?

Nowe narzędzie testuje mniej niż połowa z ok. 100 osób w zespole IT. Poza programistami korzystają z niego testerzy, administratorzy, bazodanowcy, specjaliści DevOpsUX. Copilot dobrze radzi sobie też z językiem SQL. Ich efekty pracy porównujemy z tymi, którzy biorą udziału w testach. Jak już zdecydujemy się na jego wdrożenie, to dostęp do Copilota otrzymają wszyscy.

Empik podsumowuje testy wykorzystania GitHub Copilot w pracy programistów

Tagi

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *