I del 1 delte jeg hvorfor jeg har vært så skeptisk til denne AI-bølgen vi står i. Nå er tiden kommet for å se om fordelene utveier ulempene.

Oppsett

Lett research (dvs., jeg slang ut en melding i Kodemaker-slacken) fortalte meg at Anthropic sin Claude tjeneste er den beste AI-en for programmering. Av politiske grunner er jeg derimot ikke så ivrig på å gi penger til et amerikansk selskap.

Valget falt til slutt på Devstral-2 fra franske Mistral, en AI-modell som er laget spesielt for utvikling. For å kommunisere med Devstral-2 bruker jeg vibe, et kommandolinjeverktøy som gir AI-en tilgang til filsystemet.

Slik ser Mistral Vibe ut ved oppstart

Jeg har også brukt Claude i de tilfellene Devstral-2 ikke klarer en oppgave, evt. løser den oppgaven dårlig. Dette gir meg innsikt i om oppgaven jeg har spesifisert er for vanskelig eller er lite egnet AI, eller om det er Devstral-2 som ikke er god nok.

I min testing er det ikke noe tvil om at Claude har den beste løsningen, samtidig fungerer Devstral-2 greit nok for mitt bruk. Når Mistral sin modell samtidig er europeisk, open-source og tilbys for en lavere pris så er det Devstral-2 som blir den beste totalpakka for meg.

Hvem skal sitte i førersetet?

Slik jeg ser det er det i hovedsak to måter å bruke AI til utvikling av programvare. Du kan bruke den som en intelligent rubber duck når du står fast og ellers la den skrive den “kjedelige” koden, eller så kan du ta rollen som mellomleder og la AI-en gjøre alt. Sistnevnte metode er kjent som vibecoding.

Jeg skal være helt ærlig og si at jeg er veldig skeptisk til vibecoding, akkurat som jeg er skeptisk til å leie inn en utvikler med lavere timespris som jeg kan delegere mine oppgaver til. Det er jeg som er ansvarlig for at koden jeg leverer fra meg fungerer etter hensikt, ingen andre. Jeg kan ikke være avhengig av en annen utviklers oppetid for å svare på spørsmål eller rette kritiske feil i “min” kode.

Det er selvfølgelig mulig å lese gjennom all koden AI-en spytter ut, men da forsvinner også litt av poenget.

Det betyr ikke at jeg ikke ser fordeler med vibecoding. Hvis du skal lage en applikasjon utelukkende for deg selv eller skal mekke en prototype eller to, så kan vibecoding absolutt spare deg for mye tid.

Jeg ville derimot ikke basert bedriften min på en slik løsning.

AI som kodeskriver

Jeg kan ikke snakke så mye om hvordan jeg bruker AI i jobbsammenheng. Heldigvis har jeg et komplisert hobbyprosjekt som jeg har altfor lite tid til å jobbe med. Over de siste par ukene har jeg derfor hatt med meg AI som kodemaker i utviklingen av Gren, og der har den blant annet blitt utfordret til å:

Jeg har som nevnt vært veldig skeptisk til bruk av AI, men jeg må innrømme at jeg ble imponert over hva den fikk til her. Gren er ikke akkurat verdens mest brukte språk, men den sparte meg likevel for mesteparten av kodejobben på disse oppgavene.

Betyr det at jeg var mer effektiv? Tja…

Det føles jo sånn. Jeg har jo bare skrevet et par setninger også har jeg fått en hel haug av endringer i retur. Men jeg vet at det er gjort forskning som sier at bare fordi du føler at AI sparer deg mye tid, så er det ikke nødvendigvis tilfelle, og etter å ha sjekket klokken underveis så er jeg ikke helt sikker.

AI-en er relativt treig. Den gjør også en del feil. Noen av disse feilene klarer den å rette opp selv hvis du har en streng kompilator og gode enhetstester, for den forstår feilmeldingene godt. Men denne prøvingen og feilingen tar tid. På en god dag ville jeg klart å gjøre de samme oppgavene like raskt, om ikke raskere, ved å skrive alt selv.

Greia er bare det at jeg ikke alltid har en god dag. Noen oppgaver er attpåtil fryktelig kjedelige; som skapt til å trigge prokastrinering. I slike tilfeller er det vanskelig å komme i gang, og da er det godt å la AI-makkeren sette i gang for meg. Jeg må riktignok gå over koden nøye i etterkant og rette opp i eventuelle feil og overkompliserte løsninger, men av en eller annen grunn syntes jeg det er mye lettere enn å skrive de første kodelinjene.

Slik ser Mistral Vibe ut ved oppstart

Jeg må også skyte inn at noe av det viktigste å lære er når du selv skal ta over. I min erfaring er det sjelden at AI-en skriver kode akkurat slik du vil, men å konstant korrigere den går ofte tregere enn å bare fikse småtingene selv. Bruk heller AI-en til å komme ca. dit du vil, også fikser du småting her og der mens du tar en siste gjennomgang før du sier deg ferdig.

Men er dette også en måte å skyte seg i foten? Når jeg redigerer endringene AI-en har gjort så er fokuset mitt utelukkende på endringene og ikke konteksten rundt. Hvis jeg hadde gjort jobben helt selv, hadde jeg da kommet på en bedre endring i et helhetlig perspektiv?

En annen fordel med å la AI-en skrive kode er at jeg jo kan gjøre andre ting i mellomtiden. Hvis jeg f.eks. skal inn i et møte så er det mulig å gi AI-en oppgaven med å skrive kode. Akkurat dette er litt hit-and-miss. Jeg er ikke til stede for å rette opp i eventuelle misforståelser eller manglende informasjon, og da går det fort galt av sted. Heldigvis har vi versjonskontroll, så det skader jo ikke å prøve. Og når det først funker, så sparer en jo tid.

AI som sparringspartner

Jeg har hatt mye mer glede av AI, og sett veldig store tidsbesparelser, ved å bruke det til analyse.

Hvorfor er denne funksjonen treg? Hvorfor havner jeg i en evig løkke her? Hvorfor endres dark-mode til light-mode ved live-oppdatering av koden?

Det er ikke det at jeg ikke klarer å finne ut av sånne spørsmål selv, men AI-en gjør det mye raskere. Den siste oppgaven jeg nevner over kunne fort tatt meg 1-2 timer å finne ut av, da det hadde krevd middels research (dvs., en del feilsøking, googling og lesing av dokumentasjon) før jeg kunne ha satt meg ned og kodet opp en løsning. AI-en fant problemet og kom med et løsningsforslag på 5 minutter.

Det har også skjedd flere ganger at den kommer med en analyse som ikke stemmer, men i slike tilfeller har den likevel vært inne på noe som gjør at jeg klarer å finne svaret selv.

Det har hendt én gang at den kom med en analyse som for meg virket troverdig, men så viste det seg at feilen jeg opplevde var på grunn av noe så banalt som at jeg hadde mistet VPN-tilkoblingen. Når jeg så dobbelsjekker løsningen AI-en har kommet med så viser det seg at den offisielle dokumentasjonen for biblioteket det gjaldt ikke nevner noe som helst om det som var begrunnelsen for endringen, og løsningsforslaget har ingen påvirkning på koden.

Her er vi inne på noe viktig. AI-en er veldig overbevisende. Selv med nesten 15 års erfaring kan jeg la meg lure, og når jeg tenker tilbake på de siste to ukene så har det flere ganger vært tilfelle at AI-en har foreslått ting som jeg øyeblikkelig har avfeid fordi jeg vet det er feil. Det er noe jeg kan gjøre fordi jeg har erfaring og kunnskap bygd opp over mange år. De som ikke har det grunnlaget kan ende opp med å bli mindre effektive fordi de aksepterer meningsløse forslag fra en overbevisende AI.

Er dette en hype verdig?

Har AI gjort meg mer effektiv? Ja. Har det gjort meg så effektiv at de som leier meg inn kan spare penger ved å nedbemanne ansatte? Heh. Hehe. Hehehehehe.

Nei.

Faktisk er jeg ikke overbevist om at AI alltid gir en effektivitetsøkning. Det gjør meg mer effektiv fordi jeg har erfaringen til å vite når den er på ville veier. Hvis du ikke har det… så kan du nå skrive fryktelig mye søppel før noen sier ifra om at det er det du gjør.

Så er det jo også en kjennsgjerning at det ikke er selve kodeskrivingen som tar tid. Det som tar tid er å finne ut hva en skal lage. Hvordan det skal fungere. Hvorfor det ikke fungerer som tenkt. Og selv det er jo ingenting sammenlignet med å få alle interessentene til å bli enige først.

Det er godt mulig at mitt syn er farget av at jeg stort sett jobber i store og modne kodebaser, og at jeg tross alt er ganske ny på dette. Jeg har heller ikke gjort tung research (dvs., lest alle bøker og blogginnlegg noensinne skrevet om temaet). Det kan hende at du vil se mye større fordeler hvis du skal lage noe nytt fra bunnen av, eller jobbe med en kodebase du ikke kjenner godt fra før. Likevel er det jo sånn at de fleste, vellykkede, programmer kommer til det punktet hvor de kan regnes som store og modne kodebaser, og de fleste utviklere blir bedre kjent med en kodebase over tid. Kanskje er AI mest nyttig i starten av et prosjekt?

AI er et verktøy. Som alle andre verktøy så kan det gjøre like mye skade som nytte, avhengig av hvem som bruker det og hvordan det blir brukt.

Det er et verktøy som har kostet flere hundre milliarder dollar, og sikkert kommer til å koste flere hundre milliarder til. Det har et astronomisk strømforbruk, vannforbruk, og krever innsats fra flere tusen arbeidere som får elendig betalt med nesten ingen rettigheter. Det er et verktøy som potensielt øker effektiviteten på bekostning av læring og kjennskap til koden.

Er det verdt det?

Nei. Det er jo ikke det.