Inseneri tõeline töö, kui AI koodi kirjutab
Kas AI asendab insenere?
Seda küsimust umbes kolmkümmend korda kuuldes sain lõpuks aru, et selle eeldus on vale.
See eeldab, et inseneri töö = koodi kirjutamine.
Aga pärast neid aastaid moodustab tegelik koodikirjutamine ehk 20-30% päevast.
Mida ülejäänud ajal tehakse?
Püütakse lahti harutada projektijuhi nõudmisi: "Mida see teavitamise funktsioon täpselt tähendab? Keda teavitada? Millal? Kas liiga palju teavitusi viib äpi eemaldamiseni?"
Koosolekutel projektijuhtidega selgitatakse välja, kas nõue on kontrollitud fakt või lihtsalt koosolekuruumis tekkinud tunne.
Joonistatakse vooludiagramme, otsitakse nõudedokumentidest kirjutamata jäänud asju.
Need mainimata piirjuhtumid? Need on tavaliselt kohad, kus hiljem tekivad probleemid.
See pole AI ajastu uus nähtus. Insenerid pole kunagi ainult koodi kirjutanud.
Hiljuti ehitasin oma väikese toote Vibe Codinguga ja see tunne on nüüd veelgi selgem.
Kui AI koodikirjutamise kiirust tõstab, on inseneridel rohkem aega tegeleda kõige raskema osaga:
Otsustada, mida teha ja mida mitte.
AI Kiirendab Vaid Väikest Osa
AI teeb arenduse kiiremaks. Palju kiiremaks.
Kui varem kulus ühele funktsioonile pool päeva, siis nüüd on toimiv versioon olemas 10 minutiga. See on märkimisväärne edasiminek.
Aga Course Kiti loomisel avastasin ühe asja: koodi kirjutamine on kõige kiirem osa, otsustamine, kas üldse kirjutada, võtab kõige rohkem aega.
Võtame näiteks teavitamise funktsiooni. AI saab selle 10 minutiga valmis kirjutada.
Aga "kas see äpp vajab teavitusi juba esimeses etapis?" — seda otsust kaalusin edasi-tagasi mitu korda.
Teavituste lisamine kõlab loogiliselt, aga kas see on fakt või tunne?
Kas on andmeid, mis näitavad, et kasutajad jätavad tunnid vahele ilma teavitusteta? Või ma lihtsalt tunnen, et nad seda teevad?
Kas teavitused häirivad kasutajaid? Kui neid pole, kas nad unustavad tunnid? Kas on olemas kergem lähenemine kui täielik teavitussüsteem?
See ongi mõtlemise tõeline pale. Mitte niisama tühja vahtimine, vaid pidevalt peas "kui...siis...aga mis siis, kui...?" tsüklite jooksutamine.
Funktsiooni lisamine on lihtne; otsustamine, kas seda tasub lisada, on see, mis võtab aega.
AI saab sinu toote tausta ja arendusolukorra põhjal lahendusi pakkuda, ja valitud lahenduse mõtte koodiks muuta.
Aga kas see idee tasub koodiks muuta, pead ikkagi ise otsustama.
Lõppkokkuvõttes on inseneri põhioskus eristada fakte tunnetest.
Kas see nõue on kasutaja poolt väljatoodud probleem või midagi, mida kõik arvavad, et koosolekuruumis peaks olema?
AI seda ei suuda. See ei erista, mis on valideeritud ja mis on lihtsalt tunne.
Sama ettevaatlikkus, täiesti erinev fookus
Ja faktid näevad erinevates tööstusharudes täiesti erinevad välja.
Olen töötanud Fintechi valdkonnas ja osalenud meditsiiniliste mõõteseadmete IoT projektides.
Mõlemad tööstusharud nõuavad andmete väga hoolikat käsitlemist. Kuid hoolikas tähendab väga erinevaid asju.
Fintechis kardetakse valearvestusi. Iga tehinguandmed peavad säilima, olema jälgitavad ja auditeeritavad.
Ühe andmereana kadumine võib tähendada puudulikku raamatupidamist.
Meditsiini IoT-s kardetakse andmete mõju diagnoosile. Kolmesekundiline mõõtmisviivitus ei pruugi olla lihtsalt natuke aeglane.
See võib tähendada, et kogu andmekogum on kasutuskõlbmatu. Kus patsiendi andmeid hoitakse, kuidas neid edastatakse, kes neid näeb – igal etapil on erinevad reeglid, mida järgida.
Isegi sama andmete töötlemise puhul võib tulemus olla täiesti vastupidine.
See oskus teada, mille suhtes antud kontekstis ettevaatlik olla, ei tule dokumentide lugemisest.
See areneb aegamisi, olles selles keskkonnas viibinud, vigu teinud ja asju läbi mõelnud.
AI saab aidata koodi kirjutamisel ja pakkuda välja tööstusele ning olukorrale sobivaid valikuid.
Aga sinu otsustusvõime tuleb sinu läbitud teekonnast, mitte sellest, millist keelt sa oskad kirjutada.
Pärast AI koodikirjutamist algab inseneri tegelik töö
Vibe Codinguga tooteid luues on tavaline olukord: AI kirjutatud asi näib toimivat.
Avad selle, funktsioonid töötavad, ekraan on õige. Hetkeks tundub, et "vau, valmis!"
Aga intuitsioon ütleb sulle: see küll töötab, aga kas see töötab õigesti?
Kas see loogika peab vastu suure andmemahuga?
Kas see lahendus jätab maha turvaauke?
Mis siis, kui kasutaja käitub viisil, millele sa pole mõelnud? Kas see jookseb kokku?
See on sama mõtteviis, mida ma enne mainisin: otsida nõudedokumentidest kirjutamata asju, lihtsalt nüüd rakendatakse seda AI genereeritud koodile.
Tuleb leida arvestamata stsenaariumid ja need AI-le tagasi visata, et arutada, mida ma veel unustasin. (Selles on ta päris hea, kuna fantaasia on tema tugev külg.) (Naerab)
AI on nagu kiirelt tippiv meeskonnakaaslane. Sa ei võta selle väljundit pimesi vastu, vaid vaatad üle ja kinnitad alles siis, kui kõik on korras.
See pole AI mitte usaldamine; see ongi see, mida insenerid nagunii teevad: koodi ülevaatus.
AI aitab sul asjad valmis kirjutada, aga otsustada, kas see ka otse-eetrisse läheb, on ikkagi sinu teha.
Niisiis, kas AI asendab insenere?
Ma arvan, et parem küsimus on: Sinu aastatega kogutud otsustusvõime ei pea enam tippimiskiiruse pärast kannatama.
Koodi kirjutamine on alati olnud vaid väike osa inseneri tööst.
AI kiirendab seda väikest osa, aga kõik ülejäänud asjad, mis tõesti vajavad analüüsimist, hindamist ja otsustamist – need kõik on endiselt alles.
Kui tunned, et koodi kirjutamine on vaid väike osa sinu tööst, siis õnnitlused, oled juba valmis.
Kui ka sina mõtled, kuidas Vibe Codinguga oma asju ehitada, anna teada.