
Chat GPT a praca programisty
Poruszone tematy:
W ostatnim czasie w branży IT nastąpiła pewna rewolucja. Firma OpenAI, specjalizująca się w rozwiązaniach bazujących na sztucznej inteligencji, udostępniła Chat-GTP 3.5, a następnie jego kolejną, dopracowaną wersję 4.0. Technologia, która do tej pory była zajawką typowo środowiska technicznego i stosunkowo rzadko wchodziła w świadomość osób mniej technicznych, tym razem błyskawicznie rozeszła się po świecie i została ochrzczona nową rewolucją w informatyzacji, porównywaną często do samego powstania internetu. Osoby, które do tej pory nie interesowały się technologiami AI, na własnej skórze mogły sprawdzić ich potencjał.
Czym dokładnie jest Chat-GPT? To chatbot, z którym możemy rozmawiać i który bazuje na modelach przetwarzania języka naturalnego (NLP - Neuro-Linguistic Programming). Nie jest to pierwszy chatbot tego typu, a sam model NLP istnieje już od bardzo długiego czasu (jego korzenie sięgają lat 70. ubiegłego wieku). Tak więc nie jest to rewolucja samej technologii, bo ta towarzyszy nam od lat, niemniej, jest to rewolucja nowych możliwości i zmiany w świadomości nietechnicznych osób.
Chat-GPT, poza zwykłą rozmową z botem, może zostać wykorzystany jako uniwersalne API, które na podstawie odpowiednich podpowiedzi (tzw. promptów) może wygenerować interesujące nas dane. I tutaj zaczyna się owa rewolucja, bo do tej pory wszelkie chatboty nie wychodziły poza zakres typowych rozmów. Tym razem chatbot jest na tyle wszechstronny, że potrafi analizować wiele niepowiązanych ze sobą danych i na ich podstawie zwracać nam bardzo trafne odpowiedzi czy gotowe wyniki, które chcielibyśmy otrzymać. Po raz pierwszy chatbot jest na tyle wszechstronny, że wychodzi poza zakres zwykłej rozmowy i może zastąpić bardziej skomplikowane prace (wymagające większej abstrakcji). Pierwszy raz zaczęto głośno mówić, że AI może sam napisać kod źródłowy aplikacji i zastąpić w przyszłości programistów, których praca uchodzi za duży poziom umiejętności i abstrakcyjnego myślenia. Czy programiści faktycznie mają się czego obawiać? Przyjrzymy się temu bliżej.
Czym jest programowanie?
Programowanie to tworzenie instrukcji (za pomocą kodu źródłowego), które sterują pracą komputera (przetwarzanie obliczeń w procesorze, przechowywanie danych, obrabianie danych, sterowanie poszczególnymi komponentami komputera). W odległych czasach (lata 50. ubiegłego wieku), programowano w assemblerze - języku, który jest najniższą warstwą styku między kodem źródłowym a procesorem. Był to pierwszy "ludzki" język, którym można było sterować jednostką obliczeniową. Programowanie w nim było niezwykle trudne, a próg wejścia bardzo wysoki. Swoją drogą, w assemblerze programuje się i w dzisiejszych czasach, ale dotyczy to już wąskich specjalizacji i niewielkiej liczby specjalistów. Język programowania ewoluował i z biegiem czasu pojawiły się języki wyższego poziomu (proceduralne): Fortran, COBOL, następnie jeszcze wyższego jak Pascal, język C, przechodząc stopniowo na języki obiektowe jak C++, C#, PHP, Java, a następnie pojawiły się frameworki jak Spring (Java), Symfony (PHP). W międzyczasie powstało wiele bibliotek, które sprowadzały skomplikowane operacje i wiele trudnych linii kodu do pojedynczych klas oraz funkcji, które można było reużywać w dowolnym momencie i miejscu, podczas tworzenia kodu źródłowego. Ostatnim etapem tej ewolucji, który znamy i który ma miejsce w dzisiejszych czasach, to powstanie narzędzi low-code/no-code, które jeszcze bardziej ograniczyły pisanie skomplikowanych instrukcji, na poczet generatorów i systemów, gdzie kod można po prostu "wyklikać". Uogólniając, każdy kolejny poziom ewolucji języka, zwiększał jego poziom abstrakcji i sprawiał, że tworzenie kodu źródłowego stawało się znacznie szybsze i łatwiejsze. Próg wejścia w zawód programisty stawał się coraz niższy (dużo łatwiej było się nauczyć programować), a tworzenie oprogramowania coraz wydajniejsze (dużo szybciej się programowało).

Programowanie a Chat-GPT
Tutaj dochodzimy do punktu kulminacyjnego. Chat GPT, a w zasadzie narzędzia programistyczne, które powstaną na jego bazie (a będzie ich w niedalekiej perspektywie bardzo dużo), to kolejny etap ewolucji programowania. Programowanie stanie się znacząco łatwiejsze i szybsze niż kiedykolwiek. Nie trzeba będzie posiadać specjalistycznej wiedzy, aby pisać proste programy czy podwaliny skomplikowanych systemów. Rola programisty gruntownie zostanie przekształcona, bo, oprócz stosowania aktualnych poziomów abstrakcji, które zostały opisane wcześniej (np. używanie bibliotek, wspomaganie się low-code), konieczne będzie wspomaganie się również narzędziami AI, które większość kodu wygenerują za nas. Jeśli nie będziemy ich używać, nie utrzymamy wydajności działania i zaczniemy odstawać od innych programistów, którzy owych technologii będą używać w swojej codziennej pracy. Sytuację można porównać do programisty, który pisze skomplikowany system i nie używa gotowych bibliotek (np. do obróbki obrazu), a zamiast tego pisze je na nowo po swojemu - jeśli tutaj można było użyć biblioteki, sytuacja jest nieakceptowalna. Bardzo szybko przegrywa on w przedbiegach w czasie realizacji zadania, bo jego czas pracy jest nieakceptowalny biznesowo. Firma wytwarzająca oprogramowanie najzwyczajniej w świecie nie mogłaby konkurować z innymi firmami, mając na pokładzie takich programistów. Tak więc dzisiaj nikt nie wyobraża sobie programowania bez wspomagania się frameworkami, bibliotekami i najnowszymi technologiami. Branża IT rozwija się bardzo dynamicznie i jest to naturalna kolej rzeczy w tej branży - trzeba się nieustannie adaptować do nowych trendów i technologii.
Nowe wyzwanie dla programistów to szerokie stosowanie AI w swojej codziennej pracy. I mowa tutaj nie tylko o Chat-GPT, ale też o wszelkich innych narzędziach, jak np. bezpośrednio wbudowane w IDE Copilot, Kite czy CodeWhisperer - jeśli jeszcze nie słyszałeś o tych narzędziach, a jesteś programistą - koniecznie się z nimi zainteresuj. Wiele innych zawodów i branż zaczęło stosować AI w swojej codziennej pracy, programista nie powinien być tutaj wyjątkiem, a wręcz być pionierem w szerokim jego używaniu.
A w czym konkretnie może pomóc Chat-GPT? Poniżej zestawienie możliwości wykorzystania chatu (i innych narzędzi AI) przez programistę:
- generowanie podstawowego kodu (proste skrypty, algorytmy)
- modyfikacja kodu (dodanie odpowiednich zmian w kodzie, refaktoryzacja)
- pomoc w generowaniu kodu w języku, którego nie znamy za dobrze
- debugowanie kodu
- tworzenie testów
- generowanie danych
- obróbka danych, manipulacja danymi, konwersja danych
- generowanie widoków
- tworzenie integracji z usługami zewnętrznymi
- przewidywanie co chcemy napisać
- pisanie zapytań SQL
- tworzenie funkcji na podstawie promptów
- tworzenie regexów
- tłumaczenie danych w kodzie na inne języki
Patrząc na przykłady powyżej, możemy śmiało powiedzieć, że aktualnie jesteśmy w przełomowej chwili - na styku przejścia z programowania, gdzie faktycznie trzeba samemu pisać kod źródłowy, a momentem, gdzie kod będzie generował się w dużej mierze sam, na bazie podanych instrukcji, a programiści będą tylko sterować przebiegiem procesu generowania. Trzeba też mieć na uwadze, że tak naprawdę to dopiero bardzo uboga i raczkująca technologia i jej potencjał z kolejnymi miesiącami/latami będzie nieustannie rósł, a możliwości rozwoju są tutaj naprawdę ogromne.
Zasady stosowania AI w programowaniu
- Zastanów się, czy dany element taska/projektu może być wykonany za pomocą AI
- Wspomagaj się AI tam, gdzie tylko to możliwe i ma to sens (jakościowy i czasowy)
- Nie używaj AI na siłę - korzyść czasowa może być wtedy ujemna
- Chat-GPT traktuj jako uniwersalny konwerter/generator danych lub API, które zwróci "wszystko"
- Proste funkcje i algorytmy szybciej znajdziesz, pisząc prompta, niż przeszukując zbiory w internecie. Dodatkowo, od razu możesz zlecić dopracowanie otrzymanego kodu
- Naucz się sztuki poprawnego zadawania promptów (źle napisane prompty nie dadzą Ci oczekiwanego wyniku od strony AI)
- Chat-GPT traktuj jako kogoś, z kim wspólnie piszesz kod. Ale nigdy w pełni nie ufaj temu, co zwraca
- Chat-GPT może być traktowany jako swoisty nauczyciel, który poprowadzi Cię krok po kroku przez pisanie w języku/technologii, której nie znasz wystarczająco
- AI wykorzystuj nie tylko jako pomoc w pisaniu kodu źródłowego, ale też w pracy około programistycznej
- Trzeba mieć na uwadze, że dane, na bazie których Chat-GPT został wytrenowany, pochodzą z września 2021 i nie zwróci on aktualnych danych dla nowszych bibliotek
Stwórz z nami swoje rozwiązanie oparte o AI.
Kwestia bezpieczeństwa danych
Stosując możliwości Chat-GPT i innych narzędzi AI, gdzie wymagane jest przetwarzanie powierzonych danych, trzeba mieć na uwadze kwestię ich bezpieczeństwa. Póki co, tak naprawdę nie jest formalnie uregulowane, czy i gdzie wpisywane dane do Chat-GPT są składowane i w jaki sposób przerabiane. Nie bez powodu wiele instytucji, korporacji oraz nawet krajów (ostatni przykład Włoch) blokują Chat-GPT z uwagi na ryzyko bezmyślnego przekazywania danych, które nie powinny być udostępniane poza obszar działania danego podmiotu (np. z uwagi na dane wrażliwe). Tak więc, wspomagając się Chatem-GPT i innym narzędziem na nim bazującym, należy w pierwszej kolejności zwrócić uwagę, czy można przekazywane dane udostępnić zewnętrznej firmie. Jeśli nie, powinno się zaniechać w tym przypadku wspomagania AI lub odpowiednio dane zanonimizować, aby nie zawierały wrażliwych informacji i dopiero wtedy ich użyć.
Jaka przyszłość programisty?

Pomimo dużych możliwości Chat-GPT, oczywiste jest, że programiści nadal są i będą potrzebni. Chat-GPT to tylko zaawansowana biblioteka/API, które owszem, generuje dla nas kod źródłowy, ale jednocześnie nadal potrzebuje kogoś, kto narzuca mu instrukcje i prowadzi przez cały proces tworzenia tego kodu - można to trochę przyrównać do tzw. pair programmingu, podczas którego programiści nawzajem się kontrolują i wspólnie piszą kod. Chat-GPT to taki wirtualny programista, który przy współpracy z realnym programistą, bardzo efektywnie i szybciej tworzy kod (można to przyrównać do posiadania trzeciej ręki). Próg wejścia w zawód programisty kolejny raz się zmniejsza, a programowanie staje się bardziej zrozumiałe dla osób, dla których wcześniej było to trudne.
Druga strona medalu zmniejszenia progu wejścia w zawód programisty, to fakt, że zostanie specjalistą (seniorem) w programowaniu staje się znacznie trudniejsze. Już w tej chwili juniorzy mają bardzo ciężko wejść na rynek pracy, a będzie jeszcze ciężej. Chat-GPT może wykonywać prace juniorskie, a przy tym jest szybszy, tańszy i bardziej dokładny. Nie wymaga nauki, tylko kontroli - a junior wymaga obu tych czynności. Osoby chcące wejść w rynek IT będą miały podniesioną poprzeczkę, a sam rozwój z poziomu nowicjusza do specjalisty, będzie znacznie trudniejszy.
Już dzisiaj, żaden programista nie powinien negować roli AI w zastąpieniu większości jego pracy twórczej w przyszłości - to już się dzieje. Zasadniczą kwestią pozostaje to, jak długo to zajmie i w jakim zakresie programista będzie mógł wspomagać się AI w swojej codziennej pracy. W tej chwili każdy programista powinien traktować AI jak dodatkowy potencjał i dźwignię, która przyspiesza jego pracę i która, z biegiem czasu, będzie coraz silniejsza, a rola programisty będzie ewoluowała w kierunku zarządzania kodem, aniżeli jego pisania.
Warto, aby osoby negujące znaczenie AI i twierdzące, że tak naprawdę nie jest on czymś przełomowym w pracy programisty, przez chwilę się zastanowiły, jak bardzo ich prace zmieniło IDE, z zaawansowanymi podpowiedziami do kodu (autocomplete), nowe języki i technologie, czy nawet strona Stack Overflow, która jest skarbnicą wiedzy w rozwiązywaniu problemów. Czy wyobrażają sobie aktualnie pracę bez tych możliwości? AI to kolejna z tego typu nakładek/wspomagaczy, która za kilka lat będzie czymś koniecznym, aby wydajniej programować.
Programista za X lat:
- Większość kodu jest generyczna, tworzona automatycznie na bazie promptów przekazywanych przez programistę
- Niezbędna będzie wiedza, aby wytłumaczyć AI, co chcemy osiągnąć i kod w większości sam się będzie tworzył na bazie wytycznych
- Pozornie bardzo łatwo będzie wejść w branżę (programowanie stanie się bardzo łatwe), ale bardzo trudno będzie zostać seniorem i ekspertem w IT
- Eksperci będą scalać cały projekt na bazie stworzonych modułów przez AI i odpowiednio dopisywać ręcznie najtrudniejsze kwestie systemu
- Rola programisty będzie bardziej nadzorcza, aniżeli twórcza (poza bardzo skomplikowanymi aspektami systemu)
Podsumowując, jako programista nie bój się AI - traktuj go jako osobistego asystenta programowania. Rozwój technologii jest nieunikniony i to od Ciebie zależy, jak bardzo będziesz w stanie nad nią panować i wykorzystywać jej potencjał do ulepszania swojej pracy. Lepiej zacząć już dzisiaj, gdy jej zaawansowanie dopiero raczkuje, niż przegapić moment i ciężko zaadaptować się za kilka lat do nowych standardów wytwarzania oprogramowania.
Kilka słów o samym AI
Na sam koniec kilka słów na temat samego AI. Jak już zostało wspomniane na wstępie tego artykułu, AI towarzyszy nam od dziesiątek lat - sama idea sztucznej inteligencji powstała w latach 70. ubiegłego wieku. Gdy tylko pojawiły się pierwsze programy, zaistniała pokusa nadania im inteligencji. Nie jest to więc nowa koncepcja - podejście i rozwiązania są już znane specjalistom od dawna, a tym, czym różni się dzisiejsze AI, od tego sprzed nastu lat, to bardziej dopracowane algorytmy heurystyczne i większa moc obliczeniowa, która towarzyszy generowaniu modeli - do tej pory, brak odpowiedniej mocy obliczeniowej sprawiał, że rozwój AI był stosunkowo wolny. Warto mieć to na uwadze, czytając różne krzykliwe artykuły, jak rewolucyjną technologią jest Chat-GPT.
Firmy od wielu lat tworzyły swoje modele AI i stosowały je w swoich produktach, czy w optymalizowaniu procesów wewnętrznych. Giganci informatyczni, jak Google, czy Facebook większość swoich usług opierają o AI już od bardzo dawna. Można nawet założyć, że inżynierowie z wyżej wymienionych firm już od dawna wspierają się AI w codziennej pracy, bo modele jakie posiadają te firmy, są na dużo wyższym poziomie i dopasowane stricte do ich modelu biznesowego, dzięki czemu są znacznie dokładniejsze niż to, co oferuje Chat-GPT. To nie tak, że Chat-GPT w tej chwili przewraca świat do góry nogami - tak może stwierdzić tylko osoba, dla której kontakt z AI jest czymś nowym. Osoby, które z tą technologią zapoznały się wcześniej, nie widzą żadnej poważnej rewolucji, co najwyżej widzą uproszczenie i wykreowanie się nowego standardu, gdzie jedno narzędzie staje się powszechne i bardziej uniwersalne niż cokolwiek związane z AI do tej pory.
Gdyby Chat-GPT faktycznie był taką rewolucją, już dzisiaj wyszukiwarka Google powinna mieć poważne problemy, a programiści masowo tracić pracę. Nie wspominając o rzeszy innych zawodów oraz usług, gdzie AI masowo zastępowałoby ludzi. Tak się nie stało, ale też jednocześnie niewykluczone, że stopniowo tak się będzie działo - wraz z dalszym rozwojem samego AI. Chat-GPT oczywiście zoptymalizuje i wesprze wiele branż i firm, ale będzie to kolejny etap ewolucji rozwoju oprogramowania, którego doświadczyliśmy już niejednokrotnie.
Po każdym takim etapie, świat musiał się dostosować. I tak, jak dzisiaj każdy poważny biznes nie może się obejść bez strony internetowej i obecności w social mediach, tak teraz musi także mocno wziąć pod uwagę stosowanie potęgi AI wewnątrz swoich procesów i systemów, aby nie odstawać od konkurencji, która zacznie to adaptować przed nimi. Dlatego podchodźmy do tego z nastawieniem wykorzystania nowych możliwości, bo tak naprawdę otwiera się nam nowa, ogromna przestrzeń, którą należy wypełnić narzędziami AI. I, o ile tworzenie oprogramowania w krótkim czasie może być bardziej wydajne, tak zawód programisty oraz firm wytwarzających oprogramowanie będzie się miał jak bardzo dobrze, pod warunkiem wykorzystywania potencjału AI w codziennej pracy, jak i w implementowaniu go w systemach swoich klientów.