GitHub Copilot- przegląd plusów i minusów w pracy programisty

GitHub Copilot- przegląd plusów i minusów w pracy programisty
Andrzej Chybicki: projekty związane z wykorzystaniem sztucznej inteligencji to znacząca część naszych projektów
GitHub Copilot- przegląd plusów i minusów w pracy programisty

Github zakłada że w nadchodzących latach 80% kodu na świecie będzie generowane przez AI [1]. Choć ciężko znaleźć dokładne informacje o liczbie sprzedanych licencji Github Copilot, to niewątpliwie obserwujemy zmianę sposobu w jaki organizacje oraz sami programiści tworzą nowe rozwiązania IT. W Inero realizujemy jednocześnie wiele projektów, dlatego chętnie testujemy najnowsze rozwiązania, które mają z założenia zoptymalizować pracę zespołu, dostarczać rozwiązania szybciej i lepiej.

W tym artykule opowiemy o naszych doświadczeniach z GitHub Copilot.

 

Czym jest GitHub Copilot?

GitHub Copilot to narzędzie przeznaczone dla programistów, wykorzystujące zaawansowany model językowy (tzw. LLM – Large Language Mode) przystosowany do analizy i kodów źródłowych. Poprzez zestaw odpowiednich wtyczek i narzędzi pozwala on zoptymalizować proces tworzenia oprogramowania, dostarczając programistom automatyczne podpowiedzi i uzupełnienia kodu, sugestie, analizę składni czy generując dokumentację. Rozwijane przez firmę Microsoft, narzędzie jest oparte na sztucznej inteligencji i zostało stworzone w celu zwiększenia produktywności programistów i poprawienia jakości kodu źródłowego.

 

Dalej niż bliżej, powoli do celu

Zastosowanie GitHub Copilot w większości przypadków pozwala nam przyspieszyć prace programistyczne, co ważne, związane nie tylko z tworzeniem samego kodu ale także przy bardziej żmudnych zadaniach. Przykładowo, od kiedy w zespole testujemy GitHub Copilot, znacznie rzadziej odwiedzamy StackOverflow. Copilot przyspiesza pracę, w sytuacji gdy nasi programiści muszą wygenerować relatywnie prosty i powtarzalny kod, który łatwo ocenić jako poprawny na pierwszy rzut oka.

    • Copilot bardzo przyspiesza pracę z wyrażeniami regularnymi i z pewnością optymalizuje czas pisania powtarzalnego kodu.
    • Copilot jest również skutecznym narzędziem do generowania dokumentacji kodu, w zasadzie potrafi prawie w zupełności zrobić to za nas. Oczywiście zawsze trzeba wygenerowaną treść zweryfikować, natomiast nie spotkaliśmy się ze znaczącymi błędami. Zazwyczaj uzupełniamy wynik o więcej szczegółów, jednak w wielu przypadkach sam Copilot wystarcza. Dokumentacja np. jednego bloku kodu, gdy jest dość rozbudowany, potrafi zająć w przybliżeniu nawet minutę. Z Copilotem można to zrobić w kilka, kilkanaście sekund, w zależności od tego czy musimy daną treść uszczegółowić.
    • Z perspektywy doświadczonych programistów wykorzystanie tego rozwiązania, można określić jako rozbudowany Intellisense działający w trybie Line-By-Line. Programista rozpoczynając tworzenie bloku kodu, w dalszej części korzysta z podpowiedzi Copilota. W takim wypadku weryfikacja jest w zasadzie natychmiastowa i jeżeli coś się nie zgadza, od razu poprawiamy to samodzielnie. Gdy Copilot podpowiada większy blok kodu, np. 10-15 linijek, to przeanalizowanie, czy ten kod robi dokładnie to co powinien, może zająć jednak więcej czasu, niż napisanie go samodzielnie. Szczególnie, że spośród tych 15 linijek, 14 może być dobrych, a jedna błędna i trzeba to wyłapać.
    • Z perspektywy mniej doświadczonego programisty odbiór tego rozwiązania może być inny. Napisanie kodu zajmuje mu więcej czasu, niż doświadczonemu developerowi, dlatego Copilot wydaje się pomocny. W czasie analizy kodu od Copilota użytkownik może jednak w ogóle nie zauważyć, że coś nie gra – problem zostanie wykryty dopiero przy code review robionym przez osobę z większym doświadczeniem.
    • Po pewnym czasie przyzwyczajamy się do tego, że Copilot wysyła nam podpowiedzi, dlatego trzeba się nauczyć pracy z tym narzędziem. Na początku mogą one wybijać z rytmu normalnego pisania kodu linia po linii. Zamiast pisać dalej, zatrzymujemy się, żeby przeczytać proponowane podpowiedzi. Można jednak w konfiguracji plugina, wyłączyć podpowiadanie przez cały czas i zostawić tylko podpowiadanie na skrót klawiszowy – tutaj decyzja zależy od programisty, który sam może wybrać jaki stopień „suportu” mu najbardziej odpowiada.
    • Jeżeli pracujemy nad bardziej skomplikowaną funkcjonalnością np. z użyciem nowej biblioteki, to Copilot jest w stanie nas w jakiś sposób naprowadzić. Jego sugestie w takich przypadkach bywają się trafne i nawet jeśli nie są w pełni poprawne pozwalają szybciej zrozumieć sposób odwołań do bilbioteki, który w innym przypadku wymaga analizy dokumentacji.

 

Komentarz CEO Inero Software Andrzeja Chybickiego

 

Mierzenie efektywności wykorzystania Copilot z pespektywy zarządzającego jest trudne – nie mamy obiektywnych  wskaźników (liczbowych) mówiących nam czy i ewentualnie- jak bardzo inwestycja w licencję skróciła czas pracy nad powierzanymi nam projektami programistycznymi. To po pierwsze. Po drugie, część klientów wyraża obawy dotyczące bezpieczeństwa kodu, który jest analizowany przez AI, zwłaszcza w projektach z kategorii cybersecurity czy obejmujących przetwarzanie wrażliwych danych. Spotykamy się więc z sytuacjami w którym używanie copilota nie jest wskazane

 

Jakie zauważyliśmy plusy i minusy?

Analizując doświadczenia naszego zespołu można wskazać plusy i minusy korzystania z GitHub Copilot.

Do plusów możemy zaliczyć:

+ pomoc przy pisaniu powtarzalnego kodu

+  podpowiedzi, które pomagając w nadaniu kierunku pracy

+ przyspiesza pracę z prostym kodem

+ znacząco pomaga w generowaniu dokumentacji kodu

Znalezione minusy:

obawy związane z cyberbezpieczeństwem danych i prawami autorskimi do powstałych rozwiązań

konieczność czasochłonnej weryfikacji długiego kodu

trudność w zmierzeniu wymiernych korzyści z wykorzystania tego rozwiązania

Czy będziemy dalej korzystali z  GitHub Copilot w Inero? Na pewno tak.

Wykorzystanie GitHub Copilot, w codziennej pracy przynosi wiele korzyści. Nie można jednak tracić czujności i w pełni zdać się na jego podpowiedzi. Ważne, aby wciąż monitorować kod przygotowywany przy pomocy tego narzędzia. Rozwój technologii, nad którą pracuje Microsoft, na pewno w kolejnych miesiącach przyniesie wiele aktualizacji i udogodnień.

[1] https://github.blog/2023-02-14-github-copilot-for-business-is-now-available/