Teknologi / 3 minutter /

Frykten for å dele kode

God delingskultur og trygge rammer i teamet gjør det (heldigvis) litt enklere.

Jeg er i ferd med å trykke på den store, røde knappen hvor det står «Create a new pull request». Det knyter seg litt i magen min. Jeg sjekker nettavisene, går over koden en ekstra gang (selv om jeg har gjort det fem ganger før), henter meg en kaffe, og håper at noen skal dra meg inn i et møte på vei tilbake fra kaffemaskinen. Kaffen er hentet og ingen hadde bruk for meg i noe møte.

Det er ingen vei tilbake. Jeg kjenner tvilen begynner å komme. Er det bra nok? Er det for “basic” det jeg har laget? Vil jeg fremstå som mindre kunnskapsrik ovenfor kollegaene mine nå?

Denne følelsen har kanskje de aller fleste som skriver kode kjent på en eller annen gang, meg selv inkludert. Men hvorfor er det sånn? Er det virkelig så farlig at noen dobbeltsjekker koden? Det er jo tross alt mye bedre at feil oppdages før ting er satt i produksjon. Og vil egentlig kollegaene mine meg så vondt?

Code review er jo en bra ting

Som Data Scientist er en stor del av jobben å skrive kode og sette denne i produksjon. Men for å komme dit så må det gjøres et skikkelig code review. Koden må sjekkes for feil, både matematiske og programmatiske. Potensielt definerer koden en modell som har stor påvirkning på enkelte menneskers liv, og inntektene eller kostnadene til bedriften du jobber i.

Feil kan og vil skje en eller annen gang, men vi må minimere risikoen for at feil oppstår. Og en god måte å minimere risikoen for feil, er at kollegaer gjør reviews på hverandres kode. Da får du et par friske øyne som ser på koden din. Kanskje de oppdager noe som du har oversett etter å ha stirret på den samme koden i mange dager.

Dette kan spare deg for mye unødvendig arbeid senere. Og mest sannsynlig så har ingen av dine kollegaer et sterkt ønske om å se deg feile hardt. Men det er ikke så enkelt å feie tvilen (og den litt vonde magefølelsen) til side.

Vi er utstyrt med både en emosjonell og logisk evne til å resonnere. Disse kan være motstridende. Og hvis man kommer seg inn i en negativ spiral, der man er i tvil om arbeidet man har gjort er godt nok, er det fort gjort å bli der. Vi vil da ofte avvise alle de åpenbare, logiske bevisene som finnes. Hjernen vil rett og slett ignorere dette til fordel for den sannheten som det emosjonelle resonnementet har skapt.

Trening i trygge omgivelser

Så, hvordan kan vi forebygge og motvirke slike situasjoner? Hvis et team (eller deler av et team) styres av emosjonell frykt, vil jeg påstå at man har et stort problem. Dette fører til et fravær av en delingskultur som er så viktig i et team. Man blir redd for å feile, holder inne på kunnskapen sin og verst av alt, man safer i alle oppgavene man gjør. Og for å lykkes så tror jeg oppriktig at man må tørre å tenke litt utradisjonelt. Tørre å gå litt utenfor det etablerte. Tørre å feile. Det er sånn man utvikler seg og lykkes. For å skape denne delingskulturen, så må man trene i trygge omgivelser. Man må eksponeres ofte for situasjoner som kan føles ubehagelig, og sørge for at det å dele og vise frem arbeidet sitt blir en positiv emosjonell opplevelse.

Litt skummelt i starten

Da jeg startet i Kantega i februar var jeg så heldig å komme inn i etableringsfasen av et AI-team. De aller fleste var nyansatte slik som meg, og vi måtte finne formen som både gjorde oss i stand til å lære og prestere best mulig – og samtidig skape det teamet som alle gledet seg til å jobbe i hver dag. 

Noe av det første vi bestemte oss for, var at vi skulle ha code reviews. 
Vi var enige om at det kunne føles litt ubehagelig i starten, også fordi vi ikke kjente hverandre så godt. Men vi skulle ta eierskap til dette, og code reviews skulle bli noe av det mest naturlige vi gjorde. Vi måtte altså skape de trygge omgivelsene for å koble det til noe positivt. En viktig del av dette var å ikke tenke på rettelser i kode som kritikk av person, men at vi som team er på vårt beste når vi deler og gjør ting sammen.

Vår vei til trygg delingskultur

Nå har vi testet ut mye forskjellig for å skape disse trygge rammene. Noe har fungert bra, andre ting har ikke fungert helt slik som vi tenkte. Men når jeg ser tilbake til oppstarten, hvor vi var et nytt team og hvor vi er nå, så er det noen grep som jeg er overbevist om at var viktige for at vi har lykkes med å skape en god og trygg delingskultur.

👉 Være nøye på hvordan man ordlegger seg når man skriver reviews

Når man utvikler en modell, så investerer man ganske mye personlig i koden man skriver. Resultatet er jo egentlig et kort sammendrag av hva du kan som Data Scientist. Derfor er det viktig å tenke på hvordan man ordlegger seg når man gjør reviews. Ta for eksempel disse to setningene:

- «Du har glemt å sjekke kvaliteten på modellen»

- «Scriptet sjekker ikke kvaliteten på modellen»

Begge setningene sier akkurat det samme. Men der den første setningen peker på at den som har utviklet koden har gjort en feil, peker den andre setningen på at det er feil i koden. Dette er kanskje detaljer, men likevel veldig viktig. For peker man på at personen som har utviklet koden har gjort noe feil, vil man på sikt begynne å tvile på at det man har utviklet er godt nok for å kunne dele med de andre i teamet.

👉 Lære noe nytt sammen

I teamet vårt har vi ukentlige mob-programmeringer. Gjerne om et tema vi ikke kan noe særlig om fra før. Dette er med på å skape en kultur hvor vi feiler sammen og vinner sammen. Og en herlig bi-effekt er at vi har det ganske morsomt også! Ikke noe er mer frustrerende enn når man sitter ved tastaturet, tror man har svaret på noe vi sliter med å få til, men du får ikke lov til å bidra med innspill før tiden din er ute. Og følelsen av å endelig få til noe man har stått fast på en stund, og så dele den gleden med resten av teamet er fantastisk! 

👉 Det er lov å skryte litt av seg selv (og selvsagt av andre)

Dette er et annet punkt vi setter høyt i teamet. Nå som vi sitter spredt på ulike hjemmekontor skal terskelen for å ringe andre være lav. Har du kommet over noe nytt og spennende, eller fått til noe kult, er det lov å ringe noen for å dele dette. Og det må gjerne være halvferdige script. Dette fører også til at vi senker terskelen for hva som føles trygt å dele med de andre. 

Dette er verdier vi synes er viktige og som vi tror er med på å skape delingskulturen som er så viktig for at et team skal fungere optimalt. Jeg lærer nye ting hver uke av kollegaene mine og det å opprette en ny pull request når jeg er ferdig med en oppgave er det mest naturlige som finnes. For hvis jeg har gjort noe nytt, er det viktig å dele denne kunnskapen med andre i teamet. God kode og gode kommentarer gjør både at læringsutbyttet til mine kollegaer blir bedre, men også mitt eget. For man kan ikke ting godt nok hvis man ikke klarer å forklare det vanskelige på en enkel måte!

Så nå deler vi repoet vårt fra AI-gruppa, åpent for alle.

Resultatet av å etablere en god delingskultur i teamet kan du se her: https://github.com/Kantega-AI-team/AI

Vi har bestemt oss for å dele arbeidet i AI-gruppa åpent. Dette er absolutt ikke en polert versjon med kun flotte eksempler, hvor modeller gir perfekte resultater. Det finnes sikkert bugs og script som feiler også, men vi tror at det ærligste og beste er å dele det man har, med de feil og mangler som måtte være. Vi vil vise oss fra den «ekte siden». Det å være Data Scientist er ikke alltid en dans på roser hvor man kommer fram til det perfekte svaret hver gang. Vårt ønske med å dele dette er å kanskje kunne lære bort noe til noen andre Data Scientister.

Eller enda bedre: Hvis noen finner en eller annen feil, eller har noen meninger om noe vi har gjort, så kan vi også lære noe nytt! Det er sånn man blir gode, gjennom å tørre å dele.