Od kilku miesięcy, od momentu, gdy światło dzienne ujrzał ChatGPT, jak bumerang wracają pytania – czy to już koniec? Czy sztuczna inteligencja zastąpi programistów?
Krótka odpowiedź brzmi: NIE.
I zaraz dam Ci trzy powody, dla których tak uważam.
Przejdziemy też przez wyniki ankiety, którą przeprowadziłem wśród widzów mojego kanału na YT i w której zadałem pięć pytań:
- Kiedy AI zastąpi programistów?
- W jaki sposób AI wpłynęła na Twoje podejście do nauki programowania?
- W jaki sposób AI wpłynie na konkurencję wśród juniorów?
- Jak reagujesz na głosy, że o wejście do branży IT jest coraz trudniej?
- W jaki sposób korzystasz z AI podczas nauki programowania?
Zaczniemy od pierwszego pytania ankiety, na które ponad 50% osób odpowiedziało, że programiści zostaną zastąpieni przez sztuczną inteligencję. Co więcej, większość z tych osób uważa, że stanie się to w ciągu najbliższych 20 lat. I ja się z tym stwierdzeniem zdecydowanie nie zgadzam.
Programowanie to dużo więcej niż tylko pisanie kodu
Powód numer jeden, dla którego AI nie zastąpi programistów, jest taki, że programowanie to dużo więcej niż tylko pisanie kodu. Ucząc się programowania od kilku miesięcy, łatwo jest uwierzyć, że całą pracę może wykonać za nas sztuczna inteligencja. Odpalamy ChatGPT i mówimy: Napisz program w Javie do zarządzania wydatkami. ChatGPT generuje kod, dodaje objaśnienia co i jak działa, a więc rewelacja! Wydajemy kolejne polecenie “dodaj zapisywanie wydatków do bazy danych MySQL” i znowu dzieje się magia. Chcemy jeszcze ulepszyć nasz program, więc mówimy “użyj tutaj Spring Boota” i ChatGPT modyfikuje nasz kod. I wszystko fajnie, to naprawdę robi wrażenie, ale to jest tak naprawdę bardzo prosty program. Realne projekty, nad którymi pracujemy w IT, są dużo bardziej złożone i wymagają dużo więcej pracy koncepcyjnej. Tak, pisanie kodu i implementowanie rozwiązań to tak naprawdę ostatni etap pracy.
To my podejmujemy decyzje, nie komputer
Najpierw trzeba zastanowić się, co my w ogóle chcemy zrobić. Nawet na tym prostym przykładzie widzimy podejmowane przez nas decyzje – w pierwszym kroku mówimy komputerowi, że chcemy program do zarządzania wydatkami, w drugim mówimy, że chcemy zapisywać dane do bazy MySQL, a w trzecim mówimy, że chcemy wykorzystać Spring Boota. Czyli nie tylko musimy wiedzieć co chcemy osiągnąć, ale też musimy wiedzieć, z jakich technologii i dlaczego chcemy skorzystać. Ok, komputer wykonał za nas pracę polegającą na stworzeniu kodu, ale to my rozwiązaliśmy cały problem, dając mu zestaw poleceń do wykonania. Tych decyzji było kilka, a przecież był to bardzo prosty program. Pracując nad realnymi projektami w branży IT skala jest niewyobrażalnie większa. Każdy projekt to tysiące problemów do przeanalizowania i tysiące decyzji związanych z architekturą aplikacji, technologiami, które chcemy wykorzystać, a także z samymi funkcjonalnościami do zaimplementowania. Bo teraz stworzyliśmy prostą aplikację działającą w konsoli, ale w rzeczywistości będziemy tworzyć potężne systemy, o tysiącach funkcjonalności, które musimy nie tylko przemyśleć w najdrobniejszych szczegółach, ale też połączyć je w całość. I to my musimy to zrobić, bo to my wiemy, co chcemy stworzyć.
Sztuczna inteligencja rozwiązuje już rozwiązane problemy
Powód numer dwa, dla którego uważam, że sztuczna inteligencja jedynie będzie nam pomagać w programowaniu, ale nas nie zastąpi – proszę o chwilę uwagi, bo będzie bardzo ważne zdanie – sztuczna inteligencja dobrze sobie radzi, ale z problemami, które już ktoś wcześniej rozwiązał. Taka jest zresztą natura tej sztucznej inteligencji, o której dzisiaj mówimy – są to ogromne modele językowe, które generują odpowiedzi korzystając z wiedzy, którą zostały nakarmione. I pewnie, jest to ogrom wiedzy, ale odpowiedzi wciąż są tylko wypadkową różnych informacji, które już wcześniej istniały. I można to bardzo łatwo sprawdzić każąc ChatGPT o wygenerowanie czegoś naprawdę kreatywnego, czegoś, co w jego bazie wiedzy nie istnieje. Dlatego, gdy poprosimy o sztuczną inteligencję o napisanie aplikacji do zarządzania wydatkami, to poradzi sobie doskonale, bo ten problem został już rozwiązany na setki tysięcy przeróżnych sposobów. I tutaj dochodzimy do kluczowej kwestii – tworząc projekty w branży IT nie piszemy kolejnej aplikacji do zarządzania wydatkami, tylko tworzymy te projekty po to, żeby rozwiązać problemy, których nikt wcześniej nie rozwiązał. A zawsze jest potrzeba stworzenia czegoś nowego. Zawsze będą się pojawiać nowe problemy, które wcześniej nie istniały i które trzeba rozwiązać. Niesamowity rozwój techniki na przestrzeni ostatnich kilkuset lat nie sprawił, że człowiek ma dzisiaj mniej problemów do rozwiązania, bo jasne, pewne problemy rozwiązał 200, 100 czy 10 lat temu, ale na ich miejsce pojawiły się zupełnie inne. I ciężko sobie wyobrazić, że w przyszłości będzie to wyglądać inaczej.
Dzięki sztucznej inteligencji będziemy mogli skupić się na nowych, ekscytujących problemach
Podobnie będzie z programowaniem. Nawet gdybyśmy dzisiaj rozwiązali wszystkie możliwe problemy i dokończyli wszystkie trwające projekty, to i tak jutro, pojutrze i w kolejnych dniach pojawią się kolejne problemy, które trzeba będzie rozwiązać. Takie problemy, z którymi wcześniej się nie spotkaliśmy. A to, co w tym wszystkim brzmi najbardziej ekscytująco to fakt, że tych nowych problemów będzie coraz więcej. Dzięki sztucznej inteligencji będziemy spędzać dużo mniej czasu na rozwiązywaniu problemów, które zostały już wcześniej rozwiązane, a zamiast tego ten czas będziemy poświęcać na nowe, niespotykane wcześniej problemy. I nastąpi efekt kuli śnieżnej, bo ta innowacja będzie postępować coraz szybciej.
Podsumowałbym ten punkt takim bardzo fajnym stwierdzeniem, które wpadło mi do głowy jakiś czas temu, gdy zastanawiałem się, dokąd ta sztuczna inteligencja nas zaprowadzi – myśląc o wpływie sztucznej inteligencji na programowanie nie powinniśmy myśleć kategoriami dzisiejszych problemów. Bo zgadzam się – jest duża szansa, że wiele problemów, z którymi regularnie mierzymy się dzisiaj, faktycznie będzie rozwiązywanych praktycznie bez naszego udziału, przez sztuczną inteligencję. Ale jednocześnie pojawi się cała masa nowych problemów, których dzisiaj jeszcze nawet nie jesteśmy w stanie sobie wyobrazić. A że będą to nowe problemy, nieobecne w bazie wiedzy sztucznej inteligencji, do rozwiązania tych problemów cały czas potrzebny będzie człowiek.
To wciąż my będziemy mówić komputerowi, co ma robić
Pora na powód numer trzy i tutaj zadajmy sobie pytanie – czym jest programowanie? Już kilka razy wspominałem na kanale na YT, że moja ulubiona definicja programowania pochodzi od twórcy Linuxa, Linusa Torvaldsa, który powiedział, że programowanie to mówienie komputerowi co ma robić. A jak działa komputer? Komputer rozumie tylko dwie informacje – 1 oraz 0 czyli w układzie płynie prąd albo ten prąd nie płynie. Więcej na ten temat opowiadałem w filmie Czym właściwie jest programowanie?, który polecam, bo to bardzo dobry film, dzięki któremu jeszcze lepiej zrozumiesz to wszystko, o czym czytasz w tym artykule. W takim dużym skrócie – komputer nie rozumie takiego języka, którym porozumiewamy się my, więc przez lata rozwijane były różne sposoby komunikacji z komputerem. Najpierw pisaliśmy tak zwany kod maszynowy, potem nastąpił przełom w postaci języka C, dzięki któremu komunikacja z komputerem przybrała ludzką formę, a dzisiaj możemy korzystać z takich języków jak Java czy Python, dzięki którym rozmawiając z komputerem używamy jeszcze prostszej składni i konstrukcji opartych na słowach znanych z języka angielskiego. Ale zawsze to co napiszemy w tak zwanym procesie kompilacji lub interpretacji tłumaczone jest na jedynki oraz zera rozumiane przez komputer i to się nie zmieni. Uprzedzam tutaj komentarze dotyczące komputerowych kwantowych – po pierwsze nic nie wskazuje na to, że takie komputery wyprą tradycyjne komputery, tylko będą istnieć obok nich, a po drugie – kwantowy komputer też nie będzie rozumieć naszego języka, a po prostu poza zerami i jedynkami będzie jeszcze rozumieć to, co jest pomiędzy nimi.
Zawsze będziemy potrzebowali łącznika między naszym językiem a językiem komputera
W każdym razie po jednej stronie mamy języki programowania, z których korzystamy, po drugiej stronie mamy komputer operujący na wartościach jeden oraz zero. I zawsze będziemy potrzebować tłumaczenia między tymi dwoma światami, chociaż oczywiście to co mamy po tej stronie może się zmieniać. Przez lata języki programowania bardzo mocno się zmieniły i dzisiaj programuje się dużo łatwiej, bo języki programowania coraz bardziej przypominają nasz naturalny, ludzki język. I tak, sztuczna inteligencja prawdopodobnie wyniesie to na jeszcze wyższy poziom. Być może za jakiś czas zamiast pisać:
if uzytkownik_zalogowany:
print("Witamy na stronie!")
else:
print("Błędne hasło")
powiemy po prostu komputerowi “spróbuj zalogować użytkownika, jeżeli się uda napisz witamy na stronie, jeżeli się nie uda wyświetl mu informację, że błędnie wpisał hasło”, ale zwróć uwagę na fakt, że jedyne co się zmieni to forma komunikacji z komputerem. To wciąż my będziemy musieli powiedzieć komputerowi co ma zrobić i w jednym i w drugim przypadku. I nie ma znaczenia czy użyjemy do tego dzisiejszego języka programowania czy użyjemy języka naturalnego, takiego jakiego używamy w rozmowie z innymi ludźmi. Nieważne jak to zrobimy, ale wciąż wydamy komputerowi polecenie. Czyli powiemy mu co ma robić. A to jest nic innego jak właśnie programowanie.
Dzięki AI nauka programowania stała się łatwiejsza
A więc zamiast martwić się, że sztuczna inteligencja zastąpi programistów – a w wynikach ankiety widzę, że prawie 20% z Was albo zniechęciło się do nauki programowania i uczy się mniej albo w ogóle przestało się uczyć – powinniśmy raczej zastanowić się, jak wykorzystać sztuczną inteligencję w programowaniu i w nauce programowania. Bo to, że sztuczna inteligencja będzie miała ogromny wpływ na branżę IT jest pewne. Rozwój branży będzie następował coraz szybciej, pojawiać się będzie coraz więcej narzędzi i po prostu trzeba będzie być na bieżąco. 35% z Was odpowiedziało, że dzięki AI nauka stała się łatwiejsza i faktycznie tak jest. Nie chcę Was już zanudzać opowieściami z prehistorii, ale kiedy ja zaczynałem uczyć się programowania, dostępne były praktycznie tylko książki i jakiś tam zalążek internetu i ta nauka naprawdę szła ciężko. A dzisiaj? AI pomoże Ci z pomysłami na projekty, rozbije Ci pomysł na konkretne zadania, doradzi z wyborem technologii, a gdy czegoś nie rozumiesz, to w kilka sekund Ci to wytłumaczy. Dzięki temu możesz robić naprawdę mega szybki progres i w ciągu kilku miesięcy osiągnąć poziom, na który kiedyś trzeba było pracować latami.
Wyższe wymagania dla juniorów to naturalna rzecz
I tak, będzie dokładnie tak jak odpowiedzieliście w ankiecie – wymagania dla juniorów się zwiększą, ale to naturalna konsekwencja rozwoju. Załóżmy, że do zdobycia pracy w branży IT potrzebujesz roku nauki. A skoro to, co kiedyś ludzie osiągali w rok, dzisiaj możesz osiągnąć w trzy miesiące, to oczywiste jest, że nie będziesz siedzieć bezczynnie przez dziewięć pozostałych miesięcy, tylko weźmiesz na tapet kolejne tematy. Ok, jak chcesz to możesz siedzieć i nic nie robić, ale w tym czasie inni będą się uczyć i w momencie, gdy oni będą rozpoczynać swoją pierwszą pracę, Ty będziesz dalej siedzieć i będziesz narzekać, że dzisiaj junior musi znać dużo więcej technologii niż kiedyś. Tak, musi znać ich więcej, ale tylko dlatego, że dzisiaj ich nauczenie się zajmuje dużo mniej czasu. Widzę zresztą, że jedna trzecia z Was w ten właśnie sposób odpowiedziała w ankiecie, zaznaczając odpowiedź “łatwiej będzie się nauczyć tego, co musi umieć junior”.
Dla dobrych osób praca była, jest i będzie
To co mi się podoba to odpowiedzi na kolejne pytanie Jak na Twoje podejście do nauki programowania wpływają głosy, że o wejście do branży IT jest coraz trudniej? bo prawie 3/4 z Was albo nie przejmuje się tymi głosami i robi swoje albo wręcz uczy się z jeszcze większym zaangażowaniem. I to jest mega podejście, bo ja zawsze powtarzam, że dla dobrych osób praca w IT była, jest i będzie. I przypominam to co już kilka razy mówiłem o konkurencji kiedyś i dzisiaj. Zawsze powtarzam, że kiedyś na jedno miejsce aplikowało 10 osób, z czego 3 osoby były dobre a 7 słabych, a dzisiaj na jedno miejsce aplikuje 100 osób, ale wciąż dobre są tylko 3 osoby, a 97 słabych. To co się przez te lata zwiększyło to przede wszystkim ilość słabych kandydatów, bo mamy naprawdę masę osób, które uwierzyły, że po 2 miesięcznym kursie mogą zostać programistami. Dla osób, które podchodzą do tematu poważnie i wiedzą, że trzeba się uczyć rok – półtora i faktycznie to robią, takie przypadkowe osoby nie stanowią absolutnie żadnej konkurencji. Tak więc wystarczy po prostu robić swoje, uczyć się, poznawać technologie i oczywiście pisać dużo kodu.
Jak wykorzystać sztuczną inteligencję w nauce programowania?
I w tym wszystkim nie denerwować się na to, że sztuczna inteligencja zmienia branżę IT, tylko tę sztuczną inteligencję wykorzystywać. I tutaj spójrzmy na ostatnie pytanie ankiety – w jaki sposób korzystasz z AI podczas nauki programowania?
Przede wszystkim cieszy mnie, że większość z Was faktycznie z AI korzysta i robi to w bardzo fajny sposób. Przede wszystkim wykorzystujecie ChatGPT, gdy nie potraficie sobie poradzić z rozwiązaniem problemu albo gdy pojawia się błąd i często wybieracie tę opcję zamiast Google i Stack Overflow. Pytacie też o wskazówki związane z kodem czyli wklejacie kod i pytacie, co można w nim zmienić, poprawić, czy nie ma w nim błędów. Gdy czegoś w kodzie nie rozumiecie, prosicie ChatGPT o wytłumaczenie, jak dana rzecz działa, co jest mega fajne, bo widać, że nie wykorzystujecie tego narzędzia do bezmyślnego kopiowania kodu tylko właśnie odwrotnie, używacie go po to, by ten kod lepiej zrozumieć.
Kilka osób napisało też, że wykorzystuje AI do zrozumienia tematu, który nie został odpowiednio wytłumaczony w innych źródłach. I to jest super, bo widzę, że pytacie nie tylko o definicję, ale również o to, jak dana rzecz działa, do czego służy i pytacie o przykłady zastosowania. Mega mi to podejście podoba.
Widzę też, że niektórzy z Was poza ChatGPT korzystają również z asystentów pisania kodu takich jak Copilot, Tabnine oraz CodeWhisperer. To też jest bardzo fajna rzecz i jak nauczymy się już z tymi narzędziami pracować, możemy pisać kod naprawdę dużo szybciej.
Ucz się korzystać z AI!
Tak więc nie bójcie się tego AI, a zamiast tego uczcie się z niego korzystać, bo odpowiednio wykorzystane bardzo wam pomoże w nauce programowania, a zanim jeszcze przejdziecie do pisania kodu, obejrzyjcie jeszcze wspomniany w artykule film Czym właściwie jest programowanie?