- Alle utviklere bør bli bedre til å skrive tester!

Ukas Koder Ole Hjalmar Larsen Herje lager spill hos Norsk Tipping, og savner fokus på TDD.

Ole Hjalmar Larsen Herje er konsulent for TRETOEN - nå på oppdrag hos Norsk Tipping som systemarkitekt. 📸: Privat
Ole Hjalmar Larsen Herje er konsulent for TRETOEN - nå på oppdrag hos Norsk Tipping som systemarkitekt. 📸: Privat Vis mer

Hvordan begynte du med koding? 👶

Jeg begynte tidlig å fascinere meg for datamaskiner, og hadde både Commodore 64 og Amiga 500 på gutterommet. Spesielt husker jeg at crack-introene på Amiga trigget nysgjerrigheten på det med programmering.

Det ble lenge bare med nysgjerrigheten, men den var nok en medvirkende faktor til at jeg søkte meg til Datateknikk-studiet på NTNU. Så min første kodelinje ble ikke skrevet før første semester på universitetet.

Jeg husker godt at en medstudent med en del programmeringserfaring loset meg stødig gjennom min første if-else i MATLAB. Det viste seg heldigvis at min mistanke om at koding var gøy stemte.

Koding minner meg fortsatt om gleden jeg hadde som liten gutt med en stor kasse LEGO, og bare fantasien begrenser hva en kan lage.

I løpet av studiene var vi innom flere språk og programmeringsparadigmer, og logikkprogrammering med Prolog var kanskje det mest eksotiske. For min del ble det en bratt læringskurve, men jeg ble ganske rask sikker på at systemutvikling var noe jeg ville jobbe med.

Mine første profesjonelle år som konsulent var på .NET-plattformen med C#, og så ble det etter hvert JVM med Java, Scala og Kotlin. Jeg synes en av fordelene med å være konsulent er at en får jobbet med veldig mye forskjellig teknologi, og det gjør det også lettere å lære nye ting da en har flere knagger å hekte ny kunnskap på.

Pulten til Ole Hjalmar Larsen Herje hos Norsk Tipping. 📸: Privat
Pulten til Ole Hjalmar Larsen Herje hos Norsk Tipping. 📸: Privat Vis mer

Hva jobber du med akkurat nå? 🛠️

Nå er jeg innleid som systemarkitekt hos Norsk Tipping, hvor jeg for tiden sitter tett på teamet som har ansvar for “Instaspillene” (Casino, Flax og Bingo.).

Vi jobber nå primært med å integrere mot en ny spillplatform som er felles for flere nasjonale lotterier. Her skal en både tilby og konsumere API-er backend og frontend. Nye backend-tjenester skrives typisk i Spring Boot med Kotlin, og frontend skrives i React Redux.

Jeg liker å være tett på koden i arkitektrollen og det innebærer koding, gjennomgang av Pull Requests og uttesting av nye teknologier. I tillegg blir det mye dialog med ulike stakeholdere for å forstå behov og utarbeide arkitektur/design. Vi kommer også med innspill til hvordan integrasjonen med ny spillplattform bør være.

«Jeg prøver å legge koding til dager med lite møtevirksomhet, for å kunne være i “sona” over litt tid.»

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Min arbeidsdag starter rundt kvart over åtte, med å se over innboks og kalender for å planlegge litt hva jeg ønsker å få utført i løpet av dagen.

Som systemarkitekt inngår jeg i det vi kaller “Program-Team”, og vi har fast standup 08:45. Her er det fokus på de litt større sakene i inneværende og neste Program Increment - Norsk Tipping benytter seg av SAFe-metodikken.

Utviklingsteamet jeg sitter i har standup 10:30, og her er fokus flyt av utviklingsoppgaver til produksjon. Ellers kan mengden møter variere stort fra dag til dag. Jeg prøver å legge koding til dager med lite møtevirksomhet, for å kunne være i “sona” over litt tid. Andre dager blir det mange skritt, mye dialog og lite tid til koding.

Jeg liker denne variasjonen der en jobber med det store bildet den ene dagen og dykker ned i detaljene den neste. Og jeg tror det bidrar til gode løsninger. Så oppsummert finnes det ikke så mange “typiske” arbeidsdager i oppdraget jeg er på nå.

Lokalene rundt Ole Hjalmar Larsen Herje hos Norsk Tipping. 📸: Privat
Lokalene rundt Ole Hjalmar Larsen Herje hos Norsk Tipping. 📸: Privat Vis mer

Hva synes du er de mest spennende språkene, rammeverkene eller teknologiene akkurat nå? ✨

Det er alt for mye spennende som foregår! Jeg kan trekke frem to ting jeg har brukt litt tid på i det siste, og som jeg ønsker å jobbe mer med:

Jeg synes det skjer mye spennende rundt konseptet med å “unbundle” databaser, og bruke stream processing for å bygge elegante distribuerte systemer. Kafka er en teknologi som muliggjør å lage slike løsninger.

Jeg har lenge vært begeistret for actor-modellen og tankegodset fra Erlang OTP. Dette gjør at jeg synes Elixir er et svært spennende språk og har begynt å lære meg det. En må jo nesten være nysgjerrig på teknologi som klarer å levere 99.9999999% oppetid.

Hva er du mest stolt av å ha laget? 🏆

Det er ikke noe spesielt av nyere tid som skiller seg ut. Og det henger kanskje sammen med at en stadig utvikler seg, og ser forbedringspotensiale i gammelt arbeid.

Det jeg husker best er mestringsfølelsen, og kanskje litt stolthet, rundt det å klare de første litt større programmeringsoppgavene på universitetet. Det at jeg klarte å knekke kode-koden :-) Jeg husker blant annet en artig oppgave i faget “Sub-symbolske AI-metoder”, hvor vi skulle programmere en løsning for å finne veien gjennom en labyrint basert på kunstige nevrale nett.

Ellers tror jeg det er viktig å sette pris på de små seirene en har i løpet av hverdagen: Finne ut av en bug, komme på et elegant design, forenkle kode og så videre.

Hva er det vanskeligste ved å være utvikler? 🤷

Det er alt for mye spennende å sette seg inn i, og døgnet har bare 24 timer.

Jeg har i stor grad prioritert bort frontend de siste årene. Dette enorme havet av potensiell kunnskap kan jo igjen føre til at en føler seg utilstrekkelig i noen sammenhenger, men heldigvis blir en litt mer avslappet til slike ting med alderen.

«Frykten for å føle seg dum er også tilstede som utvikler, og dette kan være slitsomt hvis en ikke klarer å legge det til side.»

Frykten for å føle seg dum er også tilstede som utvikler, og dette kan være slitsomt hvis en ikke klarer å legge det til side. Jeg har ennå til gode å møte noen som ikke ønsker å hjelpe eller lære bort noe dersom en spør på en hyggelig måte.

Det kan også være utfordrende å forklare hva en egentlig jobber med til slekt og venner - spesielt i disse juletider når slekta skal ha hjelp med PC-en. :-)

Hva synes du norske utviklere bør bli flinkere på? 🙋

Mitt inntrykk er at norske utviklere er flinke til å holde seg faglig oppdatert, og det er bra!

Det var mye fokus på TDD tidlig på 2000-tallet, da jeg var fersk konsulent. Jeg har litt inntrykk av at det ikke er det i like stor grad nå? Jeg mener at å skrive testbar kode og gode tester er noe alle utviklere bør bli bedre til, inkludert meg selv.

Det krever mye øving og innsats for å få det til, men gevinsten er verdt det: En stabil spesifikasjon av hva koden din skal gjøre, og en kjørbar dokumentasjon av hvordan en interagerer med den. Dette er utrolig kraftig, og gjort riktig tillater det store endringer av implementasjon med trygghet.

Det er også lett å leve i sin egen “utvikler-boble”, hvor koding er det viktigste. Men min erfaring er at det sjelden er teknologivalg som for eksempel valg av programmeringsspråk som avgjør om et prosjekt eller initiativ blir en suksess eller fiasko. Så kanskje en kan bli flinkere til å ta mer ansvar for at omgivelsene koden produseres i fungerer på en god måte? Er det lett å omsette et behov til kjørende kode i produksjon?

Litt i samme gate savner jeg at en virkelig tar tak i potensialet som ligger i modne skyplattformer.

Hva liker du å gjøre når du ikke jobber? 🕹️

Nå er det familie som tar desidert mest tid. Men jeg liker å lese faglitteratur, og teste ut nye språk og teknologier ved anledning.

Ellers er det mange fysiske aktiviteter jeg synes er gøy, men bruker alt for lite tid på: Stisykling, squash, fotball, snowboard og ski.