logo Blog
← Back

Kodėl aš nustojau naudoti dirbtinio intelekto kodų redaktorius?

Kodėl aš nustojau naudoti dirbtinio intelekto kodų redaktorius?

Aš pasirinkau naudoti dirbtinį intelektą rankiniu būdu, nes laikui bėgant pajutau lėtą kompetencijos praradimą, kai juo pasiklioviau, ir visiems rekomenduoju atsargiai naudoti dirbtinį intelektą kaip pagrindinę savo darbo eigos dalį.

2022 m. pabaigoje pirmą kartą AI įrankiais pasinaudojau dar prieš pasirodant pirmajai „ChatGPT“ versijai. 2023 m. pradėjau naudoti dirbtiniu intelektu pagrįstus įrankius savo kūrimo darbo eigoje. Iš pradžių buvau labai sužavėtas šių ŽI priemonių galimybėmis. Tai, kad galėjau tiesiog nukopijuoti ir įklijuoti neaiškias kompiliatoriaus klaidas kartu su C++ išeities kodu, o man buvo pasakyta, kur yra klaidos priežastis, atrodė kaip magija.

Kai „GitHub Copilot“ ėmė tapti vis galingesnis, pradėjau jį naudoti vis dažniau. Įvairias kitas LLM integracijas naudojau tiesiai savo redaktoriuje. AI naudojimas tapo mano darbo eigos dalimi.

2024 m. pabaigoje pašalinau visas LLM integracijas iš savo kodo redaktorių. Kartais vis dar naudoju LLM ir manau, kad AI gali būti naudojamas taip, kad būtų labai naudingas daugeliui programuotojų. Tai kodėl tada nenaudoju AI valdomų kodo redagavimo įrankių?

Tesla FSD (Full Self-Driving)

2019-2021 m. vairavau „Tesla“. Nors daugiau niekada nebepirkčiau tokio pat pirkinio ne dėl politinių priežasčių, o tik dėl to, kad automobiliai yra gana prastos kokybės, labai per brangūs, o jų remontas ar priežiūra – pragaras.

Kai įsigijau „Tesla“, pradėjau naudotis visiško savarankiško vairavimo (FSD) funkcija, kai tik galėjau. Puikus jausmas tiesiog įjungti FSD greitkelyje ir šiek tiek atsipalaiduoti. Perjungti eismo juostas buvo taip paprasta, kaip paspausti posūkio signalą, ir automobilis persirikiuodavo į kitą eismo juostą. Vairuodamas tiesiog išvažiuodavau į greitkelį, įjungdavau FSD, kartkartėmis liepdavau automobiliui persirikiuoti į kitą eismo juostą ir, atsipalaidavęs, klausydavausi muzikos ir (arba) podkastų.

Jei dažnai vairuojate automobilį, žinote, kad važiuojant greitkeliu viskas vyksta tarsi automatiškai. Automobilio laikymasis eismo juostoje tinkamu greičiu tampa pasyviu veiksmu, tam nereikia tokio susikaupimo, kokio reikalauja, pavyzdžiui, knygos skaitymas, tai toks susikaupimas, kokio reikalauja vaikščiojimas, jis vyksta jūsų minčių fone.

2019-2021 m. laikotarpiu savo „Tesla“ vairavau tik ilgesnėms kelionėms. Po 2021 m. grįžau prie įprastų automobilių vairavimo ir šis perėjimas tikrai nebuvo tai, ko tikėjausi. Pirmąjį mėnesį vairavimas greitkelyje reikalavo viso mano dėmesio, turėjau iš naujo išmokti išlaikyti automobilį eismo juostos viduryje apie tai negalvodamas.

Priklausomybė nuo „Tesla“ FSD atėmė iš manęs galimybę pačiam įsijungti autopilotą.

Mano patirtis su dirbtinio intelekto kodų redaktoriais

Darbas su dirbtinio intelekto valdomais kodo redaktoriais buvo šiek tiek panašus. Iš pradžių jaučiau, kad padedamas dirbtinio intelekto darbą atlikdavau daug greičiau. Darbas, kurį dažniausiai atlikdavau, nebuvo itin sudėtingas, o AI atrodė, kad į FSD įdėjęs savo Teslą, galėjau tiesiog nukreipti mašiną, kad ji atliktų mano darbą už mane.

Laisvalaikiu pradėjau dirbti su šalutiniu projektu savo asmeninėje paskyroje darbo įrenginyje. Šioje paskyroje neturėjau prieigos prie „Copilot“ ir kitų savo šaunių, įmantrių dirbtinio intelekto įrankių. Tuomet AI naudojimas ėmė labai priminti mano „Tesla FSD“ istoriją.

Jaučiausi ne toks kompetentingas atlikdamas tai, kas buvo gana paprastas programinės įrangos kūrimas, kaip maždaug prieš metus. Staiga man tapo labai aišku, koks priklausomas tapau nuo dirbtinio intelekto įrankių. Kai tik apibrėždavau funkciją, stabdydavau redaktoriaus darbą ir laukdavau, kol dirbtinio intelekto priemonės už mane parašys jos įgyvendinimą. Reikėjo nemažai pastangų, kad prisiminčiau, kokia yra sintaksė vienetiniams testams rašyti ranka.

Man dirbant, AI ilgainiui taip pat pradėjo tapti mažiau naudingas. Tai ne tik atėmė man malonumą, bet ir pradėjau jaustis šiek tiek nesaugus pats priimdamas kai kuriuos įgyvendinimo sprendimus. Perduoti sprendimus AI atrodė daug lengviau. Tačiau kartais dirbtinis intelektas nesugebėdavo ko nors suprasti, net ir su geriausiomis užuominomis. Buvo visiškai aišku, kad dėl to, jog dažnai nepraktikavau pagrindų, man sunkiau sekėsi atlikti ir sudėtingesnes dalis.

Fingerspitzengefühl praradimas

Fingerspitzengefühl [ˈfɪŋɐˌʃpɪtsənɡəˌfyːl] – vokiškas terminas, pažodžiui reiškiantis „pirštų galiukų pojūtis“ ir reiškiantis intuityvią nuojautą arba instinktą, kuris anglų kalboje prigijo kaip skolinys. Jis apibūdina puikų situacijos suvokimą ir gebėjimą reaguoti kuo tinkamiau ir taktiškiau. 1

Apibrėžti darbo stažą yra labai sudėtinga. Nors, mano nuomone, daug ką lemia „vyresniojo“ statusas, kai kalbama apie techninius įgūdžius, daug kas priklauso nuo Fingerspitzengefühl. Kuo ilgiau dirbi su kalba, sistema ar kodų baze, tuo labiau išsiugdai tokią intuiciją, kaip teisingai elgtis. Nuojauta, kad „kažkas negerai“, pamažu virsta jausmu, kad „būtent taip turėtume elgtis“.

Ši išvystyta intuicija veikia ne tik architektūros lygmeniu. Didelę dalį sudaro žemesnio lygio detalės, pavyzdžiui, kada naudoti rodykles (arba kokio tipo rodykles), ar naudoti tvirtinimus, ar patikrinimus, ką pasirinkti iš standartinės bibliotekos, kai yra kelios galimybės (nors atrodo, kad vyresnieji C++ programuotojai vis dar negali dėl to susitarti).

Šią intuiciją pamažu praradau, kai daug rėmiausi dirbtinio intelekto priemonėmis. Ir tai sako pagrindinis programuotojas. Kai matau daug triukšmo dėl vibruojančio kodavimo, negaliu nepagalvoti: kaip tiksliai tikitės vibruojančiai koduoti savo kelią į vyresniuosius? Iš kur gausi įgūdžių, kad galėtum palaikyti ir plėsti vibro kodų bazę, kai dirbtinio intelekto priemonės neveiks arba taps per brangios?

Net ir turint didesnius konteksto langus, didesnę skaičiavimo galią, samprotavimo modelius ar agentus, bus dalykų, kurių dirbtinis intelektas nesugebės atlikti. Laikui bėgant AI priemonės bus vis galingesnės, žinoma. Bet kai gausite „Slack“ pranešimą, kad „svetainė veikia gerai, bet programėlė neveikia gamyboje; bandžiau vietoje ir ten ji veikia gerai, ‚Sentry‘ taip pat nieko neveikia“, sėkmės, kad dirbtinio intelekto agentas tai už jus sutvarkytų. Galbūt jis gali, galbūt negali. O kai dirbtinio intelekto agentas negalės to išsiaiškinti, ar jūsų atsakymas bus „atsiprašau, ‚Cursor‘ nesupranta, rytoj paragins daugiau“?

Galite išsiversti be šių įrankių

Kartais atrodo, kad turite naudoti dirbtinį intelektą arba po 6 mėnesių neteksite darbo. Šiuo metu jau daugiau nei dvejus metus girdime pasakymą „po 3-6 mėnesių“. Jau prieš daugelį metų nustojau tikėti vadovų pažadais apie funkcionalumą „po 3-6 mėnesių“. Kai 2019 m. įsigijau savo „Teslą“, sumokėjau 6400 eurų už funkcionalumą, kuris turėjo atsirasti „po 3-6 mėnesių“, o funkcionalumas vis dar nėra toks, koks buvo žadėtas prieš daugiau nei 5 metus.

Šiuo metu mažai tikėtina, kad leidimas dirbtiniam intelektui atlikti programavimą pasiteisins didesniems nei universitetinis projektas projektams. Dirbant su paveldėtomis sistemomis ar didesniais projektais įmonėse arba kai reikia dirbti ir konsultuotis su daugybe priklausomybės vidinių dalių (kaip aš darau su „Unreal Engine“), dirbtinio intelekto įrankiai dažnai negalės užtikrinti, kad viskas veiktų. Kai reikia dirbti su vidiniais DSL, įrankiais ar karkasais, pasisekė, kad LLM sukurtų naudingą rezultatą. Kai kuriose pramonės šakose dėl daugybės priežasčių dirbtinio intelekto įrankių apskritai negalima naudoti.

Kai kuriems dalykams tikrai nereikėtų pasikliauti dirbtiniu intelektu. Diegiant autentifikavimo sistemas, tokias kaip JWT2 pasirašymas arba RBAC3, į užklausą įtraukus užrašą „ir tai turėtų būti saugu“, ji netaps saugi, jei ji buvo apmokyta naudojant „GitHub“ kodą, kuriame buvo CVE4. Kai kalbama apie saugumą, jūs turėtumėte būti tas asmuo, kuris yra atsakingas ir tai visiškai supranta. Kritines sistemas turėtų rašyti ir peržiūrėti žmonės, jei einame prie situacijos, kai vienas dirbtinio intelekto agentas rašo kodą, kitas peržiūri automatiškai sukurtą PR, o tada kitas dirbtinio intelekto agentas kodą dislokuoja, netrukus pamatysime didžiulį saugumo problemų antplūdį.

Kur brėžiu ribą

Kartais vis dar naudoju dirbtinį intelektą. Manau, kad jis gali būti puikus įrankis, jei naudojamas protingai. Ribą nubrėžiu ties integracija. AI visiškai atskiriu nuo kodo redaktoriaus. Visą kontekstą pridedu rankiniu būdu. Sąmoningai reikalauju daug pastangų, kad tai mane neskatintų.

Pavyzdžiai, kai naudoju AI darbui: „konvertuok šiuos Go testus struktūrose į testus žemėlapyje“, „konvertuok šį skaičiavimą į SIMD“ arba „kai turinio tipas yra application/zlib, iššifruok kūną “5. Nustatau keletą pasirinktinių instrukcijų, kad man būtų pateikiamas tik pasikeitęs kodas ir nurodymai, kaip jį pridėti. Tokiu būdu aš vis dar esu tas, kuris atlieka pakeitimus kodų bazėje. Vien patvirtinti „Git“ skirtumą nepakanka, noriu pats rankiniu būdu pridėti kodą, tik tada galiu drąsiai pasirašyti ir prisiimti atsakomybę už jį.

Kitas puikus dirbtinio intelekto naudojimo atvejis – mokymasis. Man dažnai kyla gana neįprastų klausimų, nes turiu keletą labai nišinių interesų. Pasirodo, tinklinio kodo pridėjimas prie pasirinktinio žaidimo variklio naudojant ECS neturi daug mokymosi išteklių. Man pasiteisino prašymas AI paaiškinti kodo dalis, pavyzdžiui, „paaiškink šį asemblerio kodą“, „paaiškink, ką daro šis shaderis“, „kokiose knygose išsamiai rašoma apie kliento ir serverio desinchronizacijos problemų sprendimą žaidimų varikliuose“. Atrodo, kad dirbtinis intelektas kartais su jais susiduria su sunkumais, gaunu nevienodų rezultatų, bet rezultatai vis tiek yra daug geresni nei paieškos sistemų. Netgi naudosiu jį šiam straipsniui, nors ne turiniui rašyti, o patikrinti.

Dar vienas tokio AI naudojimo privalumas – kaina. Jokių nereikalingų API skambučių, rankiniu būdu valdomų kontekstų ir didesnė LLM nustatymų kontrolė. Aš naudoju darbalaukio programą, prie kurios prijungta daugybė skirtingų LLM. Pastaruosius maždaug 3 mėnesius ją naudojau kasdien ir iš viso sunaudojau apie 4 USD kreditų.

Noriu pridurti, kad kai kurių dalykų atžvilgiu esu griežtesnis. Savo asmeninėje svetainėje nenoriu jokio dirbtinio intelekto sukurto turinio, nesvarbu, ar tai būtų tekstas, ar paveikslėliai. Man asmeniškai dėl įvairių priežasčių nepatinka dirbtinio intelekto generuojami paveikslėliai ar „menas“, be to, manau, kad dirbtinio intelekto generuojamam tekstui trūksta charakterio, jis atrodo labai plokščias ir nuobodus. Kai ką nors sukuria žmonės, man tai turi didesnę vertę nei dirbtinio intelekto sukurtas tekstas.

Daryti tai, kas jums patinka

Taip pat verta paminėti, kad reikia galvoti ne tik apie efektyvumą ir produktyvumą. Taip pat reikia daryti tai, kas jums patinka. Jei mėgstate programuoti, ir toliau užsiimkite tuo patys, net jei kompiuteriui tai sekasi geriau.

1997 m. „Deep Blue“ laimėjo šachmatų mačą prieš tuometinį pasaulio šachmatų čempioną Garį Kasparovą, tačiau žmonės vis dar žaidžia šachmatais. Kalbant apie programavimą, sakyčiau, kad programuoju dėl tos pačios priežasties, dėl kurios žmonės vis dar žaidžia šachmatais8. Nors šachmatai ir programinės įrangos kūrimas yra labai skirtingi dalykai, o šachmatai yra daug ribotesnės apimties, manau, kad gerai nepamiršti, jog kartais galime daryti dalykus vien tam, kad jais mėgautumėmės.

Mano patarimas naujiems programuotojams

Netapkite amžinai jaunesniuoju programuotoju, kuris leidžia dirbtiniam intelektui atlikti visą darbą. Jei norite tapti programuotoju, išmokite programuoti patys. Būkite smalsūs, skirkite laiko ir pastangų, kad sužinotumėte, kaip viskas veikia iš tikrųjų, ir kaip viskas veikia žemesniame sluoksnyje. Tai tikrai atsiperka. Išmokti, kaip viskas veikia po gaubtu, ir tuo naudotis yra nuostabu, tik mokykitės toliau, nebūkite greitas inžinierius (jei tai apskritai galima vadinti inžinerija). Patikėkite manimi, smagiau būti kompetentingam9.

Nors dirbtinis intelektas gali būti protingesnis už jus, niekada aklai nepasitikėkite dirbtinio intelekto rezultatais. Nekurkite viso savo darbo proceso pagal jį. Kartais pabandykite kelias dienas dirbti be jo. Kuo geriau mokate programuoti, tuo labiau AI trukdys jums atlikti sudėtingesnius darbus.

Jei dabar išmoksite programuoti, toliau tobulinsite savo įgūdžius, užuot leidę dirbtiniam intelektui atlikti visus sunkius darbus, galėsite ištaisyti netvarką, kurią dabar sukuria vibruojantis programavimas. Nenoriu nuskambėti elitistiškai, bet jei nenorite išmokti neapsiriboti vibraciniu kodavimu, galbūt kodavimas ne jums. Nes pareigybės, kuriose visą darbą galima atlikti vibro kodavimu, yra tos, kurios bus panaikintos pirmiausia, kai dirbtinis intelektas taps galingesnis.

Ir atminkite: jei nesugebate koduoti be dirbtinio intelekto, nesugebėsite koduoti.

Išvada

Naudodami dirbtinį intelektą aukojate žinias dėl greičio. Kartais verta daryti šį kompromisą. Nors svarbu prisiminti, kad net geriausi pasaulio sportininkai ne veltui atlieka pagrindines pratybas. Tas pats pasakytina ir apie programinės įrangos kūrimą: reikia praktikuoti pagrindus, kad galėtumėte atlikti pažangų darbą. Jums reikia išlaikyti aštrų kirvį.

Iki to, kad dirbtinis intelektas perimtų mūsų darbą, dar toli. Daug įmonių kuria FOMO10 kaip pardavimo taktiką, kad gautų daugiau klientų, parodytų trauką savo investuotojams, gautų dar vieną finansavimo raundą, sukurtų kitą modelį, kuris neabejotinai sukels revoliuciją.

Dirbtinis intelektas yra įrankis, jis pats savaime nėra geras ar blogas, svarbu, ką su juo darai. Manau, kad jis gali būti puikus įrankis, jei tik nesate nuo jo priklausomi savo darbo procese. Įsitikinkite, kad vis tiek galite efektyviai dirbti be jo, įsitikinkite, kad nesiunčiate į gamybą kodo, kurio iki galo nesuprantate, ir nemanykite, kad dirbtinis intelektas pakeičia jūsų mąstymą. Išlikite smalsūs, nuolat mokykitės.