Czy AI zagraża programistom?
Mimo iż pytania o zagrożenia związane z rozwojem AI nieco się nam już przejadły, a narzędzia AI używane w codziennej pracy pozostawiają jeszcze wiele do życzenia, nowe rozwiązania i przełomy każą zadawać te pytania wciąż na nowo. Rozwój sztucznej inteligencji w dziedzinie biznesu oraz programowania wywołuje naprawdę dużo emocji i debat.
Patrząc przez pryzmat programowania, pojawia się zasadnicze pytanie dotyczące przyszłości tego zawodu – czy AI naprawdę stanowi zagrożenie dla programistów, czy raczej przekształca się w największego ich sprzymierzeńca, za pomocą którego programiści sprawnie korzystający z AI będą w stanie gwałtownie i bezbłędnie tworzyć dowolne aplikacje? Aby odpowiedzieć na to pytanie, należy przyjrzeć się kilku kluczowym argumentom:
- AI nie zastąpi ludzi, ale ci, którzy potrafią efektywnie z niej korzystać, zastąpią tych, którzy nie chcą lub nie potrafią tego robić.
- Na obecnym etapie rozwoju AI nie jest w stanie przejąć odpowiedzialności za pracę doświadczonych programistów pracujących nad skomplikowanymi systemami.
- Automatyzacja czeka również prostsze zadania, które wcześniej wykonywali programiści na początku swojej kariery.
- AI może zautomatyzować niektóre aspekty pracy programisty, ale nie zastąpi go w pełni.
Przykładem może być wykorzystanie AI do automatyzacji rutynowych zadań, co pozwala programistom skupić się na bardziej złożonych problemach.
Jest jednak w stanie zautomatyzować niektóre zadania i znacząco zwiększyć efektywność tych specjalistów. Przykładem może być automatyczne generowanie kodu dla stosunkowo prostych funkcji.
Choć to akurat nie powinno wywoływać wśród nich niepokoju. Przykładem może być automatyczne sprawdzanie kodu pod kątem zastosowanych wzorców programowania albo automatyzacja tworzenia podstawowych testów.
Programiści będą przez cały czas potrzebni do podejmowania kluczowych decyzji, rozwiązywania skomplikowanych problemów i tworzenia systemu dodającego wartość. Przykładem może być projektowanie architektury systemów informatycznych, gdzie wymagana jest głęboka analiza i zrozumienie biznesu.
Devin
Przejdźmy jednak do omówienia Devina – innowacyjnego narzędzia, które, chociaż jest na razie tylko zapowiedzią opublikowaną przez Cognition (https://www.cognition-labs.com), wskazuje przyszłość rozwoju sztucznej inteligencji w dziedzinie programowania.
Devin, pierwszy na świecie w pełni autonomiczny inżynier systemu AI, stanowi odpowiedź na rosnące zapotrzebowanie na automatyzację w branży programistycznej. Jego zdolność do nauki obsługi nowych technologii, samodzielnego znajdowania i naprawiania błędów w kodzie, a także trenowania i dostosowywania własnych modeli AI, czyni go nieocenionym narzędziem dla programistów. najważniejsze cechy Devina to:
- zdolność do samodzielnego planowania i wykonania złożonych zadań;
- autonomia w znajdowaniu i naprawianiu błędów w kodzie;
- zdolność do samodzielnej nauki obsługi nowych technologii.
Cognition opublikowało zestawienie możliwości Devina z wynikami znanych modeli językowych wspomagających programowanie. Dzięki umiejętności przeprowadzania rozumowania i wnioskowania poradził sobie z zadaniami programistycznymi o kilka do kilkunastu procent lepiej niż najlepsze dostępne dziś modele, takie jak GPT-4 od OpenAI czy Claude 2 stworzony przez Anthropic.
Microsoft AutoDev
Kolejnym krokiem w automatyzacji procesów programistycznych jest AutoDev – w pełni zautomatyzowane, oparte na AI środowisko do rozwoju oprogramowania. Jego najważniejsze założenia to zwiększanie autonomii, efektywności i bezpieczeństwa systemów AI. A co najważniejsze, w przeciwieństwie do Devina, jest dostępny w modelu open-source, czyli dla wszystkich.
Źródło: ArXiv (https://arxiv.org/html/2403.08299v1)
Najważniejsze korzyści płynące z wykorzystania AutoDev to ogromna pomoc w automatyzacji powtarzalnych zadań. Przykładem może być automatyczne generowanie testów jednostkowych, co pozwala deweloperom skupić się na bardziej złożonych aspektach projektu.
Druga kwestia to możliwość tworzenia agentów sprawdzających nawzajem własne działanie. Redukuje to ilość błędów i pozwala, aby sztuczna inteligencja sama sprawdzała działanie tworzonych przez siebie rozwiązań. Co umożliwi programistom skupienie się na kreatywnym rozwiązywaniu problemów i innowacjach. Przykładem może być wykorzystanie AutoDev do automatycznego budowania i wdrażania aplikacji, a to daje programistom więcej czasu w projektowanie nowych funkcji.
Współpraca z AI czy automatyzacja zadań programistycznych?
Pair programming z AI to rozwiązanie, z którego korzysta dziś większość twórców oprogramowania, według ankiety przeprowadzonej przez GitHub – aż 92% amerykańskich programistów. Pozwala to na przyspieszenie pracy o 55% (https://github.blog/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience/) . Sztuczna inteligencja może uzupełniać powtarzalne linie kodu lub sugerować kolejne funkcje wynikające ze wzorców programowania, czy wcześniejszych przykładów.
W kontekście współpracy z AI oraz automatyzacji zadań programistycznych warto zastanowić się, jakie podejście jest korzystniejsze. I czy musimy wybierać, czy raczej mądrze je ze sobą połączyć. Z jednej strony, kooperacja z AI może znacząco usprawnić pracę programistów, na przykład poprzez automatyzację testowania kodu, co pozwala na szybsze i dokładniejsze wykrywanie potencjalnych błędów.
Z drugiej strony, pełna automatyzacja zadań programistycznych może prowadzić do powstawania trudnych do wychwycenia i potencjalnie groźnych błędów systemu oraz braku istotnych funkcjonalności, takich jak na przykład zabezpieczenia. Trzeba bowiem pamiętać, iż AI uczy się na dostępnych repozytoriach tworzonych przez programistów o różnym stopniu zaawansowania. Również zawierających błędy. Poza tym wiele rozwiązań programistycznych nie posiada wyczerpującej dokumentacji ani dużej ilości ogólnodostępnych przykładów, przez co sztuczna inteligencja w ograniczonym stopniu rozumie ich działanie. Może to prowadzić do halucynacji, czyli na przykład wymyślania przez AI fragmentów wykorzystywanych rozwiązań i ich API.
Źródło: ArXiv (https://arxiv.org/html/2403.08299v1)
Podsumowanie. Czy angielski stanie się głównym językiem programowania?
Rozwój AI i narzędzi takich jak Devin i AutoDev wykorzystujących agenty AI otwiera nowe możliwości dla branży programistycznej, jednocześnie stawiając przed nią nowe wyzwania. W kontekście rosnącej roli języka angielskiego jako nowego języka programowania – służącego do wydawania poleceń asystentom – dla wielu programistów stanie się on kolejnym językiem, który będą musieli opanować w jeszcze lepszym niż dotychczas stopniu. Aby w pełni wykorzystać potencjał AI, ważne jest, aby nie tylko skupiać się na technicznych aspektach programowania, ale także rozwijać umiejętności komunikacyjne, a także zrozumienie kontekstu biznesowego i kulturowego, które są najważniejsze przy tworzeniu systemu przeznaczonego… dla ludzi.