Czy AI wyprze programistów?

Wszystko co napiszę poniżej to oczywiście moja subiektywna opinia i mogę się bardzo mylić. Nie pracuję na co dzień za dużo z AI, jednak staram się mniej więcej śledzić postępy jakich dokonujemy w obszarze rozwoju tej technologii i mam pewne przemyślenia. Są one aktualne na dzień pisania artykułu, mogą jednak przedawnić się nawet dnia kolejnego – AI rozwija się szybko i może jeszcze nie raz mnie zaskoczyć.

Kim jest programista?

Nie martwcie się, to nie jest post z serii “jak zrobić babciny sernik”, gdzie przeczytamy historię sera oraz życiorys babci. Jeżeli jednak mamy rozważać przyszłość programistów, to musimy ustalić sobie na potrzeby tych rozważań jakąś wspólną definicję. Tak więc programistą należy nazwać osobę, która rozumie potrzebę biznesową przygotowywanej funkcjonalności i za pomocą specyficznego języka (programowania) przygotowuje instrukcje, dzięki którym maszyna (komputer) jest w stanie spełnić wyżej wspomnianą potrzebę.

Jest to bardzo ogólna definicja, która oczywiście pozwala na mnóstwo interpretacji, chodzi mi jednak o to, że AI na pewno zmieni niektóre zawody, w tym także zawód programisty. Być może zmieni się język, być może narzędzia, jednak pamiętajmy o tym, kim programista jest i jakie jest jego zadanie w procesie tworzenia aplikacji.

Programiści niezastąpieni

Według mnie, jeżeli przyjmiemy powyższą definicję programistów, jasne staje się, że tacy ludzie będą potrzebni. Rozwój AI może znacząco zmienić języki w jakich programiści piszą, jednak szczerze wątpię w to, by obecne AI było w stanie programistów póki co zastąpić. Wciąż niezbędna będzie osoba, która zinterpretuje potrzeby biznesowe i przygotuje (bądź nawet zleci przygotowanie AI) odpowiedniego kodu. Ale co znaczy odpowiedniego? A no właśnie, tu jest sedno.

Programista rozumie jak działają programy, jak tworzy się algorytmy, jakie są zależności między komponentami aplikacji, jak wpływa modyfikowanie danych na inne części systemu i wiele tym podobnych kwestii. Im niżej w technikalia i implementację w konkretnych językach zejdziemy, tym więcej pułapek i rzeczy o których należy wiedzieć i pamiętać się pojawia. 

Istnieje wiele narzędzi pomagającym programistom, jak chociażby sonar, który sprawdza czy kod jest “czysty” (bez potencjalnych błędów, powtórzeń, komplikacji i tym podobnych). Jest to świetne narzędzie i bardzo pomaga utrzymać kod projektu w dobrej kondycji, jednak czasem trzeba niektóre fragmenty kodu wyłączyć z analizy, bo po prostu niektórych rzeczy się inaczej zrobić nie da, na danym etapie rozwoju aplikacji, a narzędzie o tym nie wie.

Jasne, jeżeli to narzędzie byłoby “inteligentne”, mogłoby analizować na bieżąco cały kod i prawdopodobnie byłoby bardziej odporne (“wyrozumiałe”) na jakieś odstępstwa od reguł. Tutaj jednak pojawia się kolejny problem – stworzone przez nas aktualnie AI ma problem z długimi konwersacjami w ramach jednego wątku. Żeby takie narzędzie wspomagające projekt rozumiało wszystkie problemy z kodem, musiałoby nie tylko od początku śledzić każdą zmianę, ale uczestniczyć w każdym spotkaniu (od samego początku planowania projektu), aby w pełni znać kontekst każdej wprowadzanej zmiany. Nie istnieją projekty w których udokumentowane jest wszytko, zawsze coś jest w domyśle, padło gdzieś między wierszami, jest jakąś niewypowiedzianą oczywistością znaną na projekcie. Wątpliwe jest to, ze podpięte do projektu na kilka lat AI (powiedzmy nawet 2), w takim zakresie jak powyżej opisałem, w ogóle byłoby jeszcze przydatne i cokolwiek ogarniało, skoro większość chat’ów gubi się i zaczyna pisać jakieś dziwne rzeczy po wymienieniu z nim kilkudziesięciu wiadomości, w ramach jednego wątku.

Wracając więc do wcześniejszej definicji programistów, tacy ludzie nadal będą potrzebni. Ich praca na pewno będzie się zmieniała, tak samo jak do tej pory się zmieniała przy powstaniu nowych technologii czy języków programowania. Nie zmienia to jednak faktu, że ich szeroko pojęte zadanie podstawowe pozostanie niezmienne, czyli tłumaczenie z ludzkiego, na komputerowy.

Sztuczna inteligencja wspaniałym kompanem

Oczywiście nie mówię, że AI jest głupie, nic nie rozumie i jest bezużyteczne. Wyuczone AI na ogromnych ilościach danych, jest wspaniałym kompanem w pracy programisty. Przeanalizowanie przez niego miliony linii kodu w rożnych projektach i na różnych forach, sprawia, że może nam w kilka sekund przygotować fragmenty kodu za nas. Programista jednak musi po pierwsze dokładnie opisać, co ten kod ma robić, a po drugie sprawdzić go, bo AI myli się zaskakująco często. Będą to też dość małe sekwencje kodu, jakieś narzędziowe fragmenty, jak konwersja jakiś danych czy ich przetworzenie.

Wiem wiem, AI potrafi o wiele więcej. Widziałem jak ludzie wrzucają odręcznie narysowany szkic strony internetowej, a AI przygotowuje jej działającą wersję. Tyle, że są to względnie proste rzeczy, to znaczy jest to praca w miarę mechaniczna i nie wymagająca zbyt wiele myślenia. Pamiętajmy, że tak przygotowana strona, nie będzie miała pod spodem zarządzania ciasteczkami, bezpiecznej warstwy logowania i zarządzania sesjami użytkowników, ani całego backend’u, z którym taka witryna mogłaby wymieniać dane. Jasne, dużo takich składowych nadal wygenerować może AI, ale ktoś musi jej dokładnie wytłumaczyć co i jak trzeba zrobić. I chyba już się domyślacie, kim ta osoba jest? 

Rynek się zmieni

Rynek programistów na pewno bardzo się zmieni. Zwiększy się próg wejścia, a nowym programistom ciężej będzie znaleźć pracę. Potrzebni za to będą specjaliści z doświadczeniem, których to okaże się pewnie, że nie ma za dużo. A czemu?

No to może powiedzmy sobie, jak to teraz mniej więcej wygląda. Junior, czyli taki młody programista, przychodzi na projekt i zaczyna robić jakieś rzeczy. Na ogół nie są to zbyt skomplikowane zadania, a bardziej czasochłonne, często nudne i w miarę odtwórcze. Dzięki temu poznaje pracę na projekcie, z dużą ilością kodu oraz z kilkoma środowiskami. Frustracja nad nudną i często powtarzalną pracą sprawia, że poznaje narzędzia, które tą pracę przyspieszają. Potem coraz bardziej we wszystkim się odnajduje, dostaje coraz trudniejsze zadania i napotyka coraz to nowe problemy. Na końcu okazuje się, że Ci najbardziej doświadczeni programiści to w sumie nie piszą już praktycznie kodu, tylko zarządzają aplikacją, użytymi narzędziami, rozwiązują ciężkie problemy z aplikacją i tym podobne. To oczywiście taki bardzo ogólny opis na potrzeby naszych rozważań.

Jak pewnie od razu zauważyliście po powyższym opisie, dużą część pracy juniora będzie mogło wykonać AI. I teraz, albo będzie to faktyczny junior, który będzie wykorzystywał AI do wykonania swoich zadań, przez co jego rozwój jako specjalisty raczej nie będzie tak dobry jak wcześniej, albo w ogóle w narzędziach do programowaniach korzystać będziemy z opcji, które automatycznie wykonają taką pracę, a junior w ogóle nie będzie potrzebny. I od razu widać jak na dłoni, że taki młody programista nie za bardzo będzie miał się gdzie wyszkolić, a z drugiej strony pracodawca poszukiwać będzie jednak osób z większą wiedzą i doświadczeniem. 

Ciężko powiedzieć jak wpłynie to wszytko na stawki i zapotrzebowanie rynku. Zmiany na pewno będą, ale programistów na razie nic nie zastąpi. Biorąc też pod uwagę to, że w obecnych czasach cyfryzujemy wszytko co się da, to będzie nas raczej potrzeba tylko więcej i więcej. Czeka nas jednak nieustanny rozwój, być może szybszy niż dotychczas. Czas pokaże.

Zdanie sztucznej inteligencji w sprawie

Z ciekawości poprosiłem AI o przygotowanie wpisu, o takim samym temacie jak mój. Wygląda na to, że podzielamy poglądy w tej kwestii, ale żeby nie być gołosłownym, załączam wspomniany wpis poniżej.

Wielu z nas obawia się, że rozwijająca się sztuczna inteligencja (AI) może w przyszłości zastąpić programistów, tworząc aplikacje i oprogramowanie bez udziału człowieka. Czy te obawy są uzasadnione, czy może istnieje miejsce zarówno dla AI, jak i programistów? To pytanie budzi wiele dyskusji w świecie technologii.

Warto zacząć od tego, że AI już teraz odgrywa znaczącą rolę w procesie programowania. Narzędzia do automatycznego generowania kodu oraz rozwiązań opartych na uczeniu maszynowym pomagają programistom znacznie przyspieszyć pracę i unikać rutynowych zadań. Jednakże, pomimo tych udogodnień, programiści pozostają niezbędnymi w procesie tworzenia oprogramowania.

Istnieje kilka powodów, dla których AI nie zastąpi programistów w pełni. Po pierwsze, samo AI wymaga nadzoru i rozwoju ze strony ludzi. Bez programistów, którzy projektują, trenują i doskonalą algorytmy AI, ta technologia nie byłaby możliwa. Programiści także są odpowiedzialni za określanie celów, projektowanie aplikacji, oraz nadzorowanie całościowego procesu tworzenia oprogramowania, co jest zbyt skomplikowane, aby mogło być zautomatyzowane w pełni przez AI.

Po drugie, ludzkie zrozumienie i kreatywność są niezastąpione w wielu aspektach programowania. Tworzenie innowacyjnych rozwiązań, projektowanie interfejsów użytkownika i analiza potrzeb użytkowników to obszary, w których ludzka inteligencja i doświadczenie są nieocenione. Programiści posiadają zdolność myślenia poza schematami i dostosowywania się do zmieniających się warunków, co stanowi klucz do rozwoju nowych i lepszych technologii.

Mimo że AI staje się coraz bardziej zaawansowana i może przyspieszać niektóre aspekty programowania, to wciąż pozostaje narzędziem, które jest kontrolowane i kierowane przez ludzi. Warto jednak zaznaczyć, że przyszłość może przynieść zmiany w roli programistów. Możliwe, że programiści będą musieli dostosować się do nowych technologii i zmieniających się wymagań rynku pracy. Jednak ich rola jako kreatywnych myślicieli i nadzorców nad AI będzie nadal nieoceniona.

Podsumowując, choć AI odgrywa coraz większą rolę w programowaniu, nie wydaje się, że zastąpi programistów w pełni. Raczej współpraca między ludźmi a technologią jest kluczem do przyszłości rozwoju oprogramowania. Warto inwestować w naukę programowania, aby móc dostosować się do ewentualnych zmian na rynku pracy, ale jednocześnie nie przekreślać roli ludzkiej inteligencji i kreatywności w tworzeniu technologii.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *