Java Developer? Przejdź na wyższy poziom wiedzy 🔥💪  Sprawdź

Team Leader? Podnieś efektywność swojego zespołu 👌 Sprawdź

Jak sztuczna inteligencja wpłynie na pracę programisty?

utworzone przez 21 marca 2024Java

W ostatnim czasie można zaobserwować wzmożony rozwój i popularność rozwiązań AI. Również w obszarze wytwarzania oprogramowania sztuczna inteligencja wdziera się coraz mocniej. Dotyczy to zarówno przetwarzania danych jak i wsparcia samego procesu 'kodowania’. Czy programistom grozi 'wymarcie’?

Zapraszam Cię do krótkiego felietonu na temat tego, jako wpływ sztuczna inteligencja ma i może mieć na pracę programisty. Nie będę Ci przekazywał wiedzy szczegółowej na temat jak użyć, ale spróbuję poruszyć kilka innych aspektów.

Początkowy zachwyt i efekt WoW

Zaczynając zabawę z AI jak narzędzia wspierającego programowanie można odnieść wrażenie, że jest to coś niesamowitego (bo jest).

Poproś AI o napisanie Twojego CV w oparciu o kilka zdań – zajmuje to bardzo mało czasu – wystarczy wkleić, sformatować i gotowe.

Szukasz fragmentu kodu do szyfrowania w Java z użyciem bezpiecznego algorytmu – proszę bardzo – wynik równie błyskawiczny.

Chciałbyś wygenerowany kod aplikacji SpringBoot działającej Kafka z testami integracyjnymi wykorzystującymi @EmbeddedKafka i Spock – nie ma problemu, dostaniesz szablon aplikacji, plik maven/gradle i testy.

Chcesz kawałek kodu na Arduino dla komunikacji z klawiaturą i wyświetlaczem – proszę bardzo.

Masz duży zbiór logów i był jakiś problem z systemem – jak wyszukać co się stało, zlokalizować problem – też wynik szybki (sekundy zamiast grubych minut).

Jest to pierwsza faza zachwytu:

  • Wspaniałe ułatwienie pracy,
  • W końcu jedno miejsce, gdzie mogę znaleźć wszystkie rozwiązania,
  • Wydaje się, że to nieograniczone możliwości,

Psst… Interesujący artykuł?

Jeżeli podoba Ci się ten artykuł i chcesz takich więcej – dołącz do newslettera. Nie ominą Cię materiały tego typu.

.

Czy to etyczne i co jeśli to wykryją?

Po pewnym czasie (a może i od razu) może pojawić się u Ciebie wątpliwość – czy to OK, że ja korzystam z tego. Przecież podobnie jak teraz szukam odpowiedzi w internecie i kopiuję istniejące (lub nawet rekomendowane) rozwiązania czy nawet kawałki kodu.

Sztuczna inteligencja wydaje się być narzędziem jak inne – po prostu o większych możliwościach i o wiele szybsze. Czemu z tego nie korzystać garściami?

Mogę być lepszy niż inni w pracy (przynajmniej przez jakiś czas) – inni jeszcze tego nie znają,

  • A co jeśli to wykryją (to nie wynik Twojej pracy, rekuter może mieć 'ale’ do Twojego CV)
  • Co jeśli wygenerowany kod zawiera błędy – kto za to odpowiada (tutaj odpowiadam – Ty bo to Ty wziąłeś ten kod).
  • Kto weźmie odpowiedzialność za błąd
    • Wyobraź sobie, że skopiowany kod steruje systemem hamulców samochodu i błąd spowodował śmiertelny wypadek.
    • Albo bęben pralki automatycznej ruszy mimo otwartych drzwi i uszkodzi rękę użytkownika, z powodu nieobsłużonej ścieżki skopiowanego fragmentu kodu

Dokładność wyniku

Dokładność uzyskanego wyniku z narzędzi AI zależy między innymi od przyjętego modelu (a mogą ich być setki tysięcy dla jednego tylko narzędzia), wcześniej zarchiwizowanych zapytań i odpowiedzi.

Wynik może być najbardziej prawdopodobnym wg. użytego modelu rezultatem – czyli może być to w pewnym sensie wynik zaawansowanego wyszukiwania (w bardzo dużym uproszczeniu). I mogą być tutaj różne sytuacje wpływające na dokładność wyniku – na przykład takie jak niżej

  • Ktoś celowo zasila model nieprawidłowymi wynikami, jeśli jest tego dużo może to spowodować, że wyszukowanie pójdzie w złą ścieżkę. Nie można w chwili obecnej wykluczyć takiego celowe działania (wojny hybrydowe, działanie nieuczciwej konkurencji, hakerów etc.)
  • Brak wystarczającej liczby danych porównawczych – może się okazać, że w przypadku odpowiedzi na pytanie o oczekiwany kolor AI. Np. wiemy, że spodziewanym wynikiem dla zapytania powinien być kolor czerwony. Ale AI, nie mając wystarczających danych, może wskazać najbardziej popularny w danym momencie kolor wogóle – czyli np. niebieski.

Prawa autorskie i tajemnica przedsiębiorstwa

Musisz być świadomy tego, w jaki sposób korzystasz z narzędzi. Jak wcześniej wspomniałem, modeli jest mnóstwo i większość firm nie jest w stanie sama takiego modelu stworzyć (przynajmniej na dzień dzisiejszy).

Darmowe rozwiązania AI mają to do siebie, że korzystający uczą system – czyli to, co wprowadzasz i dostajesz na wyjściu, będzie dostępne dla innych.

Kod, który dostaniesz, może być kodem innego programisty, który nieopatrznie wkleił kod z firmy (to jakby umieścił kod na publicznym git) – wielu z nas wie, czym to by się skończyło.

I własnego doświadczenia wiem, że tak jest – znam osoby, które uzyskały wynik w darmowym narzędziu AI, który był częścią prywatnego git innego developera.

Co w takim wypadku się stanie – korzystasz z kodu, do którego nie masz praw. Nie jest istotne to, że korzystasz z darmowego AI – tak samo nielegalne jest ściąganie filmów z darmowych portali.

A wyobraź sobie, że haker dostanie kod krytycznej części systemu bankowego – i oby nie było to przez Twoje pytanie wklejające kawałek kodu.

W wielu firmach aktualnie zabronione jest korzystanie z narzędzi takich jak ChatGPT i zablokowany jest dostęp do takich adresów.

Oczywiście można wykupić model płatny i zapewnić sobie bezpieczeństwo i prywatność.

Ale kiedyś internet też był darmowy, nie było reklam, dostawcy nie korzystali z danych użytkowników i ich preferencji, znalezione dane bardziej wiarygodne.

A co jeśli firma AI zostanie wykupiona – co się stanie z tymi danymi, co z wyciekiem (mogą przecież zwolnić osoby, które by zgłosić do urzędów nieprawidłowości).

Czy można temu ufać – ja, pracując w firmach, gdzie bezpieczeństwo, tajemnica handlowa i przedsiębiorstwa jest na pierwszym miejscu wiem, że nie jest to oczywiste. I jest jakiś powód, dla którego te firmy zabraniają korzystania z tego typu narzędzi (przynajmniej z pewnej części dostawców) – tym powodem jest minimalizacja ryzyka.

Psst… Interesujący artykuł?

Jeżeli podoba Ci się ten artykuł i chcesz takich więcej – dołącz do newslettera. Nie ominą Cię materiały tego typu.

.

Czy sztuczna inteligencja zastąpi programistów

Jest to najczęstsze pytanie, jakie słyszę od kolegów z branży, I odpowiedź brzmi – część z nas na pewno zostanie zastąpiona.

Pewne obszary będą mogły zostać zautomatyzowane, a praca specjalistów IT będzie wymagała większych kompetencji.

Wyobrażam sobie, że np. proces testowania może zostać w dużej części wsparty sztuczną inteligencją.

Podobnie może być z obszarami związanymi z analizą danych.

Jest to niepokojące, ale nie ma raczej odwrotu i trzeba do tego się dostosować. Rynek zweryfikuje wymagania i potrzeby. Konieczne będzie zdobycie nowych kompetencji i ciągły rozwój.

Osoby, które osiądą na laurach, mogą być tym niemile zaskoczone. Zwłaszcza zwiększoną konkurencją na rynku i tym jak szybko trzeba będzie się dostosowywać.

W przyszłości nie wystarczy wyszukać w sieci kawałka kodu i go wkleić. Albo zapytać AI o wynik. I raczej nie będzie akceptowalne aby pracować cały sprint nad jakimś technologicznym POC (który może być wygenerowany).

Będą potrzebne (bardziej niż teraz) np. pogłębione umiejętności związane z praktyczną wiedzą jak stosować zaawansowane techniki inżynieryjne w conajmniej takich obszarach jak:

  • projektowanie – wzorce projektowe (wszelakie), SOLID, projektowanie zmian kompatybilnych wstecznie, REST (Full) API, transakcyjność
  • przetwarzanie asynchroniczne i rozproszone – np. Event Driven Architecture, CQRS, Project Reactor, Vertx
  • architektura – DDD, wzorce architektoniczne, architektura heksagonalna, mikroserwisy, systemy rozproszone
  • automatyzacja – CI/CD, automatyzacja testów, wirtualizacja (docker/Kubernetes),
  • bezpieczeństwo i ochrona danych – Retry, Circuit Breaker, (resilience), Hystrix, GDPR/RODO, szyfrowanie, podatności,

Ta praktyczna wiedza będzie wymagała także pogłębienia wiedzy w zakresie 'narzędzi’ z jakimi pracujesz (Java, moduły Spring, JPA, NoSQL, maven/gradle, Spock, JUnit).

Większy nacisk będzie kładziony na bezpieczeństwo i kwestie własnosci intelektualnej.

Zmiany będą musiały być dostarczane szybciej, co będzie wymagalo tego aby były mniejsze, lepiej zaprojektowane.

Trzeba będzie unikać przekombinowania – nie trzeba stosować wszystkich wzorcow projektowych w kazdym systemie, albo SpringBoot na siłę bo jest wygodnie.

Tego wszystkiego musisz być świadomy – jest jeszcze czas aby się dostosować, douczyć. Ale prawdopodobnie tego czasu nie ma za wiele.

Istnieje także inny 'problem etyczny’ niewspomniany wcześniej.

Pamiętam jak powszechnie do firm wchodziła automatyzacja i oficjele i przedstawiciele biznesu mówili, że to jedyna droga, że będziemy mogli krócej pracować i zachować wypłaty (np. 3-4h dziennie). Roboty/automaty będą w jakiś sposób opodatkowane, aby ludzie mogli 'z czegoś żyć’. Ludzie protestowali. Czy tak się stało – niestety nie.

Podobnie było z informatyzacją – uczestniczyłem w projekcie informatyzacji dużego klienta. Jeden z działów przed wdrożeniem systemu zatrudniał 300 osób. Średni czas oczekiwania na rozpatrzenie sprawy to było 2-3 miesiące. Po informatyzacji zostało 30 osób, czas rozwiązania sprawy spadł to tygodnia-dwóch.

Dobrze dla klienów, ale źle dla pracowników – dostali kilkuletnie odprawy, ale co z tego, jak nie mieli potem pracy. A na ich miejsce w przyszłości przyjdzie tylko 30 innych osób.

Inna kwestia to możliwy 'zanik’ samodzielnego myślenia – po co mam się męczyć, jak AI za mnie to zrobi.

Pojawić się może nadmierne uzależnienie od AI – tak jak z ogniwami paliwowymi, czy gazem/węglem – w dzisiejszych czasach mówi się często o tym, że nie można się uzależnić od jednego dostawcy.

Przykład pewnego uzależnienia to GPS (mocno upraszczam dalej) – nie ma GPS, lub zakłócony GPS i znaczna część przemysłu i transportu 'padnie’. Przed GPS i internetem systemy firm przemysłowe działały, pociągi jeździły a samoloty latały. A teraz pojawiają się głosy że gdyby nie było GPS/GLONASS to byłby z tym niewiarygodnie duży problem. Są przecież mapy papierowe. Drogi czy linie kolejowe nie buduje się z dnia na dzień. Istnieją standardy sieci przemysłowych działające w czasie rzeczywistym – nie wszystko musi być oparce o internet i GPS.

Wyobraź teraz sobie, że diagnozę u lekarza dostaniesz w oparciu o sztuczną inteligencję i w przypadku braku systemu/prądu lekarz nie postawi diagnozy.

Powyżej przytoczyłem kilka możliwych scenariuszy i wybranych zagadnień AI, starając się patrzeć z perspektywy programisty i osoby pracującej.

Czy jestem przeciw AI (bo przytoczyłem kilka własnych wątpliwości) – odpowiedź brzmi ’Nie – nie jestem przeciwko AI’. Może nam (programistom) pomóc w sporym zakresie. Myślę też, że nie mamy innego wyjścia jak dostosować się i korzystać w sposób świadomy i bezpieczny z AI w naszej pracy. Będzie wymagało to od nas dostosowania się, zmiany sposobu postrzegania problemów. I na pewno będzie to wymagało od nas zdobycia dodatkowej wiedzy.

Wiele zależy też od tego, w jaki sposób będzie to realizowane, uregulowane prawnie i jakie kwestie zostaną pominięte.

Może podobnie jak z blockchain ustawodawcy zapewnią odpowiednie mechanizmy dla zwiększenia bezpieczeństwa użycia, zmniejszenia ryzyka i zwiększenia 'moralności’ tych narzędzi.

Podoba Ci się ten artykuł? Weź więcej.

Jeżeli uważasz ten materiał za wartościowy i chcesz więcej treści tego typu – nie przegap ich i otrzymuj je prosto na swoją skrzynkę. Nawiążmy kontakt.

.

Apache Kafka – wydajność vs. gwarancja dostarczenia wiadomości

Jak stworzyć piekielnie szybką albo maksymalnie bezpieczną wersję producenta oraz konsumenta.

Przydatne linki

Gdybyś potrzebował jeszcze więcej:

Jesteś Java Developerem?

Przejdź na wyższy poziom wiedzy 
„Droga do Seniora” 🔥💪

Jesteś Team Leaderem? Masz zespół?

Podnieś efektywność i wiedzę swojego zespołu 👌

Dyskusja