» Kdor zadnji pride ven, izklopi urejevalnik kode. « Ta šaljiva fraza se je pojavila na razvijalskih forumih in odraža zaskrbljen humor glede vzpona kodirnih asistentov z umetno inteligenco. Ker modeli umetne inteligence postajajo vse bolj sposobni pisati kodo, se mnogi programerji sprašujejo, ali človeške razvijalce čaka ista usoda kot upravljavce dvigal ali upravljavce telefonskih central – delovna mesta, ki jih avtomatizacija odpravlja. Leta 2024 so drzni naslovi razglašali, da bi umetna inteligenca kmalu lahko napisala vso našo kodo, zaradi česar bi človeški razvijalci ostali brez dela. Toda za navdušenjem in senzacionalizmom je resničnost veliko bolj niansirana.
Da, umetna inteligenca lahko zdaj ustvarja kodo hitreje kot kateri koli človek, toda kako dobra je ta koda in ali lahko umetna inteligenca sama obvlada celoten življenjski cikel razvoja programske opreme? Večina strokovnjakov pravi »ne tako hitro«. Vodilni na področju programskega inženirstva, kot je izvršni direktor Microsofta Satya Nadella, poudarjajo, da »umetna inteligenca ne bo nadomestila programerjev, ampak bo postala bistveno orodje v njihovem arzenalu. Gre za to, da ljudem omogočimo, da naredijo več, ne manj.« ( Bo umetna inteligenca nadomestila programerje? Resnica za navdušenjem | avtor The PyCoach | Artificial Corner | marec 2025 | Medium ) Podobno je Jeff Dean, vodja oddelka za umetno inteligenco pri Googlu, ugotovil, da čeprav umetna inteligenca lahko obvladuje rutinske naloge kodiranja, »jim še vedno manjka ustvarjalnosti in veščin reševanja problemov« – prav tistih lastnosti, ki jih prinašajo človeški razvijalci. Celo Sam Altman, izvršni direktor OpenAI, priznava, da je današnja umetna inteligenca »zelo dobra pri nalogah«, vendar »grozna pri polnih delih« brez človeškega nadzora. Skratka, umetna inteligenca je odlična pri pomoči pri delih dela, vendar ni sposobna popolnoma prevzeti programerjevega dela od začetka do konca.
Ta bela knjiga ponuja iskren in uravnotežen pogled na vprašanje »Ali bo umetna inteligenca nadomestila programerje?«. Preučujemo, kako umetna inteligenca danes vpliva na vloge razvijalcev programske opreme in kakšne spremembe nas čakajo. S primeri iz resničnega sveta in nedavnimi orodji (od GitHub Copilot do ChatGPT) raziskujemo, kako se lahko razvijalci prilagajajo, prilagajajo in ostanejo relevantni, ko se umetna inteligenca razvija. Namesto poenostavljenega odgovora z da ali ne bomo videli, da je prihodnost sodelovanje med umetno inteligenco in človeškimi razvijalci. Cilj je izpostaviti praktične vpoglede v to, kaj lahko razvijalci storijo, da bi uspevali v dobi umetne inteligence – od sprejemanja novih orodij do učenja novih veščin in napovedi, kako bi se lahko programerske kariere razvijale v prihodnjih letih.
Umetna inteligenca v razvoju programske opreme danes
Umetna inteligenca se je hitro vpletla v sodobni potek dela pri razvoju programske opreme. Orodja, ki temeljijo na umetni inteligenci, še zdaleč niso znanstvena fantastika, temveč že pišejo in pregledujejo kodo , avtomatizirajo dolgočasna opravila in izboljšujejo produktivnost razvijalcev. Razvijalci danes uporabljajo umetno inteligenco za ustvarjanje delčkov kode, funkcije samodejnega dokončanja, odkrivanje napak in celo za izdelavo testnih primerov ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ) ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ). Z drugimi besedami, umetna inteligenca prevzema grobo delo in standardne načrte, kar programerjem omogoča, da se osredotočijo na bolj kompleksne vidike ustvarjanja programske opreme. Oglejmo si nekaj pomembnih zmogljivosti in orodij umetne inteligence, ki trenutno spreminjajo programiranje:
-
Generiranje kode in samodejno dokončanje: Sodobni pomočniki za kodiranje z umetno inteligenco lahko ustvarijo kodo na podlagi pozivov v naravnem jeziku ali delnega konteksta kode. Na primer, GitHub Copilot (zgrajen na modelu Codex podjetja OpenAI) se integrira z urejevalniki in med tipkanjem predlaga naslednjo vrstico ali blok kode. Uporablja obsežen nabor učnih kod odprte kode za ponujanje predlogov, ki se zavedajo konteksta, in pogosto lahko dokonča celotne funkcije samo s komentarjem ali imenom funkcije. Podobno ChatGPT (GPT-4) generira kodo za določeno nalogo, ko v preprostem jeziku opišete, kaj potrebujete. Ta orodja lahko v nekaj sekundah pripravijo standardno kodo, od preprostih pomožnih funkcij do rutinskih operacij CRUD.
-
Odkrivanje in testiranje hroščev: Umetna inteligenca pomaga tudi pri odkrivanju napak in izboljšanju kakovosti kode. Orodja za statično analizo in linterji, ki jih poganja umetna inteligenca, lahko z učenjem iz preteklih vzorcev hroščev označijo morebitne hrošče ali varnostne ranljivosti. Nekatera orodja umetne inteligence samodejno ustvarijo enotne teste ali predlagajo testne primere z analizo poti kode. To pomeni, da lahko razvijalec dobi takojšnje povratne informacije o robnih primerih, ki jih je morda spregledal. Z zgodnjim odkrivanjem hroščev in predlaganjem popravkov umetna inteligenca deluje kot neutrudni pomočnik za zagotavljanje kakovosti, ki dela skupaj z razvijalcem.
-
Optimizacija in refaktoriranje kode: Druga uporaba umetne inteligence je predlaganje izboljšav obstoječe kode. Na podlagi delčka kode lahko umetna inteligenca priporoči učinkovitejše algoritme ali čistejše implementacije s prepoznavanjem vzorcev v kodi. Na primer, lahko predlaga bolj idiomatsko uporabo knjižnice ali označi odvečno kodo, ki jo je mogoče refaktorirati. To pomaga zmanjšati tehnični dolg in izboljšati delovanje. Orodja za refaktoriranje, ki temeljijo na umetni inteligenci, lahko preoblikujejo kodo, da se drži najboljših praks, ali posodobijo kodo na nove različice API-ja, kar razvijalcem prihrani čas pri ročnem čiščenju.
-
DevOps in avtomatizacija: Poleg pisanja kode umetna inteligenca prispeva tudi k procesom gradnje in uvajanja. Inteligentna orodja za CI/CD uporabljajo strojno učenje za napovedovanje, kateri testi bodo verjetno neuspešni, ali za določanje prioritet določenih opravil gradnje, s čimer postane cevovod neprekinjene integracije hitrejši in učinkovitejši. Umetna inteligenca lahko analizira produkcijske dnevnike in meritve delovanja, da bi odkrila težave ali predlagala optimizacije infrastrukture. Pravzaprav umetna inteligenca pomaga ne le pri kodiranju, temveč v celotnem življenjskem ciklu razvoja programske opreme – od načrtovanja do vzdrževanja.
-
Vmesniki in dokumentacija v naravnem jeziku: Vidimo tudi, da umetna inteligenca omogoča bolj naravne interakcije z razvojnimi orodji. Razvijalci lahko dobesedno prosijo umetno inteligenco, naj izvede naloge (»generira funkcijo, ki izvede X« ali »razloži to kodo«) in dobi rezultate. Klepetalni roboti umetne inteligence (kot je ChatGPT ali specializirani razvojni asistenti) lahko odgovarjajo na programerska vprašanja, pomagajo pri dokumentaciji in celo pišejo projektno dokumentacijo ali objavljajo sporočila na podlagi sprememb kode. To premosti vrzel med človeškim namenom in kodo, zaradi česar je razvoj dostopnejši tistim, ki lahko opišejo, kaj želijo.
-

Razvijalci uporabljajo orodja umetne inteligence: Raziskava iz leta 2023 kaže, da je kar 92 % razvijalcev uporabljalo orodja za kodiranje z umetno inteligenco – bodisi pri delu, pri osebnih projektih ali oboje. Le majhnih 8 % jih je poročalo, da pri kodiranju ne uporabljajo nobene pomoči umetne inteligence. Ta grafikon kaže, da dve tretjini razvijalcev uporabljata orodja umetne inteligence tako pri delu kot zunaj njega, četrtina pa jih uporablja izključno pri delu, majhna manjšina pa le zunaj njega. Bistvo je jasno: kodiranje s pomočjo umetne inteligence je med razvijalci hitro postalo del mainstreama ( Raziskava razkriva vpliv umetne inteligence na izkušnjo razvijalcev – blog GitHub ).
To širjenje orodij umetne inteligence v razvoju je privedlo do večje učinkovitosti in zmanjšanja napornega kodiranja. Izdelki nastajajo hitreje, saj umetna inteligenca pomaga ustvarjati standardno kodo in obvladovati ponavljajoča se opravila ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ) ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ). Orodja, kot je Copilot, lahko celo predlagajo celotne algoritme ali rešitve, ki »morda niso takoj očitne človeškim razvijalcem«, zahvaljujoč učenju iz ogromnih naborov podatkov kode. Primerov iz resničnega sveta je veliko: inženir lahko od ChatGPT zahteva, naj implementira funkcijo razvrščanja ali najde napako v njihovi kodi, umetna inteligenca pa bo v nekaj sekundah ustvarila osnutek rešitve. Podjetja, kot sta Amazon in Microsoft, so v svoje razvojne ekipe namestila programerje umetne inteligence v parih (Amazonov CodeWhisperer in Microsoftov Copilot), ki poročajo o hitrejšem opravljanju nalog in manj urah, porabljenih za standardno kodo. Pravzaprav 70 % razvijalcev, anketiranih v anketi Stack Overflow iz leta 2023, povedalo, da že uporabljajo ali nameravajo uporabljati orodja umetne inteligence v svojem razvojnem procesu ( 70 % razvijalcev uporablja orodja za kodiranje z umetno inteligenco, 3 % pa zelo zaupa njihovi natančnosti - ShiftMag ). Najbolj priljubljena pomočnika sta ChatGPT (ki ga uporablja ~83 % anketirancev) in GitHub Copilot (~56 %), kar kaže, da sta splošna pogovorna umetna inteligenca in v integrirano integrirano razvojno okolje (IDE) vgrajena pomočnika ključnega pomena. Razvijalci se na ta orodja obračajo predvsem za povečanje produktivnosti (navaja ~33 % anketirancev) in pospešitev učenja (25 %), medtem ko jih približno 25 % uporablja za večjo učinkovitost z avtomatizacijo ponavljajočega se dela.
Pomembno je omeniti, da vloga umetne inteligence v programiranju ni povsem nova – njeni elementi obstajajo že leta (pomislite na samodejno dokončanje kode v integriranih razvojnih okoljih (IDE) ali ogrodjih za avtomatizirano testiranje). Toda zadnji dve leti sta bili prelomni. Pojav zmogljivih modelov velikih jezikov (kot sta serija GPT podjetja OpenAI in AlphaCode podjetja DeepMind) je dramatično razširil možnosti. AlphaCode pritegnil pozornost medijev, saj se je uvrstil na tekmovalno raven programerskega tekmovanja in dosegel približno 54-odstotno uvrstitev pri kodirnih izzivih – v bistvu se je izenačil s spretnostjo povprečnega človeškega tekmovalca ( AlphaCode podjetja DeepMind se izenačuje s povprečno programersko spretnostjo ). To je bilo prvič, da se je sistem umetne inteligence konkurenčno na programerskih tekmovanjih. Vendar pa je povedno, da je bil celo AlphaCode z vso svojo spretnostjo še vedno daleč od tega, da bi premagal najboljše človeške programerje. Na teh tekmovanjih je AlphaCode lahko rešil približno 30 % problemov v dovoljenih poskusih, medtem ko vrhunski človeški programerji rešijo >90 % problemov z enim samim poskusom. Ta vrzel poudarja, da čeprav lahko umetna inteligenca do določene mere obvladuje dobro definirane algoritmične naloge, pa najtežji problemi, ki zahtevajo globoko razmišljanje in iznajdljivost, ostajajo človeška trdnjava .
Skratka, umetna inteligenca se je trdno ustalila v vsakodnevnem naboru orodij razvijalcev. Od pomoči pri pisanju kode do optimizacije uvajanja se dotika vseh delov razvojnega procesa. Danes je odnos v veliki meri simbiotičen: umetna inteligenca deluje kot kopilot (primerno poimenovan), ki pomaga razvijalcem kodirati hitreje in z manj frustracijami, namesto kot neodvisen avtopilot, ki lahko leti sam. V naslednjem razdelku se bomo poglobili v to, kako ta vključitev orodij umetne inteligence spreminja vlogo razvijalcev in naravo njihovega dela, na bolje ali na slabše.
Kako umetna inteligenca spreminja vloge in produktivnost razvijalcev
Ker umetna inteligenca opravlja več rutinskega dela, se vloga razvijalca programske opreme dejansko začenja razvijati. Namesto da bi razvijalci ure in ure pisali standardno kodo ali odpravljali napake, lahko te naloge preložijo na svoje pomočnike umetne inteligence. To razvijalčevo pozornost preusmerja k reševanju problemov na višji ravni, arhitekturi in ustvarjalnim vidikom programskega inženiringa. V bistvu umetna inteligenca dopolnjuje razvijalce in jim omogoča, da so bolj produktivni in potencialno bolj inovativni. Toda ali to pomeni manj programerskih delovnih mest ali preprosto drugačno vrsto dela? Raziščimo vpliv na produktivnost in vloge:
Povečanje produktivnosti: Po večini poročil in zgodnjih študij orodja za kodiranje z umetno inteligenco znatno povečujejo produktivnost razvijalcev. Raziskava GitHuba je pokazala, da so razvijalci, ki uporabljajo Copilot, lahko opravili naloge veliko hitreje kot tisti brez pomoči umetne inteligence. V enem poskusu so razvijalci s pomočjo Copilota v povprečju rešili kodirno nalogo 55 % hitreje – za to so potrebovali približno 1 uro in 11 minut namesto 2 uri in 41 minut brez nje ( Raziskava: kvantifikacija vpliva GitHub Copilota na produktivnost in srečo razvijalcev - Blog GitHub ). To je presenetljivo povečanje hitrosti. Ne gre samo za hitrost; razvijalci poročajo, da pomoč umetne inteligence pomaga zmanjšati frustracije in »prekinitve pretoka«. V anketah je 88 % razvijalcev, ki uporabljajo Copilot, dejalo, da jih je naredil bolj produktivne in jim omogočil, da se osredotočijo na bolj zadovoljujoče delo ( Kolikšen odstotek razvijalcev je dejal, da github copilot naredi ... ). Ta orodja pomagajo programerjem, da ostanejo »v coni« z obravnavanjem dolgočasnih nalog, kar posledično prihrani mentalno energijo za težje probleme. Posledično mnogi razvijalci menijo, da je kodiranje postalo bolj prijetno – manj mučnega dela in več ustvarjalnosti.
Spreminjanje vsakodnevnega dela: Vsakodnevni potek dela programerja se spreminja skupaj s temi izboljšavami produktivnosti. Veliko »napornega dela« – pisanje standardnih kod, ponavljanje običajnih vzorcev, iskanje sintakse – je mogoče prenesti na umetno inteligenco. Na primer, namesto da bi ročno napisal podatkovni razred z getterji in setterji, lahko razvijalec preprosto pozove umetno inteligenco, naj ga ustvari. Namesto da bi prečesal dokumentacijo, da bi našel pravi klic API-ja, lahko razvijalec vpraša umetno inteligenco v naravnem jeziku. To pomeni, da razvijalci porabijo relativno manj časa za rutinsko kodiranje in več časa za naloge, ki zahtevajo človeško presojo . Ko umetna inteligenca prevzame pisanje preprostih 80 % kode, se razvijalčevo delo preusmeri na nadzor nad izhodom umetne inteligence (pregled predlogov kode, njihovo testiranje) in reševanje zapletenih 20 % težav, ki jih umetna inteligenca ne more ugotoviti. V praksi lahko razvijalec začne svoj dan s triažo zahtevkov za prevzem, ki jih ustvari umetna inteligenca, ali pregledom serije popravkov, ki jih predlaga umetna inteligenca, namesto da bi vse te spremembe pisal iz nič.
Sodelovanje in dinamika ekipe: Zanimivo je, da umetna inteligenca vpliva tudi na dinamiko ekipe. Z avtomatizacijo rutinskih nalog lahko ekipe potencialno dosežejo več z manj mlajšimi razvijalci, ki so dodeljeni mukotrpnemu delu. Nekatera podjetja poročajo, da so njihovi višji inženirji lahko bolj samozadostni – s pomočjo umetne inteligence lahko hitro izdelajo prototipe funkcij, ne da bi potrebovali mlajšega inženirja za začetne osnutke. Vendar to sproža nov izziv: mentorstvo in izmenjavo znanja. Namesto da bi se mlajši inženirji učili z opravljanjem preprostih nalog, se bodo morda morali naučiti, kako učinkovito upravljati rezultate umetne inteligence. Sodelovanje v ekipi bi se lahko preusmerilo v dejavnosti, kot so skupno izpopolnjevanje pozivov umetne inteligence ali pregledovanje kode, ki jo ustvari umetna inteligenca, za odkrivanje pasti. Pozitivna stran je, da bi lahko vsak član ekipe, ki ima pomočnika umetne inteligence, izenačil pogoje in omogočil več časa za razprave o oblikovanju, ustvarjalno brainstorming in reševanje kompleksnih uporabniških zahtev, ki jih nobena umetna inteligenca trenutno ne razume takoj. Pravzaprav več kot štirje od petih razvijalcev verjamejo, da bodo orodja za kodiranje z umetno inteligenco izboljšala sodelovanje v skupini ali jim vsaj omogočila več sodelovanja pri oblikovanju in reševanju problemov, kažejo ugotovitve ankete GitHub iz leta 2023 ( Anketa razkriva vpliv umetne inteligence na izkušnjo razvijalcev - Blog GitHub ).
Vpliv na delovna mesta: Glavno vprašanje je, ali bo umetna inteligenca zmanjšala povpraševanje po programerjih (saj je vsak programer zdaj bolj produktiven) ali pa bo preprosto spremenila zahtevane veščine. Zgodovinski precedens z drugimi avtomatizacijami (kot je porast orodij devops ali programskih jezikov višje ravni) kaže, da se delovna mesta razvijalcev ne bodo toliko odpravila, temveč se bodo povečala . Dejansko industrijski analitiki napovedujejo, se bodo delovna mesta v programskem inženirstvu še naprej povečevala , vendar se bo narava teh vlog spremenila. Nedavno poročilo Gartnerja napoveduje, da bo do leta 2027 50 % organizacij za programsko inženirstvo sprejelo platforme za "inteligenco programskega inženirstva", razširjene z umetno inteligenco, da bi povečale produktivnost , v primerjavi s samo 5 % leta 2024 ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ). To kaže, da bodo podjetja široko integrirala umetno inteligenco, vendar pomeni, da bodo razvijalci delali s temi inteligentnimi platformami. Podobno svetovalno podjetje McKinsey napoveduje, da bo umetna inteligenca sicer lahko avtomatizirala številne naloge, vendar bo približno 80 % programerskih delovnih mest še vedno zahtevalo človeka v zanki in bo ostalo "osredotočeno na človeka" . Z drugimi besedami, za večino razvijalskih delovnih mest bomo še vedno potrebovali ljudi, vendar se lahko opisi delovnih mest spremenijo.
Eden od možnih premikov je pojav vlog, kot sta »inženir programske opreme za umetno inteligenco« ali »inženir hitrega razvoja« – razvijalci, specializirani za gradnjo ali orkestriranje komponent umetne inteligence. Že opažamo, da povpraševanje po razvijalcih s strokovnim znanjem na področju umetne inteligence/strojnega učenja strmo narašča. Glede na analizo Indeed so tri najbolj iskana delovna mesta, povezana z umetno inteligenco , znanstvenik podatkov, inženir programske opreme in inženir strojnega učenja , povpraševanje po teh vlogah pa se je v zadnjih treh letih več kot podvojilo ( Ali obstaja prihodnost za inženirje programske opreme? Vpliv umetne inteligence [2024] ). Od tradicionalnih inženirjev programske opreme se vse bolj pričakuje, da razumejo osnove strojnega učenja ali da integrirajo storitve umetne inteligence v aplikacije. »Umetna inteligenca ne bo odveč razvijalcev , temveč bi lahko dvignila poklic na višji nivo in jim omogočila, da se osredotočijo na naloge in inovacije na višji ravni.« ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost «) Številne rutinske naloge kodiranja bi morda lahko opravljala umetna inteligenca, vendar se bodo razvijalci bolj ukvarjali z načrtovanjem sistemov, integracijo modulov, zagotavljanjem kakovosti in reševanjem novih problemov. Višji inženir iz enega podjetja, ki se osredotoča na umetno inteligenco, je to dobro povzel: umetna inteligenca ne nadomešča naših razvijalcev; ojača jih. En sam razvijalec, oborožen z zmogljivimi orodji umetne inteligence, lahko opravi delo večih, vendar ta razvijalec zdaj prevzema delo, ki je bolj kompleksno in vplivno.
Primer iz resničnega sveta: Razmislite o scenariju podjetja za programsko opremo, ki je integriralo GitHub Copilot za vse svoje razvijalce. Takojšen učinek je bil opazno zmanjšanje časa, porabljenega za pisanje enotnih testov in standardne kode. Mlajša razvijalka je ugotovila, da lahko s Copilotom hitro ustvari 80 % kode za novo funkcijo, nato pa porabi čas za prilagajanje preostalih 20 % in pisanje integracijskih testov. Njena produktivnost v smislu izhodne kode se je skoraj podvojila, a še bolj zanimivo se je spremenila narava njenega prispevka – postala je bolj pregledovalka kode in oblikovalka testov za kodo, napisano z umetno inteligenco. Ekipa je tudi opazila, da so pregledi kode začeli odkrivati napake umetne inteligence in ne človeških tipkarskih napak. Copilot je na primer občasno predlagal negotovo implementacijo šifriranja; človeški razvijalci so jih morali opaziti in popraviti. Tovrstni primer kaže, da sta človeški nadzor in strokovno znanje, medtem ko se je izhodna koda povečala, postala še bolj ključna v delovnem procesu.
Če povzamemo, umetna inteligenca nedvomno spreminja način dela razvijalcev: omogoča jim hitrejše delo in jim omogoča reševanje ambicioznejših problemov, hkrati pa od njih zahteva tudi izpopolnjevanje znanj in spretnosti (tako pri izkoriščanju umetne inteligence kot pri razmišljanju na višji ravni). To ni toliko zgodba o tem, da »umetna inteligenca jemlje službe«, temveč bolj zgodba o tem, da »umetna inteligenca spreminja službe«. Razvijalci, ki se naučijo učinkovito uporabljati ta orodja, lahko pomnožijo svoj vpliv – kliše, ki ga pogosto slišimo, je: »Umetna inteligenca ne bo nadomestila razvijalcev, toda razvijalci, ki uporabljajo umetno inteligenco, lahko nadomestijo tiste, ki je ne uporabljajo.« V naslednjih razdelkih bomo raziskali, zakaj so človeški razvijalci še vedno bistveni (česa umetna inteligenca ne zmore dobro) in kako lahko razvijalci prilagodijo svoje znanje in spretnosti, da bodo uspevali skupaj z umetno inteligenco.
Omejitve umetne inteligence (Zakaj ljudje ostajajo vitalni)
Kljub svojim impresivnim zmogljivostim ima današnja umetna inteligenca jasne omejitve , ki preprečujejo, da bi človeške programerje naredila zastarele. Razumevanje teh omejitev je ključnega pomena za razumevanje, zakaj so programerji še vedno zelo potrebni v procesu razvoja. Umetna inteligenca je močno orodje, vendar ni čarobna palica, ki bi lahko nadomestila ustvarjalnost, kritično mišljenje in kontekstualno razumevanje človeškega razvijalca. Tukaj je nekaj temeljnih pomanjkljivosti umetne inteligence pri programiranju in ustrezne prednosti človeških razvijalcev:
-
Pomanjkanje pravega razumevanja in ustvarjalnosti: Trenutni modeli umetne inteligence ne razumejo kode ali problemov zares tako kot ljudje; prepoznavajo vzorce in na podlagi učnih podatkov izbruhnejo verjetne rezultate. To pomeni, da se lahko umetna inteligenca spopada z nalogami, ki zahtevajo izvirne, ustvarjalne rešitve ali poglobljeno razumevanje novih problemskih področij. Umetna inteligenca morda lahko ustvari kodo, ki ustreza specifikaciji, ki jo je že videla, če pa jo prosite, naj oblikuje nov algoritem za problem brez primere ali naj interpretira dvoumno zahtevo, bo verjetno omahovala. Kot je dejal neki opazovalec, današnja umetna inteligenca »nima ustvarjalnih in kritičnih miselnih sposobnosti, ki jih prinašajo človeški razvijalci«. ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ) Ljudje blestijo v razmišljanju izven okvirjev – združevanju znanja o domeni, intuicije in ustvarjalnosti za oblikovanje programskih arhitektur ali reševanje kompleksnih problemov. Umetna inteligenca pa je v nasprotju s tem omejena na vzorce, ki se jih je naučila; če se problem ne ujema dobro s temi vzorci, lahko ustvari napačno ali nesmiselno kodo (pogosto samozavestno!). Inovacije v programski opremi – ustvarjanje novih funkcij, novih uporabniških izkušenj ali novih tehničnih pristopov – ostajajo dejavnost, ki jo poganja človek.
-
Razumevanje konteksta in širše slike: Gradnja programske opreme ni le pisanje vrstic kode. Vključuje razumevanje razloga za kodo – poslovnih zahtev, potreb uporabnikov in konteksta, v katerem programska oprema deluje. Umetna inteligenca ima zelo ozko okno konteksta (običajno omejeno na vnos, ki ga prejme v danem trenutku). Ne razume zares splošnega namena sistema ali kako en modul interagira z drugim, razen tistega, kar je izrecno navedeno v kodi. Posledično lahko umetna inteligenca ustvari kodo, ki tehnično deluje za majhno nalogo, vendar se ne ujema dobro v širšo sistemsko arhitekturo ali krši neko implicitno zahtevo. Za zagotovitev, da je programska oprema usklajena s poslovnimi cilji in pričakovanji uporabnikov, so potrebni človeški razvijalci. Zasnova kompleksnih sistemov – razumevanje, kako lahko sprememba v enem delu vpliva na druge, kako uravnotežiti kompromise (kot sta zmogljivost in berljivost) in kako načrtovati dolgoročni razvoj kodne baze – je nekaj, česar umetna inteligenca danes ne more storiti. V obsežnih projektih s tisoči komponentami umetna inteligenca »vidi drevesa, ne pa gozda«. Kot je navedeno v eni od analiz, se »umetna inteligenca bori z razumevanjem celotnega konteksta in kompleksnosti obsežnih programskih projektov«, vključno s poslovnimi zahtevami in vidiki uporabniške izkušnje ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ). Ljudje ohranjajo vizijo celotne slike.
-
Reševanje zdrave pameti in dvoumnosti: Zahteve v resničnih projektih so pogosto nejasne ali se razvijajo. Človeški razvijalec lahko išče pojasnila, postavlja razumne predpostavke ali zavrača nerealne zahteve. Umetna inteligenca nima zdrave pameti ali sposobnosti postavljanja pojasnjevalnih vprašanj (razen če so izrecno zankana v pozivu, in tudi takrat nima zagotovila, da bo pravilno odgovorila). Zato je lahko koda, ki jo ustvari umetna inteligenca, včasih tehnično pravilna, vendar funkcionalno napačna – nima presoje, da bi vedela, kaj je uporabnik v resnici nameraval, če so navodila nejasna. Nasprotno pa lahko človeški programer interpretira zahtevo na visoki ravni (»naredi ta uporabniški vmesnik bolj intuitiven« ali »aplikacija naj elegantno obravnava nepravilne vnose«) in ugotovi, kaj je treba storiti v kodi. Umetna inteligenca bi potrebovala izjemno podrobne, nedvoumne specifikacije, da bi resnično nadomestila razvijalca, in celo učinkovito pisanje takšnih specifikacij je prav tako težko kot pisanje same kode. Kot je bilo ustrezno zapisano v članku Forbes Tech Councila, bi morala umetna inteligenca, da bi dejansko nadomestila razvijalce, razumeti nejasna navodila in se prilagajati kot človek – raven sklepanja, ki je trenutna umetna inteligenca nima ( objava Sergija Kuzina - LinkedIn ).
-
Zanesljivost in »halucinacije«: Današnji generativni modeli umetne inteligence imajo dobro znano pomanjkljivost: lahko ustvarijo napačne ali popolnoma izmišljene izhode, pojav, ki se pogosto imenuje halucinacija . V kodiranju to lahko pomeni, da umetna inteligenca napiše kodo, ki je videti verjetna, vendar je logično napačna ali negotova. Razvijalci ne morejo slepo zaupati predlogom umetne inteligence. V praksi vsak del kode, napisane z umetno inteligenco, zahteva skrben pregled in testiranje s strani človeka . Podatki ankete Stack Overflow to odražajo – od tistih, ki uporabljajo orodja umetne inteligence, le 3 % zelo zaupa v natančnost izhoda umetne inteligence, majhen odstotek pa ji dejansko aktivno ne zaupa ( 70 % razvijalcev uporablja orodja za kodiranje umetne inteligence, 3 % zelo zaupa v njihovo natančnost – ShiftMag ). Velika večina razvijalcev predloge umetne inteligence obravnava kot koristne namige, ne kot sveto pismo. To nizko zaupanje je upravičeno, ker lahko umetna inteligenca naredi nenavadne napake, ki jih noben kompetenten človek ne bi naredil (kot so napake, ki se razlikujejo za ena, uporaba zastarelih funkcij ali ustvarjanje neučinkovitih rešitev), ker o problemu v resnici ne razmišlja. Kot je ironično zapisal en komentar na forumu: »Oni (umetna inteligenca) veliko halucinirajo in sprejemajo čudne oblikovalske odločitve, ki jih človek nikoli ne bi sprejel« ( Ali bodo programerji zaradi umetne inteligence postali zastareli? - Karierni nasveti ). Človeški nadzor je ključnega pomena za odkrivanje teh napak. Umetna inteligenca vam lahko hitro zagotovi 90 % funkcije, če pa ima preostalih 10 % subtilno napako, jo mora še vedno diagnosticirati in odpraviti človeški razvijalec. In ko gre kaj narobe v produkciji, morajo odpravljati napake človeški inženirji – umetna inteligenca še ne more prevzeti odgovornosti za svoje napake.
-
Vzdrževanje in razvoj kodnih baz: Programski projekti živijo in rastejo skozi leta. Zahtevajo dosleden slog, jasnost za bodoče vzdrževalce in posodobitve, ko se zahteve spreminjajo. Umetna inteligenca danes nima spomina na pretekle odločitve (razen omejenih pozivov), zato morda ne bo ohranjala doslednosti kode v celotnem velikem projektu, razen če je vodena. Človeški razvijalci zagotavljajo vzdrževanje kode – pišejo jasno dokumentacijo, izbirajo berljive rešitve namesto pametnih, a nejasnih in po potrebi preoblikujejo kodo, ko se arhitektura razvija. Umetna inteligenca lahko pri teh nalogah pomaga (kot je predlaganje preoblikovanja), vendar je odločitev o tem, kaj preoblikovati ali kateri deli sistema potrebujejo prenovo, stvar človeške presoje. Poleg tega je pri integraciji komponent razumevanje vpliva nove funkcije na obstoječe module (zagotavljanje združljivosti s prejšnjimi različicami itd.) nekaj, kar obravnavajo ljudje. Kodo, ki jo ustvari umetna inteligenca, morajo ljudje integrirati in uskladiti. Kot poskus so nekateri razvijalci poskušali pustiti ChatGPT-ju, da gradi celotne majhne aplikacije; rezultat pogosto deluje sprva, vendar ga je zelo težko vzdrževati ali razširjati, ker umetna inteligenca ne uporablja dosledno premišljene arhitekture – sprejema lokalne odločitve, ki bi se jim človeški arhitekt izognil.
-
Etični in varnostni vidiki: Ko umetna inteligenca piše več kode, se sprožajo tudi vprašanja pristranskosti, varnosti in etike. Umetna inteligenca lahko nenamerno uvede varnostne ranljivosti (na primer neustrezno čiščenje vhodnih podatkov ali uporaba nezanesljivih kriptografskih praks), ki bi jih izkušen človeški razvijalec opazil. Prav tako umetna inteligenca nima prirojenega občutka za etiko ali skrbi za pravičnost – lahko se na primer uči na pristranskih podatkih in predlaga algoritme, ki nenamerno diskriminirajo (v funkciji, ki jo poganja umetna inteligenca, kot je koda za odobritev posojila ali algoritem za zaposlovanje). Človeški razvijalci so potrebni za pregled izhodov umetne inteligence glede teh težav, zagotavljanje skladnosti s predpisi in vključevanje etičnih vidikov v programsko opremo. Družbenega vidika programske opreme – razumevanja zaupanja uporabnikov, skrbi glede zasebnosti in sprejemanja oblikovalskih odločitev, ki so skladne s človeškimi vrednotami – »ne gre spregledati. Ti človeško osredotočeni vidiki razvoja so zunaj dosega umetne inteligence, vsaj v bližnji prihodnosti.« ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ) Razvijalci morajo služiti kot vrata vesti in kakovosti za prispevke umetne inteligence.
Glede na te omejitve je trenutno soglasje, da je umetna inteligenca orodje, ne nadomestilo . Kot je dejal Satya Nadella, gre za opolnomočenje razvijalcev, ne za njihovo nadomestitev ( Ali bo umetna inteligenca nadomestila programerje? Resnica o pompanju | avtor The PyCoach | Artificial Corner | marec 2025 | Medium ). Umetno inteligenco si lahko predstavljamo kot mlajšega pomočnika: je hitra, neutrudna in lahko prevzame prvo mesto pri številnih nalogah, vendar za izdelavo dovršenega končnega izdelka potrebuje vodstvo in strokovno znanje višjega razvijalca. Pomenljivo je, da se tudi najnaprednejši sistemi kodiranja z umetno inteligenco v resničnem svetu uporabljajo kot pomočniki (Copilot, CodeWhisperer itd.) in ne kot avtonomni programerji. Podjetja ne odpuščajo svojih programerskih ekip in puščajo umetni inteligenci, da divja; namesto tega vgrajujejo umetno inteligenco v delovne procese razvijalcev, da bi jim pomagala.
En ilustrativen citat prihaja od Sama Altmana iz OpenAI, ki je ugotovil, da čeprav se agenti umetne inteligence izboljšujejo, »ti agenti umetne inteligence ne bodo popolnoma nadomestili ljudi« pri razvoju programske opreme ( Sam Altman pravi, da bodo agenti umetne inteligence kmalu opravljali naloge, ki jih opravljajo inženirji programske opreme: Celotna zgodba v 5 točkah - India Today ). Delovali bodo kot »virtualni sodelavci« , ki bodo opravljali dobro definirane naloge za človeške inženirje, zlasti tiste naloge, ki so značilne za inženirja programske opreme nižje ravni z nekaj leti izkušenj. Z drugimi besedami, umetna inteligenca bi lahko sčasoma opravljala delo mlajšega razvijalca na nekaterih področjih, vendar ta mlajši razvijalec ne postane brezposeln – razvije se v vlogo nadzora umetne inteligence in reševanja nalog višje ravni, ki jih umetna inteligenca ne more opravljati. Tudi če pogledamo v prihodnost, kjer nekateri raziskovalci napovedujejo, da bo umetna inteligenca do leta 2040 lahko napisala večino svoje kode ( Is There a Future for Software Engineers? The Impact of AI [2024] ), se na splošno strinjamo, da bodo človeški programerji še vedno potrebni za nadzor, vodenje in zagotavljanje ustvarjalne iskre in kritičnega mišljenja, ki ju stroji nimajo .
Prav tako je treba omeniti, da je razvoj programske opreme več kot le kodiranje . Vključuje komunikacijo z deležniki, razumevanje uporabniških zgodb, sodelovanje v skupinah in iterativno oblikovanje – vsa področja, kjer so človeške veščine nepogrešljive. Umetna inteligenca ne more sedeti na sestanku s stranko, da bi se dogovorila, kaj si resnično želi, niti se ne more pogajati o prioritetah ali navdihniti ekipe z vizijo za izdelek. Človeški element ostaja osrednjega pomena.
Če povzamemo, ima umetna inteligenca pomembne slabosti: pomanjkanje prave ustvarjalnosti, omejeno razumevanje konteksta, nagnjenost k napakam, pomanjkanje odgovornosti in pomanjkanje razumevanja širših posledic odločitev glede programske opreme. Prav te vrzeli so tisto, kjer blestijo človeški razvijalci. Namesto da bi umetno inteligenco obravnavali kot grožnjo, bi bilo morda natančneje, če bi jo obravnavali kot močan ojačevalnik za človeške razvijalce – ki se ukvarja z vsakdanjostjo, da se ljudje lahko osredotočijo na globoko. V naslednjem razdelku bomo razpravljali o tem, kako lahko razvijalci izkoristijo to ojačanje s prilagoditvijo svojih znanj in vlog , da ostanejo relevantni in dragoceni v svetu razvoja, ki ga dopolnjuje umetna inteligenca.
Prilagajanje in uspeh v dobi umetne inteligence
Za programerje in razvijalce vzpon umetne inteligence v kodiranju ni nujno grozeča grožnja – lahko je priložnost. Ključno je, da se prilagajajo in razvijajo skupaj s tehnologijo. Tisti, ki se naučijo uporabljati umetno inteligenco, bodo verjetno bolj produktivni in iskani, medtem ko bodo tisti, ki jo bodo ignorirali, morda ugotovili, da zaostajajo. V tem razdelku se osredotočamo na praktične korake in strategije za razvijalce, da ostanejo relevantni in uspevajo, ko orodja umetne inteligence postanejo del vsakodnevnega razvoja. Miselnost, ki jo je treba sprejeti, je nenehno učenje in sodelovanje z umetno inteligenco, ne pa tekmovanje. Takole se lahko razvijalci prilagodijo in katere nove veščine in vloge naj upoštevajo:
1. Sprejmite umetno inteligenco kot orodje (naučite se učinkovito uporabljati pomočnike za kodiranje z umetno inteligenco): Najprej in predvsem se morajo razvijalci seznaniti z razpoložljivimi orodji umetne inteligence. Copilot, ChatGPT ali druge umetne inteligence za kodiranje obravnavajte kot svojega novega partnerja za programiranje v paru. To pomeni, da se naučite pisati dobre pozive ali komentarje, da dobite uporabne predloge za kodo, in da znate hitro preveriti ali odpraviti napake v kodi, ki jo ustvari umetna inteligenca. Tako kot se je moral razvijalec naučiti svojega integriranega razvojnega okolja (IDE) ali nadzora različic, postaja učenje posebnosti pomočnika umetne inteligence del nabora znanj in spretnosti. Razvijalec lahko na primer vadi tako, da vzame del kode, ki ga je napisal, in prosi umetno inteligenco, naj ga izboljša, nato pa analizira spremembe. Ali pa, ko začnete nalogo, jo opišete v komentarjih in vidite, kaj ponuja umetna inteligenca, nato pa od tam izboljšate. Sčasoma boste razvili intuicijo za to, v čem je umetna inteligenca dobra in kako z njo soustvarjati. Predstavljajte si to kot »razvoj s pomočjo umetne inteligence« – novo veščino, ki jo lahko dodate v svoj nabor orodij. Dejansko razvijalci zdaj govorijo o »hitrem inženiringu« kot o veščini – vedeti, kako umetni inteligenci postavljati prava vprašanja. Tisti, ki jo obvladajo, lahko z istimi orodji dosežejo bistveno boljše rezultate. Ne pozabite, da »razvijalci, ki uporabljajo umetno inteligenco, lahko nadomestijo tiste, ki je ne« – zato sprejmite tehnologijo in jo naredite za svojega zaveznika.
2. Osredotočenost na veščine višje ravni (reševanje problemov, načrtovanje sistema, arhitektura): Ker lahko umetna inteligenca obvladuje več nizkonivojskega kodiranja, bi se morali razvijalci povzpeti po lestvici abstrakcije . To pomeni, da je treba dati večji poudarek razumevanju zasnove in arhitekture sistema. Razvijajte veščine razčlenjevanja kompleksnih problemov, načrtovanja skalabilnih sistemov in sprejemanja arhitekturnih odločitev – področja, kjer je človeški vpogled ključnega pomena. Osredotočite se na razloge za rešitev in razloge zanjo, ne le na to, kaj. Na primer, namesto da ves svoj čas porabite za izpopolnjevanje funkcije sortiranja (ko jo lahko umetna inteligenca napiše namesto vas), namenite čas razumevanju, kateri pristop k sortiranju je optimalen za kontekst vaše aplikacije in kako se ujema s pretokom podatkov vašega sistema. Oblikovalsko razmišljanje – upoštevanje potreb uporabnikov, pretokov podatkov in interakcij komponent – bo zelo cenjeno. Umetna inteligenca lahko ustvari kodo, vendar je razvijalec tisti, ki odloča o celotni strukturi programske opreme in zagotavlja, da vsi deli delujejo usklajeno. Z izostritvijo svojega razmišljanja o širši sliki postanete nepogrešljivi kot oseba, ki vodi umetno inteligenco (in preostalo ekipo) pri gradnji prave stvari. Kot je bilo zapisano v enem od poročil, ki se osredotoča na prihodnost, bi se morali razvijalci »osredotočiti na področja, kjer je človeški vpogled nenadomestljiv, kot so reševanje problemov, oblikovalsko razmišljanje in razumevanje uporabniških potreb« ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ).
3. Izboljšajte svoje znanje o umetni inteligenci in strojnem učenju: Za delo z umetno inteligenco je koristno razumeti umetno inteligenco . Razvijalci ne potrebujejo vseh, da postanejo raziskovalci strojnega učenja, vendar bo dobro razumevanje delovanja teh modelov koristno. Naučite se osnov strojnega učenja in globokega učenja – to vam ne bo odprlo le novih kariernih poti (saj so delovna mesta, povezana z umetno inteligenco, v razcvetu ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] )), ampak vam bo tudi pomagalo učinkoviteje uporabljati orodja umetne inteligence. Če poznate na primer omejitve velikega jezikovnega modela in kako je bil usposobljen, lahko predvidite, kdaj bi lahko odpovedal, in ustrezno oblikujete svoje pozive ali teste. Poleg tega številni programski izdelki zdaj vključujejo funkcije umetne inteligence (na primer aplikacija s priporočilnim mehanizmom ali klepetalni robot). Razvijalec programske opreme z nekaj znanja o strojnem učenju lahko prispeva k tem funkcijam ali vsaj inteligentno sodeluje s podatkovnimi znanstveniki. Ključna področja, ki jih je vredno razmisliti o učenju, vključujejo: osnove podatkovne znanosti , kako predhodno obdelati podatke, usposabljanje v primerjavi s sklepanjem in etiko umetne inteligence. Seznanite se z ogrodji umetne inteligence (TensorFlow, PyTorch) in storitvami umetne inteligence v oblaku; tudi če ne gradite modelov iz nič, je poznavanje integracije API-ja umetne inteligence v aplikacijo dragocena veščina. Skratka, »pismenost na področju umetne inteligence« hitro postaja prav tako pomembna kot pismenost na področju spletnih ali podatkovnih tehnologij. Razvijalci, ki lahko obvladajo svet tradicionalnega programskega inženiringa in umetne inteligence, bodo v odličnem položaju za vodenje prihodnjih projektov.
4. Razvijte močnejše mehke veščine in poznavanje področja: Ko umetna inteligenca prevzema mehanska opravila, postajajo edinstveno človeške veščine še pomembnejše. Komunikacija, timsko delo in strokovno znanje na področju področja so področja, na katera je treba podvojiti poudarek. Razvoj programske opreme pogosto pomeni razumevanje problematičnega področja – pa naj gre za finance, zdravstvo, izobraževanje ali katero koli drugo področje – in prevajanje le-tega v rešitve. Umetna inteligenca ne bo imela tega konteksta ali sposobnosti povezovanja z deležniki, vi pa ga imate. Če postanete bolj strokovni na področju, na katerem delate, postanete oseba, na katero se morate obrniti, da zagotovite, da programska oprema dejansko ustreza potrebam resničnega sveta. Podobno se osredotočite na svoje veščine sodelovanja: mentorstvo, vodenje in koordinacijo. Ekipe bodo še vedno potrebovale višje razvijalce za pregled kode (vključno s kodo, ki jo je napisala umetna inteligenca), za mentorstvo mlajšim razvijalcem o najboljših praksah in za koordinacijo kompleksnih projektov. Umetna inteligenca ne odpravlja potrebe po človeški interakciji v projektih. Pravzaprav se lahko mentorstvo višjega razvijalca z ustvarjanjem kode s strani umetne inteligence preusmeri k učenju mlajših razvijalcev, kako delati z umetno inteligenco in potrjevati njen rezultat , namesto k pisanju zanke for. Sposobnost vodenja drugih v tej novi paradigmi je dragocena veščina. Prav tako vadite kritično mišljenje – postavljajte pod vprašaj in preizkušajte rezultate umetne inteligence ter spodbujajte druge, da storijo enako. Gojenje zdravega skepticizma in preverjanja bo preprečilo slepo zanašanje na umetno inteligenco in zmanjšalo število napak. V bistvu izboljšajte veščine, ki jih umetna inteligenca nima: razumevanje ljudi in konteksta, kritična analiza in interdisciplinarno razmišljanje.
5. Vseživljenjsko učenje in prilagodljivost: Tempo sprememb na področju umetne inteligence je izjemno hiter. Kar se danes zdi vrhunsko, bo morda čez nekaj let zastarelo. Razvijalci morajo bolj kot kdaj koli prej sprejeti vseživljenjsko učenje . To lahko pomeni redno preizkušanje novih pomočnikov za kodiranje umetne inteligence, obiskovanje spletnih tečajev ali certifikatov na področju umetne inteligence/strojnega učenja, branje raziskovalnih blogov, da bi bili na tekočem s prihajajočim, ali sodelovanje v skupnostih razvijalcev, osredotočenih na umetno inteligenco. Prilagodljivost je ključna – bodite pripravljeni na preusmeritev na nova orodja in delovne tokove, ko se pojavijo. Če se na primer pojavi novo orodje umetne inteligence, ki lahko avtomatizira oblikovanje uporabniškega vmesnika iz skic, bi moral biti razvijalec front-enda pripravljen to naučiti in vključiti, pri čemer bi svojo pozornost morda preusmeril na izpopolnjevanje ustvarjenega uporabniškega vmesnika ali izboljšanje podrobnosti uporabniške izkušnje, ki jih je avtomatizacija spregledala. Tisti, ki učenje obravnavajo kot stalni del svoje kariere (kar mnogi razvijalci že počnejo), bodo lažje integrirali razvoj umetne inteligence. Ena od strategij je, da majhen del tedna posvetite učenju in eksperimentiranju – obravnavajte to kot vlaganje v lastno prihodnost. Podjetja začenjajo tudi zagotavljati usposabljanje za svoje razvijalce o učinkoviti uporabi orodij umetne inteligence; izkoriščanje takšnih priložnosti vam bo dalo prednost. Razvijalci, ki bodo uspevali, bodo tisti, ki bodo umetno inteligenco videli kot razvijajočega se partnerja in bodo nenehno izpopolnjevali svoj pristop k sodelovanju s tem partnerjem.
6. Raziščite nastajajoče vloge in karierne poti: Ko se umetna inteligenca vpleta v razvoj, se pojavljajo nove karierne priložnosti. Na primer, inženir pozivov ali specialist za integracijo umetne inteligence sta vlogi, osredotočeni na ustvarjanje pravih pozivov, delovnih tokov in infrastrukture za uporabo umetne inteligence v izdelkih. Drug primer je inženir za etiko umetne inteligence ali revizor umetne inteligence – vlogi, ki se osredotočata na pregledovanje izhodov umetne inteligence glede pristranskosti, skladnosti in pravilnosti. Če vas ta področja zanimajo, bi vam lahko pravilno znanje odprlo te nove poti. Tudi znotraj klasičnih vlog lahko najdete niše, kot sta »razvijalec frontenda s pomočjo umetne inteligence« in »razvijalec backenda s pomočjo umetne inteligence«, kjer vsaka uporablja specializirana orodja. Spremljajte, kako organizacije strukturirajo ekipe okoli umetne inteligence. Nekatera podjetja imajo »cehe umetne inteligence« ali centre odličnosti, ki vodijo uvajanje umetne inteligence v projekte – če ste aktivni v takšnih skupinah, se lahko znajdete v ospredju. Poleg tega razmislite o prispevanju k razvoju samih orodij umetne inteligence: na primer delo na projektih odprte kode, ki izboljšujejo orodja za razvijalce (morda izboljšanje sposobnosti umetne inteligence za razlago kode itd.). To ne le poglobi vaše razumevanje tehnologije, temveč vas tudi postavi v skupnost, ki vodi spremembe. Bistvo je, da ste proaktivni glede karierne agilnosti . Če se deli vaše trenutne službe avtomatizirajo, bodite pripravljeni na prehod na vloge, ki oblikujejo, nadzorujejo ali dopolnjujejo te avtomatizirane dele.
7. Ohranjanje in predstavitev človeške kakovosti: V svetu, kjer lahko umetna inteligenca ustvari povprečno kodo za povprečen problem, bi si morali človeški razvijalci prizadevati za ustvarjanje izjemnih in empatičnih rešitev, ki jih umetna inteligenca ne more. To lahko pomeni osredotočanje na prefinjenost uporabniške izkušnje, optimizacijo delovanja za nenavadne scenarije ali preprosto pisanje kode, ki je čista in dobro dokumentirana (umetna inteligenca ni dobra pri pisanju smiselne dokumentacije ali razumljivih komentarjev kode – tam lahko dodate vrednost!). Poskrbite, da boste v delo vključili človeški vpogled: na primer, če umetna inteligenca ustvari del kode, dodate komentarje, ki pojasnjujejo utemeljitev na način, ki ga lahko kasneje razume drug človek, ali pa jo prilagodite, da je bolj berljiva. S tem dodajate plast profesionalnosti in kakovosti, ki je primanjkuje delu, ustvarjenemu izključno s stroji. Sčasoma vas bo ločilo od drugih, če si boste zgradili sloves visokokakovostne programske opreme, ki v resničnem svetu »preprosto deluje«. Stranke in delodajalci bodo cenili razvijalce, ki lahko združijo učinkovitost umetne inteligence s človeško spretnostjo .
Razmislimo tudi o tem, kako se lahko prilagodijo izobraževalne poti. Novi razvijalci, ki vstopajo na to področje, se ne bi smeli izogibati orodij umetne inteligence v svojem učnem procesu. Nasprotno, učenje z umetno inteligenco (npr. uporaba umetne inteligence za pomoč pri domačih nalogah ali projektih in nato analiza rezultatov) lahko pospeši njihovo razumevanje. Vendar pa je ključnega pomena, da se poglobljeno naučite tudi osnov – algoritmov, podatkovnih struktur in osnovnih programskih konceptov – da imate trdne temelje in lahko ugotovite, kdaj umetna inteligenca zahaja na napačno pot. Ker umetna inteligenca obravnava preproste vaje kodiranja, lahko učni načrti dajo večjo težo projektom, ki zahtevajo oblikovanje in integracijo. Če ste novinec, se osredotočite na izgradnjo portfelja, ki dokazuje vašo sposobnost reševanja kompleksnih problemov in uporabe umetne inteligence kot enega od mnogih orodij.
Da bi povzetek strategije prilagajanja povzel: bodite pilot, ne potnik. Uporabljajte orodja umetne inteligence, vendar se nanje ne zanašajte preveč ali se ne prepustite samozadovoljstvu. Še naprej izpopolnjujte edinstveno človeške vidike razvoja. Grady Booch, spoštovani pionir programskega inženirstva, je to dobro povedal: »Umetna inteligenca bo temeljito spremenila pomen programerja. Programerjev ne bo odpravila, vendar bo od njih zahtevala, da razvijejo nove veščine in delajo na nove načine.« ( Is There a Future for Software Engineers? The Impact of AI [2024] ). Z proaktivnim razvojem teh novih veščin in načinov dela lahko razvijalci zagotovijo, da ostanejo v vodstvu svoje kariere.
Če povzamemo ta razdelek, je tukaj kratek kontrolni seznam za razvijalce, ki želijo svojo kariero pripraviti na prihodnost v dobi umetne inteligence:
| Strategija prilagajanja | Kaj storiti |
|---|---|
| Naučite se orodij umetne inteligence | Vadite s Copilotom, ChatGPT itd. Naučite se pisanja namigov in potrjevanja rezultatov. |
| Osredotočite se na reševanje problemov | Izboljšajte veščine načrtovanja in arhitekture sistemov. Spoprijemajte se z vprašanji »zakaj« in »kako«, ne le z vprašanjem »kaj«. |
| Izpopolnjevanje na področju umetne inteligence/strojnega učenja | Naučite se osnov strojnega učenja in podatkovne znanosti. Razumite, kako delujejo modeli umetne inteligence in kako jih integrirati. |
| Okrepite mehke veščine | Izboljšajte komunikacijo, timsko delo in strokovno znanje na določenem področju. Postanite most med tehnologijo in potrebami resničnega sveta. |
| Vseživljenjsko učenje | Ostanite radovedni in se nenehno učite novih tehnologij. Pridružite se skupnostim, obiskujte tečaje in eksperimentirajte z novimi orodji za razvoj umetne inteligence. |
| Raziščite nove vloge | Bodite pozorni na nova delovna mesta (revizor umetne inteligence, inženir promptov itd.) in bodite pripravljeni na spremembe, če vas ta zanimajo. |
| Ohranjanje kakovosti in etike | Vedno preverite kakovost rezultatov umetne inteligence. Dodajte človeški pridih – dokumentacijo, etične vidike, prilagoditve, osredotočene na uporabnika. |
Z upoštevanjem teh strategij lahko razvijalci revolucijo umetne inteligence obrnejo v svojo korist. Tisti, ki se prilagodijo, bodo ugotovili, da umetna inteligenca izboljšuje njihove zmogljivosti in jim omogoča izdelavo boljše programske opreme kot kdaj koli prej, namesto da bi jo naredila zastarelo.
Prihodnost: Sodelovanje med umetno inteligenco in razvijalci
Kaj prinaša prihodnost za programiranje v svetu, ki ga poganja umetna inteligenca? Glede na trenutne trende lahko pričakujemo prihodnost, v kateri bodo umetna inteligenca in človeški razvijalci še tesneje sodelovali z roko v roki . Vloga programerja se bo verjetno še naprej premikala proti nadzornemu in ustvarjalnemu položaju, pri čemer bo umetna inteligenca pod človeškim vodstvom opravljala več »težkega dela«. V tem sklepnem razdelku napovedujemo nekaj prihodnjih scenarijev in zagotavljamo, da lahko obeti za razvijalce ostanejo pozitivni – če se bomo še naprej prilagajali.
V bližnji prihodnosti (naslednjih 5–10 let) je zelo verjetno, da bo umetna inteligenca v razvojnem procesu postala tako vseprisotna kot računalniki sami. Tako kot danes noben razvijalec ne piše kode brez urejevalnika ali brez Google/StackOverflow na dosegu roke, kmalu noben razvijalec ne bo pisal kode brez neke oblike pomoči umetne inteligence, ki bi delovala v ozadju. Integrirana razvojna okolja (IDE) se že razvijajo in v svoje jedro vključujejo funkcije, ki jih poganja umetna inteligenca (na primer urejevalnike kode, ki vam lahko razložijo kodo ali predlagajo celotne spremembe kode v projektu). Morda bomo dosegli točko, ko bo glavna naloga razvijalca oblikovanje problemov in omejitev na način, ki ga umetna inteligenca razume, nato pa kuriranje in izpopolnjevanje rešitev, ki jih umetna inteligenca ponuja . To je podobno programiranju višje ravni, včasih imenovanemu »hitro programiranje« ali »orkestracija umetne inteligence«.
Vendar pa bistvo tega, kar je treba storiti – reševanje problemov za ljudi – ostaja nespremenjeno. Prihodnja umetna inteligenca bi morda lahko ustvarila celotno aplikacijo iz opisa (»zgradite mi mobilno aplikacijo za naročanje na zdravniške preglede«), vendar bo delo pojasnjevanja tega opisa, zagotavljanja njegove pravilnosti in natančnega prilagajanja rezultata, da bi navdušil uporabnike, vključevalo razvijalce (skupaj z oblikovalci, vodji izdelkov itd.). Pravzaprav bosta, če bo osnovno ustvarjanje aplikacij postalo enostavno, človeška ustvarjalnost in inovacije v programski opremi postali še pomembnejši za razlikovanje izdelkov. Morda bomo priča razcvetu programske opreme, kjer bo veliko rutinskih aplikacij ustvarila umetna inteligenca, medtem ko se bodo človeški razvijalci osredotočili na najsodobnejše, kompleksne ali ustvarjalne projekte, ki premikajo meje.
Obstaja tudi možnost, da se bodo ovire za vstop na trg programiranja znižale – kar pomeni, da bi lahko več ljudi, ki niso tradicionalni inženirji programske opreme (recimo poslovni analitik, znanstvenik ali tržnik), ustvarjalo programsko opremo z orodji umetne inteligence (nadaljevanje gibanja »brez kode/nizka koda«, ki ga je umetna inteligenca še okrepila). To ne odpravlja potrebe po profesionalnih razvijalcih, temveč jo spreminja. Razvijalci bi v takih primerih lahko prevzeli bolj svetovalno ali vodilno vlogo, s čimer bi zagotovili, da so te aplikacije, ki jih razvijejo državljani, varne, učinkovite in vzdrževalne. Profesionalni programerji bi se lahko osredotočili na gradnjo platform in API-jev, ki jih uporabljajo »neprogramerji« s pomočjo umetne inteligence.
Z vidika delovnih mest se lahko nekatere programerske vloge zmanjšajo, druge pa povečajo. Na primer, nekaterih začetnih koderskih delovnih mest bi se lahko zmanjšalo, če bi se podjetja za preproste naloge zanašala na umetno inteligenco. Lahko si predstavljamo, da bi majhen zagonski sistem v prihodnosti potreboval morda polovico manj mlajših razvijalcev, ker bi njihovi višji razvijalci, opremljeni z umetno inteligenco, lahko opravili veliko osnovnega dela. Hkrati pa se bodo pojavila povsem nova delovna mesta (kot smo razpravljali v razdelku o prilagajanju). Poleg tega bi se lahko s prodiranjem programske opreme v gospodarstvo (z umetno inteligenco, ki ustvarja programsko opremo za nišne potrebe) splošno povpraševanje po delovnih mestih, povezanih s programsko opremo, še naprej povečevalo. Zgodovina kaže, da dolgoročno pogosto vodi do več , čeprav gre za različna delovna mesta – na primer, avtomatizacija nekaterih proizvodnih nalog je privedla do rasti delovnih mest za načrtovanje, vzdrževanje in izboljševanje avtomatiziranih sistemov. V kontekstu umetne inteligence in programiranja so nekatere naloge, ki so jih prej opravljali mlajši razvijalci, sicer avtomatizirane, vendar se splošni obseg programske opreme, ki jo želimo ustvariti, širi (ker je zdaj ustvarjanje cenejše/hitrejše), kar lahko vodi do več projektov in s tem do potrebe po večjem človeškem nadzoru, vodenju projektov, arhitekturi itd. Poročilo Svetovnega gospodarskega foruma o prihodnjih delovnih mestih je pokazalo, da so delovna mesta v razvoju programske opreme in umetni inteligenci med tistimi, po katerih povečuje povpraševanje, ne pa zmanjšuje.
Upoštevati bi morali tudi napoved za leto 2040 : raziskovalci v Nacionalnem laboratoriju Oak Ridge so predlagali, da bodo do leta 2040 »stroji ... večino svoje kode napisali sami« ( Is There a Future for Software Engineers? The Impact of AI [2024] ). Če se to izkaže za točno, kaj ostane človeškim programerjem? Verjetno bi se osredotočili na vodenje na zelo visoki ravni (strojem na splošno sporočati, kaj želimo , da dosežejo) in na področja, ki vključujejo kompleksno integracijo sistemov, razumevanje človeške psihologije ali nova problemska področja. Tudi v takšnem scenariju bi ljudje prevzeli vloge, podobne oblikovalcem izdelkov, inženirjem zahtev in trenerjem/preverjevalcem umetne inteligence . Koda se morda večinoma piše sama, vendar se mora nekdo odločiti, katero kodo je treba napisati in zakaj , nato pa preveriti, ali je končni rezultat pravilen in usklajen s cilji. To je analogno temu, kako bi se lahko avtomobili brez voznika nekega dne vozili sami, vendar avtomobilu še vedno poveste, kam naj gre, in posredujete v kompleksnih situacijah – poleg tega ljudje oblikujejo ceste, prometne predpise in vso infrastrukturo okoli njega.
Večina strokovnjakov si tako predstavlja prihodnost sodelovanja, ne nadomeščanja . Kot je zapisalo neko tehnološko svetovalno podjetje: »Prihodnost razvoja ni izbira med ljudmi ali umetno inteligenco, temveč sodelovanje, ki izkorišča najboljše iz obeh.« ( Ali bo umetna inteligenca leta 2025 nadomestila razvijalce: vpogled v prihodnost ) Umetna inteligenca bo nedvomno preoblikovala razvoj programske opreme, vendar gre bolj za evolucijo vloge razvijalca kot za izumrtje. Razvijalci, ki »sprejmejo spremembe, prilagodijo svoje spretnosti in se osredotočijo na edinstveno človeške vidike svojega dela«, bodo ugotovili, da umetna inteligenca izboljša njihove zmogljivosti in ne zmanjša njihove vrednosti.
Lahko potegnemo vzporednico z drugim področjem: pomislimo na vzpon računalniško podprtega načrtovanja (CAD) v inženirstvu in arhitekturi. Ali so ta orodja nadomestila inženirje in arhitekte? Ne – naredila so jih produktivnejše in jim omogočila ustvarjanje bolj kompleksnih načrtov. Vendar sta človeška ustvarjalnost in odločanje ostala osrednjega pomena. Podobno lahko umetno inteligenco razumemo kot računalniško podprto kodiranje – pomagala bo pri obvladovanju kompleksnosti in mukotrpnega dela, vendar razvijalec ostaja oblikovalec in odločevalec.
Dolgoročno gledano, če si predstavljamo resnično napredno umetno inteligenco (recimo neko obliko splošne umetne inteligence, ki lahko počela večino tega, kar zmore človek), bi bili družbeni in gospodarski premiki veliko širši kot le programiranje. Še nismo tam in imamo znaten nadzor nad tem, kako umetno inteligenco vključujemo v svoje delo. Preudarna pot je, da umetno inteligenco še naprej vključujemo na načine, ki povečujejo človeški potencial . To pomeni vlaganje v orodja in prakse (in politike), ki ljudi obveščajo o dogajanju. Že vidimo, da podjetja vzpostavljajo upravljanje umetne inteligence – smernice za to, kako naj se umetna inteligenca uporablja pri razvoju, da se zagotovijo etični in učinkoviti rezultati ( Raziskava razkriva vpliv umetne inteligence na izkušnjo razvijalcev – blog GitHub ). Ta trend se bo verjetno še stopnjeval, s čimer se bo zagotovilo, da bo človeški nadzor formalno del razvojnega procesa umetne inteligence.
Skratka, na vprašanje »Ali bo umetna inteligenca nadomestila programerje?« lahko odgovorimo: ne – vendar bo bistveno spremenila delo programerjev. Vsakdanji deli programiranja so na dobri poti, da bodo večinoma avtomatizirani. Ustvarjalni, zahtevni in na človeka osredotočeni deli bodo ostali in bodo dejansko postali bolj pomembni. V prihodnosti bodo programerji verjetno delali z ramo ob rami z vedno pametnejšimi pomočniki umetne inteligence, podobno kot člani ekipe. Predstavljajte si, da imate kolega, ki je specializiran za umetno inteligenco in lahko piše kodo 24 ur na dan, 7 dni v tednu – to je odličen dvig produktivnosti, vendar še vedno potrebuje nekoga, ki mu pove, na katerih nalogah naj dela, in ki bo preverjal njegovo delo.
Najboljše rezultate bodo dosegli tisti, ki bodo umetno inteligenco obravnavali kot sodelavca. Kot je dejal neki izvršni direktor: »Umetna inteligenca ne bo nadomestila programerjev, programerji, ki umetno inteligenco uporabljajo, pa bodo nadomestili tiste, ki je ne uporabljajo.« V praksi to pomeni, da je odgovornost razvijalcev, da se razvijajo skupaj s tehnologijo. Poklic programiranja ne umira – prilagaja se v partnerstvu z umetno inteligenco zagotovijo uspešno in izpolnjujočo kariero .
Nenazadnje je vredno proslaviti dejstvo, da vstopamo v dobo, ko imajo razvijalci na voljo supermoči. Naslednja generacija programerjev bo v nekaj urah dosegla tisto, kar je prej trajalo več dni, in se z uporabo umetne inteligence lotila problemov, ki so bili prej nedosegljivi. Namesto strahu je lahko občutek za prihodnost optimizem in radovednost . Dokler se bomo lotili umetne inteligence z odprtimi očmi – zavedajoč se njenih omejitev in zavedajoč se svoje odgovornosti – lahko oblikujemo prihodnost, v kateri bosta umetna inteligenca in programerji skupaj gradili neverjetne programske sisteme, ki daleč presegajo tisto, kar bi lahko storili sami. Človeška ustvarjalnost v kombinaciji z učinkovitostjo strojev je močna kombinacija. Navsezadnje ne gre za zamenjavo , temveč za sinergijo. Zgodba o umetni inteligenci in programerjih se še vedno piše – in pisala jo bosta tako človek kot stroj, skupaj.
Viri:
-
Brainhub, »Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024]« ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ).
-
Brainhub, strokovni citati Satye Nadelle in Jeffa Deana o umetni inteligenci kot orodju, ne kot nadomestilu ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ) ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ).
-
Medium (PyCoach), »Ali bo umetna inteligenca nadomestila programerje? Resnica o pompanju« , pri čemer je omenjena niansirana resničnost v primerjavi s pompanjem ( Ali bo umetna inteligenca nadomestila programerje? Resnica o pompanju | avtor The PyCoach | Artificial Corner | marec 2025 | Medium ) in citat Sama Altmana o tem, da je umetna inteligenca dobra pri nalogah, ne pa pri polnih službah.
-
DesignGurus, »Ali bo umetna inteligenca nadomestila razvijalce… (2025)« , s poudarkom, da bo umetna inteligenca okrepila in povzdignila razvijalce, namesto da bi jih naredila odvečne ( Ali bo umetna inteligenca nadomestila razvijalce leta 2025: vpogled v prihodnost ) in naštela področja, kjer umetna inteligenca zaostaja (kreativnost, kontekst, etika).
-
Anketa razvijalcev Stack Overflow 2023, uporaba orodij umetne inteligence s strani 70 % razvijalcev, nizko zaupanje v natančnost (3 % zelo zaupa) ( 70 % razvijalcev uporablja orodja za kodiranje umetne inteligence, 3 % zelo zaupa njihovi natančnosti - ShiftMag ).
-
Raziskava GitHub iz leta 2023 kaže, da je 92 % razvijalcev preizkusilo orodja za kodiranje z umetno inteligenco, 70 % pa jih je opazilo koristi ( Raziskava razkriva vpliv umetne inteligence na izkušnjo razvijalcev - Blog GitHub ).
-
Raziskava GitHub Copilota, ki je pokazala 55 % hitrejše dokončanje nalog s pomočjo umetne inteligence ( Raziskava: kvantifikacija vpliva GitHub Copilota na produktivnost in srečo razvijalcev - Blog GitHub ).
-
GeekWire, o DeepMindovem AlphaCode, ki deluje na povprečni ravni človeškega programerja (zgornjih 54 %), vendar daleč od najboljših ( DeepMindov AlphaCode dosega povprečno programsko znanje ).
-
IndiaToday (februar 2025), povzetek Sam Altmanove vizije o »sodelavcih« umetne inteligence, ki opravljajo naloge mlajših inženirjev, vendar »ne bodo popolnoma nadomestili ljudi« ( Sam Altman pravi, da bodo agenti umetne inteligence kmalu opravljali naloge, ki jih opravljajo inženirji programske opreme: Celotna zgodba v 5 točkah - India Today ).
-
McKinsey & Company ocenjujejo, da bo ~80 % programerskih delovnih mest kljub avtomatizaciji ostalo osredotočenih na človeka ( Ali obstaja prihodnost za programske inženirje? Vpliv umetne inteligence [2024] ).
Članki, ki jih boste morda želeli prebrati po tem:
🔗 Najboljša orodja za programiranje z umetno inteligenco
Raziščite vodilna orodja za umetno inteligenco, ki lahko sodelujejo z vami kot kodni partner in izboljšajo vaš razvojni potek dela.
🔗 Katera umetna inteligenca je najboljša za kodiranje – Najboljši pomočniki za kodiranje z umetno inteligenco
Vodnik po najučinkovitejših orodjih umetne inteligence za ustvarjanje kode, odpravljanje napak in pospeševanje programskih projektov.
🔗 Razvoj programske opreme za umetno inteligenco – spreminjanje prihodnosti tehnologije
Razumejte, kako umetna inteligenca revolucionira način gradnje, testiranja in uvajanja programske opreme.