Programowanie w erze sztucznej inteligencji okiem doświadczonego programisty

geek.justjoin.it 8 miesięcy temu

Jen-Hsun Huang, prezes firmy Nvidia sugeruje, iż młode pokolenie nie powinno już uczyć się kodowania. Według jego prognoz zawód programisty niedługo może zostać w pełni zastąpiony przez sztuczną inteligencję. Choć trudno jest jednoznacznie przewidzieć, czy te przypuszczenia się sprawdzą, nie ulega wątpliwości, iż rozwój AI znacząco zmienił sposób tworzenia kodu.

Jak sztuczna inteligencja odmienia tworzenie oprogramowania?

Rewolucja AI znacząco wpłynęła na różne aspekty programowania. Jednak można wyróżnić kilka kluczowych obszarów, gdzie zmiany są najbardziej widoczne:

  1. Generowanie pomysłów

Na przykład dla burzy mózgów oferując programistom bogaty zbiór pomysłów, które mogą inspirować i sprecyzować ich koncepcje. Przykładowo, analityk danych posiada duży zbiór danych, na bazie którego chce wytrenować model ML. Może poprosić asystenta AI o wypisanie różnych sposobów na przetworzenie danych, z których wybierze najbardziej odpowiadający. Jest to przydatne zwłaszcza dla początkujących programistów, którzy nie wyrobili sobie intuicji, które rozwiązania są najlepsze i jakie są ich wady i zalety. Warto zauważyć, iż bot może mieć problem w dobraniu najlepszej techniki spośród zaprezentowanych, co daje pole do popisu doświadczonemu programiście.

  1. Asystent nauki

Wielu z nas pamięta długie godziny spędzone na studiowaniu podręczników lub wspólne programowanie na uniwersytecie. Niektórzy wspominają też wsparcie ze strony doświadczonych developerów (cenniejsze niż złoto z racji ich ograniczonego czasu). Dzisiaj AI oferuje osobistego asystenta, do którego można się zwrócić z każdym problemem.

Należy jednak zachować ostrożność i brać pod uwagę możliwe błędy, szczególnie w przypadku skomplikowanych i nietypowych problemów programistycznych.

  1. Półautomatyczne pisanie kodu

Rynkowe debiuty narzędzi takich jak Copilot czy Codeium zrewolucjonizowały podejście do generowania kodu. Opisując problem, dane wejściowe i wyjściowe, można uzyskać gotowy program. Mimo to, generowane rozwiązania należy traktować z rozwagą, jako iż czasem mogą one przypominać pracę ambitnego, ale niedoświadczonego zawodowo juniora – logicznie brzmiące, ale nie spełniające w pełni zadanych wymagań.

  1. Analiza kodu

Do tej pory nie powstało uniwersalne narzędzie do wyszukiwania błędów, ale AI ma potencjał, by zmienić sposób, w jaki podchodzimy do recenzji kodu. Systemy zdolne do analizowania kodu, wykrywania błędów i sugerowania optymalizacji mogą znacznie poprawić jakość i efektywność naszej pracy programistycznej, zmniejszając jednocześnie obciążenie związane z manualnym przeglądem kodu.

Konsekwencje wprowadzenia AI w programowaniu

Można śmiało powiedzieć, iż wykorzystanie AI w programowaniu zwiększa efektywność pracy developerów. Pozwala im na uniknięcie monotonii w pisaniu powtarzalnego kodu i inspirować do nowych rozwiązań. Jednakże trzeba zauważyć, iż niesie to za sobą również pewne konsekwencje.

  1. Podniesienie poprzeczki

Widać tendencję do zwiększania wymagań w branży, gdzie programiści, aby odnieść sukces, muszą dostarczać jeszcze więcej wartości.

  1. Poszerzenie zakresu obowiązków

Zwiększona efektywność pozwala programistom zajmować się szerszym spektrum zadań w projekcie, od ML-ops, aż po zarządzanie chmurą.

  1. Nacisk na uniwersalność

Coraz większe znaczenie ma zdolność do zarządzania projektami, wybierania kierunków i efektywnego debugowania. To przekłada się na większą odpowiedzialność programisty.

Narzędzie zastępujące w pełni programistę?

W marcu 2024 zostało zaprezentowane narzędzie Devin. Autorzy chwalą się wysokimi wskaźnikami SWE-bench na poziomie 13.9%, tj. umiejętnością rozwiązywania problemów z GitHuba. Wywołało to lawinę komentarzy podzieloną na dwa obozy. Pierwszy z nich uważa, iż jest to początek końca pracy programistów. Drugi zaś mówi, iż jest to naturalny rozwój i zawód programisty nie wyjdzie z mody. Ciężko powiedzieć, który scenariusz się ziści. Jednak jest prawdą, iż praca w IT przejdzie duże zmiany, gdzie kto nie nadąży, najpewniej odpadnie z gry.

Co dalej?

Słusznie pojawia się pytanie: do czego to doprowadzi? Można zauważyć kilka podejść.
Pierwszy z nich zakłada, iż programista to przestarzały zawód, który niedługo zostanie wyparty przez sztuczną inteligencję. Jako argument przywołują prędkość postępu kontekstu sieci neuronowych, która doprowadzi w przyszłości do zastąpienia choćby najlepszych programistów. W rzeczy samej, jeżeli uda się w kontekście modelu zmieścić cały projekt i jego wymagania to potencjalnie otwiera to możliwość generowania całego kodu przez AI.

Inną perspektywą jest idea, iż każda rewolucja przynosi czas perturbacji, ale programiści zostaną z nami. Będą za to wykonywać więcej, dokładniej i w krótszym czasie.

Niewykluczone jest też połączenie tych dwóch podejść, gdzie programistów będzie mniej, a pozostaną tylko Ci najlepsi, potrafiący wykorzystać magię AI.

Po drugiej stronie barykady są sceptycy. Pokazują jak wiele stanowisk, maksymalnie odtwórczych, jest wciąż utrzymywanych, pomimo iż mogły zostać zautomatyzowane jeszcze przed erą AI.

Idź do oryginalnego materiału