Flaga - Unia Europejska
Wróć
08.02.2024

Naj w AI #10 GitHub Copilot, zbawianie programistów czy nadchodzące problemy?

AI

Naj w AI #10 GitHub Copilot, zbawianie programistów czy nadchodzące problemy?

AUTOR: Maciej Rubczyński – Head of Development | Big Data & AI Solutions Architect w TIDK

GitHub Copilot, asystent programowania oparty o LLM, jest prawdopodobnie najlepszym dotychczas wdrożeniem Generatywnej Sztucznej Inteligencji w organizacjach. Jest na tyle szeroko dostępnym rozwiązaniem, że wg raportu Wakefield Research z czerwca zeszłego roku aż 92% programistów pracujących w dużych firmach w Stanach Zjednoczonych z niego korzystało, a 70% zauważało znaczne korzyści z takiego typu asystenta. GitHub Copilot jest świetnie opakowanym rozwiązaniem, pozwalającym na wygodne korzystanie z niego w ulubionych środowiskach programistycznych, automatycznie dostając podpowiedzi co do dalszego kodu, interfejs więc z pewnością wpłynął na tak szeroką popularność.

GitHub podając dane dotyczące wykorzystania Copilota twierdzi, że asystent pozwala na przyśpieszenie programowania o 55%, od momentu jego ogłoszenia powstaje 46% więcej kodu, a programiści w ankietach wskazują zadowolenia z programowania na poziomie wyższym o 75% niż wcześniej.  Liczby imponujące, ale czy wszystkie z nich są tak naprawdę pozytywne?

Wątpliwości może budzić wzrost linii kodu o 46%. Każda organizacja, która zaimplementowała rozwiązanie a następnie je utrzymuje, doskonale zdaje sobie sprawę, że w przypadku utrzymania rozwiązań nadmiar kodu jest problemem. Kod musi być czytelny, ale nie może być nadmiernie skomplikowany i sztucznie rozdmuchany objętościowo. Jednocześnie powinien być generyczny, nie proponując dwóch różnych podejść do rozwiązania tego samego problemu. W tych aspektach GitHub Copilot ma jeszcze spore ograniczenia, wynikające również z interfejsu. Asystent podpowiada kolejne fragmenty kodu, ale nigdy nie podpowie usunięcia lub modyfikacji istniejących już linii kodu. Jednocześnie, dla podobnych problemów za każdym razem może zaproponować zupełnie inne podejścia. Jest to naturalne, w końcu Copilot jest oparty o niedeterministyczne LLM, jednak znacznie pogarsza reużywalność kodu. Powyższe problemy ciekawie podsumował Adam Tornhill, autor książek „Your Code as a Crime Scene”. Stwierdził on, że głównym wyzwaniem związanym z programowaniem z asystentami AI jest fakt, że tak łatwo teraz tworzyć ogromne wolumeny kodu, który nigdy nie powinien zostać napisany.

Inny znany autor, Robert Marting, autor „Clean Code: A Handbook of Agile Software Craftsmanship” ocenił kiedyś, że czytanie i zrozumienie kodu zajmuje 10 razy więcej czasu niż napisanie go. Jego twierdzenie dotyczyło czasów przed asystentami AI. W przypadku pisania większej liczby kodu i to 55% szybciej, z wykorzystaniem Copilota, czytanie i rozumienie kodu może okazać się jeszcze trudniejszym zadaniem.

Oczywistym jest, że potrzebę pisania czytelnego i łatwego w utrzymaniu kodu lepiej rozumieją najbardziej doświadczeni programiści. Dane dostarczane przez GitHub sugerują, że właśnie oni najrzadziej korzystają z Copilota. Okazuje się więc, że dzięki GitHub Copilot powstają w szybki sposób duże wolumeny kodu, pisane głównie przez mniej doświadczonych programistów. I o ile w krótkiej perspektywie takie podejście się sprawdza, utrzymanie tak napisanego kodu może stanowić w najbliższym czasie ogromne wyzwanie.

W celu sprawdzenia jakości powstającego z wykorzystaniem asystentów AI kodu, GitClear wykonał analizę 150mln linijek kodu napisanych w 2023 roku i przedstawił wyniki w swoim raporcie „Coding on Copilot”. Jednym z ocenianych przez nich parametrów był „churn”, określający jaki procent kodu został znacznie wycofany, zmieniony lub zaktualizowany w ciągu 2 tygodni od publikacji.  W latach 2020-2022 ten wskaźnik utrzymywał się na poziomie 3-4%. W 2023 roku 5,5% kodu zostało znacznie zmodyfikowanych niemal od razu po opublikowaniu, a prognozy na 2024 rok sugerują osiągnięcie aż 7,1%. Liczby te sugerują, że coraz więcej propozycji kodu musi zostać bardzo szybko zmienionych, gdyż nie działa zgodnie z założeniami. Jednocześnie wzrost churn mocno koreluje z pojawieniem się asystentów AI.

Autorzy raportu sugerują, że programiści w dużych firmach sami zaczęli już zauważać te problemy. W jednej z ankiet przeprowadzonych przez Wakefiled Research byli zapytani, na jakiej podstawie powinna być oceniana ich praca. Mieli odpowiedzieć w dwóch perspektywach: w przypadku korzystania z asystentów AI jak i w podejściu bez Copiltów. Dla pracy bez wsparcia AI wskazali jako główną metrykę komunikację i współpracę, a jakość kodu była na drugim miejscu. W przypadku pracy z użyciem asystentów AI jakość kodu okazała się dla ankietowanych główną metryką.

Docelowo oczywiście wykorzystanie asystentów kodu wydaje się być wciąż drogą którą należy podążać. GitClear sugeruje, by zaproponować alternatywny interfejs, w którym asystent AI mógłby sugerować modyfikacje i usunięcie fragmentów istniejącego kodu.  Cały czas rozwijają się także same modele językowe, co z pewnością pozytywnie wpłynie na jakość kodu generowanego przez Copilot oraz na rozumienie szerszego kontekstu rozwiązania. Jednak aktualnie pisane z wsparciem asystentów AI linie kodu mogą jeszcze nam sprawić sporo problemów przy ich utrzymaniu.

Źródło:

Partnerstwa

tidk logo

Bałtycka 6
61-013 Poznań