#31 – Czy ChatGPT wyrzuci firmy IT z rynku
W tym odcinku dowiesz się jak kształtuje się przyszłość firm informatycznych w odniesieniu do dynamicznego wzrostu popularności usługi ChatGPT.
Transkrypcja odcinka
Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.
To jest odcinek 31, „Czy ChatGPT wyrzuci firmy IT z rynku?”. W odcinku 22 opowiadałem tak na świeżo o tym czym jest ChatGPT, to było niedługo po jego premierze, a także o swoich pierwszych doświadczeniach z tą usługą. Minęło trochę czasu, ukazała się kolejna, oparta już o GPT, czyli ten bazowy mechanizm w wersji czwartej – kolejna wersja Chat GPT, a jednocześnie w mediach zaczęło pojawiać się coraz więcej tekstów, publikacji jakoby programiści, można powiedzieć tak trochę upraszczając, programiści ukręcili bat na samych siebie, bo wprowadzając narzędzie AI tak jak ChatGPT praca programistów, a może i nie tylko ich stanie się niepotrzebna. No i czy tak jest w istocie? Oczywiście jest to pytanie, na które ze stuprocentową pewnością odpowiedzieć nie można, dotyczy przyszłości, więc jakby z założenia, nie? I prawda jest taka, że ten odcinek może zestarzeć się albo jak wino, albo jak mleko, albo bardzo dobrze albo bardzo źle, natomiast choć oczywiście absolutnej pewności nie mam to postaram się przedstawić argumenty pasujące do mojej opinii, którą przedstawię od razu; nie będę czekał do końca odcinka. Otóż, czy Chat GPT wyrzuci firmy, firmy IT? Nie. Ale czy zmieni sposób pracy i wpłynie to na to w jaki sposób realizowane są projekty informatyczne? Myślę, że tak, że jest to niezwykle prawdopodobne.
Zanim przejdę do meritum to dodam tę ważną informację. Nie ukrywam, dość płynnie posługuję się tutaj pojęciem „firmy IT”, które jest dość szerokie, no ale siłą rzeczy najbardziej odwołuję się do własnych doświadczeń, czyli doświadczeń firmy typu Software House tworzącej oprogramowanie na zamówienie takie jak nasza firma Makimo, natomiast no tak naprawdę nawet w przypadku firm, które świadczą usługi trochę inne, ale też z branży IT o podobnej problematyce zdecydowanie możemy mówić. Najwyżej w trochę innym aspekcie, w trochę innych odcieniach. Z pewnością natomiast można zaliczyć tutaj też do tej najbardziej zainteresowanej grupy firmy produktowe, czyli nie takie, które tworzą oprogramowanie na zamówienie zewnętrznych klientów tylko same dostarczają jakiś produkt lub usługę bezpośrednio do swoich klientów. Bezpośrednią inspiracją do nagrania tego odcinka był tekst, z którym spotkałem się w Gazecie Wyborczej autorstwa pana Bolesława Breczki o tym jak udało mu się zaoszczędzić 14 tysięcy złotych dzięki użyciu ChatGPT zamiast zapłacenia takiej kwoty jakiejś właśnie firmie usługowej. Nie chcę tutaj całego tego odcinka zamienić w polemikę z tym artykułem, ale no na potrzeby choćby krótkiego omówienia streszczając ów pan redaktor postanowił utworzyć narzędzie do pobierania interpelacji poselskich korzystając z danych udostępnianych przez sejmowe API z takim, można powiedzieć, otwartym dostępem. I najpierw artykuł zaczyna się od właśnie uzyskania wyceny od jednej z firm programistycznych po czym redaktor osiąga założony efekt za pomocą ChatGPT. No i pozwolę sobie tylko na mały spoiler, zresztą jest to chyba dość logiczne, że redaktorowi udało się osiągnąć taki założony efekt; utworzył narzędzie, które faktycznie pobiera te interpelacje z użyciem ChatGPT, natomiast zajęło mu to kilkanaście godzin pracy i jest to też świetny dowód na to, że pozornie ten sam tekst, ten sam dokument źródłowy może być analizowany na różne sposoby, bo tutaj redaktor oczywiście, można powiedzieć, piał peany. No, na pewno był zadowolony z efektów pracy, natomiast ja jednocześnie jako osoba z branży muszę zwrócić uwagę na kilka kwestii, które nie zostały tak dobrze przedstawione w artykule – takie kwestie, do których można się co nieco przyczepić.
Zacznę od rzeczy, która może nie być widoczna na pierwszy rzut oka przy pierwszym czytaniu takiego artykułu, bo jak się czyta go pierwszy raz to faktycznie wszystko wygląda naprawdę ciekawie i dość imponująco, natomiast gdy przeanalizujemy sobie krok po kroku co faktycznie musiał zrobić redaktor, ale też co musiał wiedzieć i jak rozumieć zasadę np. działania API okazuje się, że żeby właśnie zadać odpowiednie pytania i to w odpowiednim ciągu, no, konieczna jest jednak pewna wiedza informatyczna. Naturalnie, jest to wiedza zauważalnie mniejsza niż gdyby chciałoby się taki program napisać samodzielnie, natomiast mimo wszystko trzeba wiedzieć czym jest API, trzeba wiedzieć czym są odpowiedzi z serwera, jak działają parametry, czym jest baza danych i tutaj trudno powiedzieć w artykule, tak jak patrzyłem, to nie ma informacji o tym, czy ten redaktor wiedział czym są te wszystkie elementy czy sobie doczytał te informacje, natomiast może też po prostu ma jakieś, przejawia pewne talenty w tym kierunku. No, ja ucząc studentów wiem, i to jednak jest no zauważalnie większa próba, można powiedzieć, badawcza, że to nie są pojęcia, które od razu każdy wie, każdy zna i to jest, nie wiem, kwestia godzinnego wykładu, aby wszystko w szczegółach przedstawić czy wyjaśnić. Wstępnie – może, ale żeby tworzyć coś ze zrozumieniem no to na pewno potrzebne byłoby więcej czasu.
Drugą niezwykle istotną kwestią jest fakt, że przedstawione narzędzie już na koniec kiedy zostało utworzone i faktycznie wyświetla te dane, które redaktor sobie założył, ono działa przy założeniu, że wszystko jest OK i to jest bardzo częsta rzecz w świecie IT, w świecie tworzenia aplikacji, że opracowanie takiego podstawowego, pozytywnego scenariusza, np. w sklepie internetowym: przejście przez koszyk, realizacja płatności, wyświetlanie komunikatu o skutecznie przeprowadzonym zamówieniu to nie jest wcale takie trudne. To jest czasami nawet najprostsza rzecz do zrobienia. Problemy z wdrożeniem, problemy z realizacją np. procesu zakupowego pojawiają się wtedy, kiedy trzeba obsłużyć sytuacje, no, można powiedzieć, nieprzewidziane bądź też przewidziane, ale jednak sytuacje w pewnym sensie negatywne, np. nieprawidłowo podane dane karty kredytowej, nieaktualny stan koszyka w odniesieniu do stanów magazynowych, przekroczony termin rezerwacji dostawy, wiele innych warunków, o których, no, nie myśli się, jeżeli wszystko idzie OK. Tego w artykule no siłą rzeczy nie ma.
Nie twierdzę przy tym, że tego rodzaju mechanizmów też nie da się wygenerować przy użyciu ChatGPT, ale rośnie złożoność, rośnie złożoność problemu, który rozwiązujemy. Trzeba o pewnych zagadnieniach pomyśleć, trzeba je zaimplementować, trzeba zgłosić odpowiednie żądania do usługi ChatGPT – to wszystko już wydłuża i komplikuje proces. Wreszcie pozostają aspekty niefunkcjonalne, tzn. no nawet zakładając, że OK, wygenerujemy sobie odpowiednie przypadki, w których np. coś nie zadziała, API nie będzie dostępny, serwer nie będzie dostępny, będą zwracane nieprawidłowe dane to to w sumie można sobie, podejrzewam, wygenerować, ale pozostają jeszcze takie aspekty jak bezpieczeństwo, wydajność działania takiej aplikacji, no, nie mówiąc o rozszerzalności i takiej zdolności do budowy większego rozwiązania. Mimo wszystko, przynajmniej na tym etapie, to co generuje ChatGPT to są takie krótkie fragmenty kodu, tzw. snippety, które można sobie oczywiście sklejać w coś większego, ale to nie jest całość pisana według jakiegoś pomysłu doświadczonego inżyniera czy architekta oprogramowania. Gdy uwzględnimy te wszystkie aspekty to szybko się okaże, że właśnie w tych szczegółach potrafi niestety tkwić diabeł. Lubię porównywać to do procesu stawiania domu, bo dla laika najważniejszym etapem może wydawać się to, żeby postawić ściany, dach, bo wtedy widzimy wyraźny efekt. Była ziemia, a na ziemi po jakimś tam czasie staje konstrukcja. Natomiast, no właśnie, diabeł tkwi jednak w tych może trochę mniej widocznych na pierwszy rzut oka elementach takich jak chociażby, nie wiem, instalacja wodno-kanalizacyjna, elektryczna, ogrzewanie, klimatyzacja, które no potrafią i chyba bardzo często kosztują więcej niż taka podstawowa konstrukcja z pustaków czy jakichś tam cegieł, więc jest to, no, niezwykle istotne, bo trochę to tak wygląda z ChatGPT; bardzo szybko można osiągnąć pewne widoczne i takie na swój sposób ciekawe efekty natomiast od tego momentu, od tego etapu do stworzenia rzeczywiście kompletnej pod każdym względem aplikacji jeszcze sporo brakuje. Natomiast jednocześnie, no nie da się zaprzeczyć, że generowanie kodów w ten sposób może przynieść i nawet powiem, że po prostu przyniesie zmiany w procesie wytwarzania oprogramowania. Natomiast to będzie zmiana w procesie tworzenia aplikacji, która najprawdopodobniej wymusi zmianę sposobu pracy przez specjalistów, ale nie ich usuniecie z rynku. Z pewnością mogą pojawić się nowe role, przestrzeń dla nowych specjalistów jak choćby osób, które będą w stanie obsługiwać takie narzędzie, a niekoniecznie będą taki kod programu pisały zupełnie same. Mój taki, może nie sceptyczny, ale raczej spokojny pogląd na całą sytuację bierze się z tego, że w historii tworzenia oprogramowania, która przecież aż tak długa nie jest, bo to wciąż jest raptem kilkadziesiąt lat, pojawiało się wiele zmian, które no naprawdę przynosiły swojego rodzaju istotne modernizacje, modyfikacje procesu wytwarzania oprogramowania. To co ChatGPT różni od tych zmian to jest prawdopodobnie to, że te zmiany nie były tak widoczne dla wszystkich i że jednak ta ostatnia, zwłaszcza od listopada, ewolucja ChatGPT z użyciem nowych wersji modelu GPT po prostu zadziała się, odbyła się bardzo szybko. Nie chcę tutaj tworzyć jakichś takich teorii, stawiać takich hipotez co do rozwoju inżynierii oprogramowania, bo nie uznaję się tutaj za jakiegoś wielkiego eksperta, zwłaszcza w zakresie historii, natomiast chciałbym odnotować kilka trendów, które pojawiły się w świecie IT, które sam miałem okazję zaobserwować i zmieniając właśnie metody tworzenia aplikacji, systemów na plus. Przede wszystkim, choć zabrzmi to tak na pierwszy rzut ucha mocno sztampowo to tak naprawdę na proces tworzenia oprogramowania zdecydowanie największy wpływ miała popularyzacja Internetu i jego dotarcie do szerokiego grona specjalistów. I teraz od razu przejdźmy do meritum, bo to oczywiście brzmi po prostu jak oczywista oczywistość, więc przede wszystkim Internet był kluczowy dla popularyzacji ruchu Open Source, który to ruch tak naprawdę dzięki niemu mamy tysiące, dziesiątki tysięcy, może i więcej projektów, które pozwalają nam w otwarty sposób, za darmo tworzyć aplikacje webowe, mobilne, chmurowe, aplikacje związane ze sztuczną inteligencją i wiele innych. I bez Open Source sytuacja taka, takie możliwości nie zaistniałyby po prostu.
Pamiętam dość dobrze, gdy zaczynałem przygodę z programowaniem na początku tego stulecia. Z każdym rokiem, swoją drogą, to sformułowanie robi się coraz bardziej poważne. World Wide Web, czyli ta część Internetu odpowiedzialna za strony internetowe była w powijakach. Wymiana informacji między internautami była, no, znikoma w porównaniu do tego co mamy teraz, a do tego, żeby móc programować trzeba było na ogół zapłacić bardzo drogie licencje za narzędzia programistyczne. Mówimy tu o kosztach rzędu tysięcy czy dziesiątków tysięcy złotych za jedną licencję. Narzędzia te często były dość kompleksowe, one pozwalały tworzyć różne rodzaje aplikacji, natomiast i no mimo wszystko nie miały w sobie jakby kompletu tego co dało się wyobrazić i jeżeli trzeba było dokupić jakieś dodatkowe mechanizmy no to właśnie – już od razu powiedziałem, że trzeba było dokupić je. Nie można było po prostu znaleźć sobie w Internecie stosownego rozszerzenia. Trzeba było albo skorzystać z jakiejś dodatkowej opcji u producenta takiego narzędzia albo w firmach zewnętrznych, które się specjalizowały. To wszystko powodowało, że bariera wejścia na rynek tworzenia oprogramowania była niezwykle wysoka i tutaj zarówno nauka programowania jak i jego późniejsze, komercyjne użycie było bardzo trudne. Z czasem w tym stuleciu, bieżącym stuleciu, sytuacja zaczęła się poprawiać. Tutaj Microsoft zaczął wypuszczać darmowe wersje swoich narzędzi programistycznych, pojawiły się otwarte środowiska programistyczne do tworzenia aplikacji w języku Java, popularność zaczęły zyskiwać takie języki jak Python, PHP czy Ruby, które były jakby z definicji otwarte. Nawet nie zawsze otwarte, natomiast darmowe, może w tę stronę, bo już tutaj nie grupujmy wszystkich narzędzi w jeden jakby worek. Natomiast to wszystko ułatwiło naukę programowania i późniejszy też zarobek małym firmom czy wręcz indywidualnym programistom i to w konsekwencji spowodowało, że coraz więcej oprogramowania na świecie mamy, no, oczywiście równolegle zgrało się to z popularyzacją Internetu wśród zwykłych użytkowników, do tego doszły jeszcze smartfony no i tak jesteśmy tu, gdzie jesteśmy teraz. Oczywiście same języki programowania to nie wszystko, bo obok otwartych narzędzi, darmowych narzędzi do tworzenia oprogramowania właśnie zaczęły powstawać biblioteki i frameworki, czyli takie fundamenty, na bazie których możemy znacznie szybciej budować, zwłaszcza te nowoczesne aplikacje webowe, mobilne bez potrzeby ciągłego wynajdywania koła na nowo. Dawniej, gdyby ktoś np. poprosił nas o zaimplementowanie w aplikacji wykresów do przedstawienia jakichś statystyk to miałbym dwie opcje – albo zapłacić jakiejś firmie, która specjalizuje się w wytwarzaniu mechanizmów do wykresów albo napisać własne, co też kosztowałoby sporo czasu. To samo można powiedzieć o różnego rodzaju mechanizmach komunikacyjnych, internetowych, bibliotekach do nauczania maszynowego czy analizy danych. Kiedyś trzeba było je albo kupować, albo zrobić od zera. Natomiast dzięki popularyzacji Internetu, ale i ruchu Open Source ogromna liczba takich projektów jest dostępna za darmo. Oczywiście, no tutaj trzeba ponieść pewien koszt czasowy, żeby zapoznać się z danym narzędziem, natomiast z reguły zajmuje to znacznie mniej czasu niż gdybyśmy chcieli zrobić coś od zera. Pamiętam jak chociażby tworząc wiele lat temu aplikacje finansowe implementowaliśmy sami mechanizmy do liczenia pewnych wskaźników finansowych. Nie było to może trudne, ale trzeba było po prostu swoje przy komputerze wysiedzieć. Natomiast obecnie jest wiele gotowych i darmowych rozwiązań, które jedynie trzeba zaadoptować do projektu.
Kolejną ogromną siłą, zaletą Internetu było powstanie społeczności, których celem jest tak naprawdę rozwiązywanie problemów naszej branży. Myślę, że każdy na Wikipedię, która jest takim pierwszych źródłem w zakresie wiedzy ogólnej, popularno-naukowej, natomiast jednocześnie takim odpowiednikiem Wikipedii w świecie programistów jest serwis Stack Overflow, bo jest to z jednej strony baza wiedzy, ale z drugiej też miejsce, gdzie można zadać pytanie o rozwiązanie jakiegoś problemu, np. jak pobrać z Internetu listę zdjęć z czyjegoś profilu z Facebooku za pomocą API Facebooka, także połączenie tego, że można pytać o różne problemy łącznie z przeszukaniem też bazy już istniejących pytań, co zresztą nawet robi sam Google. W sensie Google przeszukuje te pytania w serwisie Stack Overflow, powoduje, że wielu programistów, programistek uczy się tak naprawdę właśnie dzięki Stack Overflow, bo jak nie wiedzą, jak coś zrobić szukają to właśnie, jak to się mówi, „na Stacku”. Można tak powiedzieć, zażartować, że prawdziwie trudny problem to taki, na który rozwiązanie na Stacku nie istnieje. Ja niestety też parę razy na coś takiego w nowoczesnych czasach, bo kiedyś nie było Stack Overflow to było normalnie, że trzeba było sobie radzić inaczej, natomiast w ostatnich latach zdarzało mi się też nie znaleźć odpowiedzi w tym serwisie. Jeżeli kojarzy ci się to z odpowiedziami, których udziela ChatGPT to podobieństwo jest w istocie duże, bo chociaż oczywiście Stack Overflow nie działa automatycznie to jednocześnie te odpowiedzi są na ogół mimo wszystko lepsze, dokładniejsze, no bo napisane przez człowieka.
Nawet jeżeli wykluczymy tutaj pomoc ludzką, tak, pomoc inteligencji naturalnej to w świecie inżynierii oprogramowania od dawna pojawiały się narzędzia, które w prosty lub bardziej zaawansowany sposób pozwalały na generowanie kodu i czasami też innych, niezbędnych do tworzenia oprogramowania wytworów, np. grafik. Bardzo, bo długo już istnieją takie mechanizmy, które generują proste schematy kodu, np. jeżeli mamy jakąś bazę danych i chcemy z niej skorzystać w aplikacji webowej to w wielu technologiach istnieje możliwość takiego automatycznego powiązania, wygenerowania niezbędnych fragmentów kodu, które pozwolą na komunikację z bazą danych i tego nikt ręcznie pisać nie musi. W niektórych technologiach istnieje nawet możliwość wygenerowania całych stron do dodawania, edycji, usuwania czy przeglądania danych i sam uczyłem tego studentów już ładnych parę lat temu a i wówczas była to technologia już dobrze znana i można było stworzyć taką prostą aplikację bez wielkich zdolności programistycznych. Prawdziwa zabawa zaczynała się, kiedy chcieliśmy wyjść trochę poza utarty schemat.
Wreszcie nawet generowanie kodu nie jest nowinką z tych ostatnich miesięcy, bo usługa GitHub Copilot zresztą zbudowana na bazie starszej wersji GPT, bo GPT-3, została zapowiedziana w połowie 2021 r., więc już sporo czasu minęło i o tym też się w branży mówiło, choć nie da się ukryć, że dokładność działania była mniejsza niż obecnie. Dlaczego więc, dążąc już powoli do podsumowania, mimo takiego rozwoju technologii nie dojdzie do sytuacji, w której programiści odejdą całkowicie do lamusa? A no dlatego, że programiści, programistki, czy może szerzej – specjaliści ds. tworzenia oprogramowania powinni odpowiadać za zasadniczo ogólny cel jakim jest rozwiązywanie problemów biznesowych za pomocą produktów cyfrowych. Tutaj nie mówię oczywiście, że każdy programista od juniora po seniora, tak jak to w jednym z ostatnich odcinków opowiadałem, musi mieć pełny zakres kompetencji w tym zakresie, ale nasza praca czemuś służy. Temu o czym właśnie powiedziałem – realizacji, rozwiązywaniu problemów biznesowych. ChatGPT stał się szybko narzędziem, potężnym narzędziem, nie ma co do tego wątpliwości, które na pewno będzie stanowiło cenną broń w walce z tymi problemami i na pewno już teraz widać, że mamy sytuację, w których ten proces wytwórczy oprogramowania będzie można przyspieszyć. Z pewnością może zmaleć też zapotrzebowanie na takie najprostsze role, takie, jak to się mówi potocznie, klepanie kodu, czyli sytuacje, w których dochodzi do powtarzalnego, a więc łatwego do zastąpienia przez ChatGPT wpisywanie, wprowadzanie powtarzalnych fragmentów kodu. Natomiast na pewno z kolei wzrośnie znaczenie umiejętności weryfikacji i oceny kodu. No, w porządnych firmach robi się to już teraz na zasadzie analizy kodu, który wytwarzają ludzie i tego, że weryfikuje się, przeprowadza się tzw. code review, czyli właśnie analizę, recenzję kodu no i to samo będzie nawet ważniejsze w przypadku właśnie kodu generowanego przez AI, bo często mimo wszystko ten ChatGPT popełnia takie głupie błędy, bo on nie do końca rozumie co generuje. Generuje to co jest w stanie odtworzyć z sieci. Natomiast im bardziej większe, im bardziej złożone zagadnienia będziemy próbowali rozwiązywać, tym dalej wciąż istotny będzie czynnik ludzki. Także podsumowując i niejako powtarzając pytanie z początku – będzie zmiana, natomiast odejścia w niebyt firm IT czy specjalistów IT nie przewiduję.
Jeżeli chcesz dowiedzieć się więcej o ChatGPT i zależności między nim a procesem tworzenia oprogramowania, jeśli chcesz się dowiedzieć więcej jak możesz skorzystać z jego możliwości to zachęcam do kontaktu. Jak zawsze – czy to przez LinkedIn, czy przez Facebook, czy po prostu za pomocą mojego maila krzysztof@makimo.pl.
Na dziś to już wszystko, dziękuję za uwagę, kłaniam się nisko i do usłyszenia.
KONIEC