Hopp til hovedinnhold

Teknologi /

Slik koder du ansvarlig med Copilot

Kode24 publiserte 30.september artikkelen Utviklere ikke mer produktive med AI. Her viser de til en ny undersøkelse fra kodeanalyseselskapet Uplevel, som hevder at kodeassistenter ikke gjør oss mer produktive. De introduserer overraskende nok flere bugs – 41 prosent flere for å være konkret. Samtidig kan vi lese fra Microsoft sine egne undersøkelser at utviklere som brukte Copilot var 55 prosent raskere. I Norge har Statens Vegvesen har gjort Copilot tilgjengelig for alle sine utviklere, og hevder at det har gjort utviklerne deres mer produktive, uten at de har tallfestet dette.

A humorous image of a coder that uses Copilot in a responsible way

Hva mener vi i Kantega om dette?

Formålet med denne bloggposten er ikke å gå i dybden på de ulike undersøkelsene i forsøk på å finne forklaringer på hvorfor de spriker så mye. Jeg ønsker heller å gjøre noen generelle refleksjoner omkring kodeassistenter, for å illustrere hva jeg og mine kollegaer i Kantega tenker omkring slike assistenter.

Blant kommentarene under artikkelen i Kode24, finner jeg synspunkter som vi kan kjenne oss igjen i. Vi har diskutert tematikken i våre egne kanaler, og synspunktene er gjenkjennbare. Det er to aspekter jeg ønsker å trekke frem her.

Kort og godt

Det første er at kodeassistenter ser ut til å være veldig effektive når man trenger små kodesnutter som skal gjøre en liten jobb. Undertegnede koder stort sett mindre script som skal håndtere innsamling og behandling av data, som i sin tur skal gjøre kundene våre mer datadrevet. Vi som jobber i dette domenet, skriver ofte kortere snutter for konkrete oppgaver. Andre utviklere jobber gjerne i en mer kompleks kontekst med veldig store filer. Jeg har selv brukt Copilot til å komme med forslag til hvordan vi eksempelvis kan få Tasks i Azure DevOps til å lukkes automatisk som følge av at relatert task-branch i Github blir merget inn i main. Copilot valgte da å foreslå noe jeg først ikke hadde tenkt på, som ga meg nye idéer. Men igjen – det er små konkrete oppgaver jeg vanligvis søker kodeforslag til.

Økt læringshastighet

Det andre er at kodeassistenter ser ut til å være særs effektive når du skal komme i gang med noe nytt som du ikke har så mye kunnskap om fra før. Det gir deg muligheten til å raskt få kjørbar kode som du kan teste, fremfor å måtte gjennom en større teoretisk øvelse for å forstå hvordan du kan skrive din første kodesnutt. Det kan med andre ord være veldig nyttig for å øke farten på læring av nye domener.

En særs avansert kalkulator

Jeg vil påstå at kodeassistenter er nåtidens kalkulator – en usedvanlig avansert kalkulator. Og den får vi et tillitsforhold til. Gjennom sunn kritisk tenking, etablerer vi et bevisst forhold til hvordan den påvirker oss og arbeidet vårt. Vi må bruke denne på en ansvarlig måte. Det betyr å ta en runde innom egen (og andres) kunnskap og erfaring, før vi tar resultatet fra assistenten inn i arbeidet vårt. Det kodeassistentene gir oss, har skapt alt fra latter til store WOW-effekt, og vi lar oss fascinere når eksempelvis Inga Strümke forklarer hvordan chatGPT nå «snakker med seg selv». Men dette blir litt mer seriøst når vi skal anvende assistenter i jobben vår, og ikke bare for gøy og skøy. Som konsulenter er dette ekstra viktig, siden vi har ansvar for å skape verdiskaping for kundene våre. Da kan vi ikke gå hodeløst inn.

Utfordringen er sunt bondevett

Jeg hadde en kaptein under førstegangstjenesten som ofte fortalte oss, at dersom vi utviste sunt bondevett så ville det meste ordne seg og bli bra. Dette utsagnet har fulgt meg i alle år siden og går aldri ut på dato.

I en av kommentarene i kode24 sin artikkel står det følgende:

jo mindre man kan, jo oftere kan man kanskje til dels bli lurt til å tro at LLMer kan brukes til "alt" eller at svarene er av en høyere kvalitet enn de egentlig er.

Jeg vil påstå at kommentaren er inne på noe, men jeg vil snu litt på det. Det handler ikke om hvor lite man vet, men hvor bevisst man er hvor lite man vet. Det er en vesentlig forskjell der.

Vi mennesker har en tendens til å tillegge ting og dyr menneskelige egenskaper (antropomorfisme). Vi lar oss lure til å tro at kodeassistenter har egenskaper de slettes ikke har. Når vi lar oss imponere av det assistenten leverer til oss, og den menneskelige måten den svarer på, står vi i fare for å skape usunn tillit til verktøyet dersom vi ikke passer på å ha en sunn kritisk tilnærming.

Erfaring != Sunt bondevett

Det er lett å konkludere med at det er en sammenheng mellom sunt bondevett og hvor erfaren man er. At nyutdannede har en ulempe sammenlignet med de mer erfarne kollegaene. Og det kan hende at det er en statistisk sammenheng. Men vi ser eksempler på erfarne som er i overkant ivrige på å ta i bruk KI, og vi ser uerfarne som har et sunt kritisk forhold til det.

Godt trent ryggmargsrefleks

Så hvordan utvikler man en godt trent ryggmargsrefleks i møte med kodeassistenter? Som grunnregel skal man aldri stole 100 prosent på det man får fra kodeassistenter. På samme måte som man aldri skal stole på hunden sin alene med barna. Det går ofte bra, men det kan få alvorlige konsekvenser om det går galt.

Språkrådet har skrevet en artikkel på bruk av ChatGPT, hvor Hans Christian Farsethås, postdoktor ved Det juridiske fakultet ved Universitetet i Bergen, sier følgende:

– En tekstrobot kan skrive både søknad og avslag for deg, men jeg syns ikke det er så lurt. Det er bedre å mate ChatGPT med en tekst og så be den vurdere ulike elementer av teksten med gode instrukser (prompts på engelsk).
Hans Christian Farsethås

Vår egen kodelærer

Språkrådet anbefaler å bruke assistenten som en norsklærer – eller i vårt tilfelle en kodelærer. Bruk gjerne kodeassistenter til å komme med forslag på løsninger. Og bruk gjerne kodesnuttene direkte om du bare skal lære deg noe nytt. Men når man ikke lenger kan leke og eksperimentere, bruk den til å komme med forslag på alternative løsninger – som du kanskje ikke har tenkt på selv. Denne innfallsvinkelen mener jeg treffer veldig godt og gjør oss i stand til å tenke kritisk. Som utgangspunkt ber vi ikke om ferdig kode. Vi «jukser» ikke. Vi ber om hjelp til å utvikle vår egen forståelse.

Prøv for eksempel følgende spørsmål (bare pass på å ikke del sensitiv informasjon her):

  • Based on this code snippet
    <y>
    how can it be improved to accomplish <z>

Vi må huske på at assistentene er trent på offentlig tilgjengelig informasjon. Og på Internett ligger det stort sett alltid minst én løsning på utfordringen din.

Kantega bruker kodeassistener aktivt, så langt det er hensiktsmessig og i tråd med kundenes retningslinjer. Vi har også mange interne diskusjoner omkring bruken av kunstig intelligens til ulike formål. Gjennom vår AI-satsing har vi lenge vært klar på at vi skal levere KI -baserte løsninger på en ansvarlig måte. Noe annet er ikke holdbart. Vi har leveregler som minner oss på at vi skal «løfte hverandre» og «være nysgjerrige». Vi skal bruke kodeassistenter på en ansvarlig måte og vi utvikler hverandre til å mestre domenet.

På den måten mener jeg vi oppnår det samme som Statens Vegvesen, og unngår å introdusere 41 prosent flere bugs i kundens kode.