Pradžia / Programavimas / Ar AI pakeis programuotojus

Ar AI pakeis programuotojus

Kas kelis mėnesius socialiniuose tinkluose vėl užvirsta ta pati diskusija – ar programuotojai netrukus liks be darbo, nes ChatGPT, Claude ar Copilot parašys kodą greičiau ir pigiau nei žmogus. Vieni skelbia programavimo profesijos mirtį, kiti tik nusijuokia ir toliau rašo savo mikroservisus. Tiesa, kaip dažnai būna, kažkur per vidurį, tačiau verta pažiūrėti giliau, kas realiai vyksta, o ne pasikliauti antraštėmis.

Kodėl ši tema tokia karšta jau trečius metus iš eilės

2022 metų pabaigoje, kai pasirodė ChatGPT, dalis vadovų iškart pradėjo skaičiuoti, kiek galės sutaupyti atleisdami vystymo komandas. Reikia pripažinti – įrankis tikrai pribloškė. Jis mokėjo parašyti funkciją pagal aprašymą, paaiškinti kodą, net rasti klaidas. Tada atsirado GitHub Copilot, Cursor, Windsurf ir panašūs asistentai, kurie jau integruoti tiesiai į kodo redaktorių ir siūlo autocomplete lygiu, kokio anksčiau niekas nematė.

Tačiau čia svarbu suprasti vieną dalyką – IT sektorius apskritai gyvena hype cikluose. Prisiminkim no-code bumą prieš keletą metų, kai buvo žadama, kad niekam nebereikės programuotojų, nes verslo analitikai patys susikonstruos aplikacijas vilkdami blokelius. Praėjo laikas, ir paaiškėjo, kad sudėtingesnėms sistemoms vis tiek reikia žmonių, kurie supranta architektūrą, duomenų bazes, saugumą. AI rinkos ažiotažas šiek tiek panašus, tik su kur kas galingesniais įrankiais.

Ką AI iš tikrųjų šiandien geba

Būkime sąžiningi – modeliai tikrai gerai atlieka tam tikras užduotis. Jei reikia parašyti standartinę CRUD funkciją, sugeneruoti unit testus, konvertuoti duomenų struktūrą iš JSON į SQL schemą ar parašyti regex, kuris tikrina el. pašto formatą – AI padarys tai per kelias sekundes, ir dažnai geriau nei junior specialistas per pusvalandį.

Taip pat modeliai puikiai tinka:

  • greitam prototipavimui, kai reikia per vieną vakarą sukurti veikiantį demo;
  • dokumentacijos rašymui ir kodo komentarams;
  • refaktoringui – pakeisti kintamųjų pavadinimus, ištraukti funkcijas, supaprastinti sąlygas;
  • klaidų paaiškinimui, kai stack trace atrodo kaip kinų kalba;
  • naujų technologijų mokymuisi, nes galima paklausti „paaiškink kaip vaikui” ir gauti suprantamą atsakymą be reikalo naršyti po dešimt forumų.

Šitie dalykai realiai taupo laiką. Programuotojas, kuris naudoja AI protingai, gali per dieną padaryti pastebimai daugiau, nei darė prieš dvejus metus. Tai faktas, ne prielaida.

Kur AI susimauna, ir kodėl tai ne smulkmena

Dabar apie tai, ką dažnai nutyli entuziastai. AI puikiai rašo kodą, kai užduotis aiški ir turi daug pavyzdžių internete. Bet realus darbas retai atrodo taip gražiai. Didžioji dalis programuotojo laiko sunaudojama ne kodo rašymui, o sprendimų priėmimui – kodėl sistema veikia keistai, kokia architektūra tiks augant komandai iki penkiasdešimt žmonių, kaip suderinti tris skirtingas komandas, kurios turi konfliktuojančius reikalavimus.

AI modeliai vis dar dažnai:

  • sugalvoja neegzistuojančias bibliotekų funkcijas (vadinamosios „haliucinacijos”);
  • nesupranta viso projekto konteksto, ypač jei kodo bazė turi šimtus tūkstančių eilučių ir istorines keistenybes;
  • siūlo sprendimą, kuris veikia lokaliai, bet visiškai netinka production aplinkoje su tikru srautu;
  • nemato saugumo spragų, jei jos nėra tipinės iš mokymosi duomenų;
  • negeba paaiškinti verslo logikos priežasčių – kodėl tam tikra taisyklė egzistuoja, nes ji buvo priimta prieš trejus metus po incidento, kurio niekur nėra užrašyta.

Vienas kolega neseniai pasakojo, kaip paprašė AI sugeneruoti autentifikacijos modulį – kodas atrodė tvarkingai, testai praėjo, bet slaptažodžiai buvo saugomi be tinkamo hash’avimo, tiesiog nes pavyzdys internete buvo pasenęs. Jei nebūtų peržiūrėjęs žmogus su patirtimi, tai būtų tapę saugumo skandalu. Štai kodėl AI vis dar reikia priežiūros – jis nesupranta pasekmių, jis tik atkuria tikimybiškai tinkamiausią seką žodžių pagal mokymosi duomenis.

Programuotojo vaidmuo transformuojasi, bet nedingsta

Panašią situaciją jau matėme istorijoje. Kai atsirado aukšto lygio programavimo kalbos, buvo baiminamasi, kad asemblerio žinovai liks be darbo. Kai atsirado frameworkai, buvo manoma, kad nebereikės tiek daug backend specialistų. Kiekvieną kartą darbas ne išnyko, o pasikeitė – tapo abstraktesnis, orientuotas į aukštesnio lygio sprendimus, o rutininės užduotys automatizuotos.

AI su programavimu daro tą patį, tik kur kas greičiau. Programuotojas vis dažniau tampa ne tuo, kuris rašo kiekvieną eilutę, o tuo, kuris:

  • formuluoja tikslų techninį reikalavimą (prompt inžinerija tapo realiu įgūdžiu);
  • peržiūri, testuoja ir taiso AI sugeneruotą kodą;
  • priima architektūrinius sprendimus, kurių AI negali priimti be žmogaus konteksto;
  • atsako už kokybę ir saugumą galutiniame produkte.

Kitaip tariant, programuotojo darbas vis labiau primena redaktoriaus ir architekto derinį, o ne vien rašytojo. Tai nereiškia mažiau atsakomybės – priešingai, atsakomybė didėja, nes reikia suprasti ne tik kaip parašyti kodą, bet ir kaip įvertinti, ar mašinos sugeneruotas sprendimas iš tiesų tinkamas.

Junior specialistams situacija sudėtingesnė nei senioms

Čia turbūt slypi didžiausia realaus rizikos zona. Kompanijos vis dažniau samdo mažiau junior programuotojų, nes rutininius uždavinius, kuriuos anksčiau atlikdavo pradedantieji, dabar greičiau atlieka AI su seniorų priežiūra. Tai kelia realų klausimą – iš kur ateis rytojaus senior specialistai, jei jiems nebus suteikiama galimybė augti per paprastas užduotis?

Kita vertus, tie junior specialistai, kurie moka protingai naudoti AI kaip mokymosi įrankį – klausinėti, kodėl kodas parašytas būtent taip, prašyti paaiškinti alternatyvas, tikrinti savo sprendimus prieš AI generuotus – realiai mokosi greičiau nei anksčiau. Skirtumas tarp to, kuris naudoja AI kaip kкостelį, ir to, kuris naudoja kaip mentorystę, per porą metų tampa milžiniškas.

Praktiniai patarimai, kaip išlikti aktualiam

Jeigu jau baigėte skaityti visą teorinę dalį ir norite konkretaus veiksmų plano, štai kelios rekomendacijos, kurios realiai padeda:

  • Nesivaikykite AI kaip nuo maro, bet ir nesikliaukite juo aklai. Naudokite kaip greitą pirmą juodraštį, tada peržiūrėkite kiekvieną eilutę, tarsi ją būtų parašęs junior kolega, kurio darbą reikia patikrinti.
  • Gilinkitės į fundamentalius dalykus. Duomenų struktūros, algoritmų sudėtingumas, tinklo protokolai, saugumo principai – šitie dalykai nesensta ir leidžia jums įvertinti, ar AI pasiūlytas sprendimas apskritai teisingas.
  • Mokykitės skaityti kodą, ne tik rašyti. Kadangi vis daugiau kodo generuojama automatiškai, gebėjimas greitai suprasti svetimą kodo bazę tampa vertingesnis nei greitis rašant nuo nulio.
  • Investuokite laiką į architektūrą ir sistemų dizainą. Tai sritis, kur AI vis dar smarkiai atsilieka, nes reikia turėti platesnį verslo ir techninį kontekstą vienu metu.
  • Praktikuokite prompt formulavimą kaip įgūdį. Gebėjimas aiškiai apibrėžti užduotį AI modeliui – tai iš esmės tas pats gebėjimas, kurio reikia rašant technines specifikacijas žmonėms.
  • Sekite saugumo temas atidžiau nei anksčiau. Kadangi AI dažnai generuoja pasenusius ar nesaugius pavyzdžius, žmogaus, kuris supranta saugumo principus, vertė tik auga.

Vietoj išvadų – žvilgsnis į arklio ir automobilio istoriją

Yra sena analogija, kurią mėgstu naudoti kalbant apie technologinius perversmus – kai atsirado automobiliai, arklių augintojai nedingo iš žemės paviršiaus, bet jų vaidmuo visiškai pasikeitė. Vieni perėjo į veterinariją, kiti į sportinį jojimą, treti tiesiog liko be darbo, nes nesugebėjo prisitaikyti. Panašiai bus ir su programavimu – profesija nedings, bet ji taps kitokia, ir tie, kurie atsisakys keistis, tikrai jausis nejaukiai per ateinantį dešimtmetį.

AI nepakeis programuotojų kaip profesijos, bet jis tikrai pakeis tai, ką reiškia būti geru programuotoju. Rutininis kodo rašymas taps vis labiau automatizuotas, o vertė persikels į sprendimų priėmimą, kokybės kontrolę ir gebėjimą matyti didesnį vaizdą. Tie, kurie žiūri į AI kaip į priešą, praleis progą tapti efektyvesni. Tie, kurie žiūri kaip į stebuklingą sprendimą visoms problemoms, greičiausiai susidurs su nemaloniomis staigmenomis production aplinkoje.

Realistiškiausia pozicija – suprasti AI kaip labai galingą, bet kartais nepatikimą kolegą, kuris niekada nemiega, dirba greitai, bet kartais meluoja su absoliučiu pasitikėjimu savimi. Su tokiu kolega dirbti galima ir netgi verta, tačiau paskutinį žodį vis tiek turi tarti žmogus, kuris supranta, kas iš tikrųjų vyksta po kodo paviršiumi.