- Lær deg hvordan ting fungerer!

Ukas Koder Benedicte Emilie Brækken er CTO for Kron, og synes flere burde våge seg utenfor editoren.

Benedicte Emilie Brækken sammen med en sparegris. Hun er tross alt CTO i Kron; en app som skal gjøre det enklere å spare i fond. 📸: Privat
Benedicte Emilie Brækken sammen med en sparegris. Hun er tross alt CTO i Kron; en app som skal gjøre det enklere å spare i fond. 📸: Privat Vis mer

Hvordan begynte du med koding? 👶

Jeg begynte ikke med koding seriøst før så «sent» som universitetet. Men jeg var så heldig å bli utsatt for datamaskiner i mange forskjellige former og operativsystemer allerede fra ung alder. Noen av dem var også litt demontert så jeg kunne se hvordan de så ut inni og hvilke kort de hadde.

Jeg lærte fort forskjellen på hva som kjørte på Mac og hva som kjørte på Windows. Ofte i formen av spill. DOOM funket ikke så bra på Mac-en, men der hadde jeg i stedet Damage Incorporated og Power Pete.

På grunnskolen og videregående gikk det derimot mest i å være «data-personen» i klassen. Jeg lekte litt med kode her og der, og det ble noe C# og Flash i IT-faget på videregående. Men det ble aldri noe seriøst ut av det. Likevel beundret jeg de som klarte å «lage ting», for eksempel nettsider, Flash-spill og nye maps til DOOM.

Da jeg begynte på universitetet derimot tok det helt av! Selv om jeg gikk på fysikklinjen, hadde Universitetet i Oslo koding i fokus fra dag én. Vi ble introdusert til Python og det ble veien min inn i en verden av koding.

Det første litt større kodeprosjektet jeg husker vi jobbet på, var å lage et lite bibliotek i Python som samlet algoritmer for numerisk integrasjon. Slik at vi lett kunne ta dem i bruk i prosjekter senere i studiene. Her lærte jeg hvor nyttig det var å skrive gjenbrukbar og portabel kode.

Pulten til Benedicte Emilie Brækken hos Kron. Med en trivelig hilsen til kode24. 📸: Privat
Pulten til Benedicte Emilie Brækken hos Kron. Med en trivelig hilsen til kode24. 📸: Privat Vis mer

Hva jobber du med akkurat nå? 🛠️

For tiden er jeg CTO i Kron – en fintech-startup som har som mål å gjøre sparing i fond enkelt og billig for alle. Med vår tjeneste trenger du ikke mastergrad i finans for å forstå hva som foregår!

Vi har nylig lansert helt ny mobilapp både på iOS og Android! I den sammenheng har det vært mye jobbing med React og JavaScript ettersom vi lagde den med React Native. Og ikke minst føler jeg at jeg har fått en veldig god forståelse for hvordan mobil-app-økosystemet fungerer.

I tillegg har jeg ansvaret for alt vi har av teknologi. I begynnelsen gjorde jeg all utviklingen selv basert på det vi overtok fra konsulentene som lagde den første versjonen. Men nå har jeg heldigvis flere flinke utviklere å støtte meg på. I front på web kjører vi React (eller Preact for de som er interessert, men vi går nok over til React i fremtiden). Backendet kjører vi på Python med SQLAlchemy og Tornado.

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Det første jeg gjør om morgenen pleier å være å ta opp applikasjonsloggene og Grafana for å passe på at alt står bra til med tjenesten. Kanskje også ta en kjapp titt på bug-rapporteringssystemet for å se om noe har dukket opp der.

Jeg prøver å bruke så mye som mulig av tiden min på tekniske ting. For eksempel ved å skrive kode, se gjennom PR’er, eller tweake på Prometheus og InfluxDB-oppsettet vårt.

Ukentlig har jeg maks to faste møter. Jeg prøver å ha minst mulig møter. Møter blir fort lite effektive. I stedet synes jeg det er viktig å ha lav terskel for kommunikasjon. For eksempel hvis noen plutselig trenger noe nytt, kan de komme bort til meg så finner vi som regel en god løsning sammen.

"Kron" på den ene sida, og "mynt" på den andre, i kontorene hos Kron. 📸: Privat
"Kron" på den ene sida, og "mynt" på den andre, i kontorene hos Kron. 📸: Privat Vis mer

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

Hvis du har en kodebase i JavaScript som vokser, vil det fort dukke opp en del tilfeller av tvetydige variabler og uoversiktlig kode. Etter å ha irritert meg en del over dette fant jeg ut at TypeScript er kult! TypeScript innfører nemlig typer i JavaScript. Det fjerner de fleste av disse frustrasjonene og det er veldig fint å slippe å tvile på hva noe er. I tillegg gjør det autocomplete i editoren din mye bedre.

«Etter å ha irritert meg en del over dette fant jeg ut at TypeScript er kult!»

Du kan også definere typer akkurat som du vil, både enkle og mer kompliserte. Samtidig slipper du å legge inn «proptypes» i alle React-komponenter, som uansett bare er jobb å vedlikeholde og holde oppdatert. Og editoren vil advare deg mot en rekke bugs som kan snike seg inn.

Det er også ikke å legge skjul på at jeg er veldig glad i funksjonell programmering. For tiden er det personlige prosjektet å lage en eller annen webapplikasjon med Haskell. Siden jeg aldri har vært borti det språket før er det veldig gøy å komme inn og lære et helt nytt økosystem og måte å strukturere prosjekter på.

Hva er du mest stolt av å ha laget? 🏆

Jeg er veldig stolt av å ha automatisert deployment av NRK.no!

Da jeg begynte i NRK så inneholdt deployment-prosessen veldig mange manuelle steg. NRK.no består selvsagt av mange forskjellige services og de fleste avhenger av hverandre. Dette gjorde deployment-prosessen ganske komplisert. Og siden flere deler av organisasjonen måtte involveres, gjorde det at informasjonsflyten heller ikke var triviell. Noen måtte starte noe, andre måtte starte andre ting, og det måtte selvsagt gjøres i riktig rekkefølge.

Med en blanding av Ansible (orkestrering), Jenkins (kontinuerlig integrasjon) og Saltstack (konfigurasjonsstyring) fikk jeg først og fremst samlet alle de individuelle deployment-scriptene til én playbook. Og videre satt alt inn i én Jenkins-jobb som kunne startes ved å trykke på en knapp.

Selvsagt også med Slack-integrasjon så det var lett å følge med i chatten på hvor langt deployment hadde kommet. I tillegg lagde jeg dashboards i Grafana som sa fra hvis noe var galt.

Til slutt kunne utviklerne gjøre hele deploymenten selv! Og dét synes jeg er veldig viktig at utviklingsteamet kan.

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

Det er en del utfordringer ved å være utvikler. Du er «alltid på jobb», siden det er så lett å få tak i deg på Slack. Du må bli vant til å lære deg domenet, fordi uten det får du ikke en god løsning. Det er også høye forventninger til at «alt bare skal fungere» og det er ikke alltid at «ikke-tekniske» har helt forståelse for hvor mye arbeid det er å lage forskjellige ting.

«...å oversette et ønske om ny funksjonalitet ned til noe konkret som kan implementeres»

Av det jeg synes er aller vanskeligst, så er det nok det å oversette et ønske om ny funksjonalitet ned til noe konkret som kan implementeres. De som ønsker funksjonaliteten har ofte ikke den forståelsen som trengs for å se de tekniske begrensningene. Eller kanskje det kan gjøres små justeringer som gjør det utrolig mye enklere å implementere. Eller at det er sikkerhetsmessige hensyn de ikke tenker på. Eller kanskje det bare ikke fungerer fra et UX-perspektiv.

I slike sammenhenger er det vårt ansvar som utviklere å kunne hjelpe med å balansere alle disse sidene. Og deretter lage en løsning som gir god UX, kan implementeres på en måte som gir mening, og samtidig løser det opprinnelige problemet.

Heldigvis er problemer til for å løses!

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

Dette gjelder kanskje ikke bare akkurat norske utviklere, men jeg ser ofte at det eksisterer en slags frykt for å bevege seg utenfor utviklingsmiljøet. Enten ved å gjøre ting i shellet, jobbe med automatisering og deployment, eller infrastruktur generelt.

Min oppfordring til norske utviklere er å ikke være redd for å gjøre ting i shellet i stedet for editoren din. Bli vant til å bruke git fra kommandolinjen. Finn ut hva «git bisect», «reflog» og «rebase» er og hvordan bruke de for å ha bedre oversikt over hvordan git-treet ditt ser ut. Kjør bygg-kommandoene i shellet i stedet for å trykke «Play» i editoren din. Og når du lager nye prosjekter, bli vant til å sette dem opp med kommandolinjen. Pass på at avhengigheter defineres og installeres på en gjenbrukbar måte. Lær deg hvordan ting fungerer!

Skulle du trenge en hemmelighet i applikasjonen din, ikke ha den i koden. Lag en konfigurasjonsfil og sett den fra environment eller et annet «secrets store» når du skal kjøre applikasjonen i stedet. Pakk noen av applikasjonene du har laget inn i «konteinere». Lei deg en Linux-server i skyen, sett deg inn i hvordan du sikrer den på en god måte og hvordan sette opp noen enkle tjenester der.

Dette kommer til å gagne deg utrolig mye. Jeg mener at det å ha en viss forståelse for, og erfaring med infrastruktur, gjør deg til en bedre utvikler. Selv om du ikke jobber så mye med infrastruktur til daglig, vil det gi deg et bedre utgangspunkt til å løse alle mulige problemer som kan oppstå mens du sitter og koder.

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

Det går med en del energi på jobben, så ofte blir det sofaen med en bok eller Parks and Recreation når jeg kommer hjem.

«De som var på festen kunne logge inn med mobilen sin og gi poeng til hvert innslag.»

Men hvis jeg kommer på noen idéer til ting jeg har lyst til å lage, så gjør jeg det også. Et av de siste prosjektene var en stemmeapp til Melodi Grand Prix-festen. Den bestod av et React-frontend, Python-backend og kjørte i konteinere på serveren min. De som var på festen kunne logge inn med mobilen sin og gi poeng til hvert innslag. Deretter kunne vi gå inn og se om resultatene våre stemte med det offisielle.

Det er veldig gøy å kunne bruke all denne kunnskapen jeg sitter på til å lage sånne morsomme småting, ikke bare i jobbsammenheng.

I tillegg har jeg en nokså sterk interesse for kaffebrygging samtidig som jeg holder en del på med gaming. Jeg er mest glad i «single-player»-spill med spennende historier. Den siste tiden har jeg spilt et spill som heter Control, laget av de samme som lagde Alan Wake og Quantum Break, spill jeg også er veldig glad i. Det går også en del i Borderlands 3.