Utviklerprofilen

Utvikleren Mikael Brevik elsker Javascript: – Det er ikke noe som er så enkelt som å ikke like noe man har bestemt seg for å hate

Les ukens utviklerintervju.

Mikael Brevik.
Mikael Brevik. (Foto: Privat)

Les ukens utviklerintervju.

Hei, dette er en Ekstra-sak som noen har delt med deg.
Lyst til å lese mer? Få fri tilgang for kun 235,- i måneden.
Bli Ekstra-abonnent »

Ukens utviklerprofil er Mikael Brevik (30), som etter mange år i Bekk Consulting for ett år siden var med på å starte konsulentselskapet Variant i Trondheim.  Han er utdannet dataingeniør fra Høyskolen i Sør-Trøndelag (nå NTNU Kalvskinnet) og har også en mastergrad i kunstig intelligens fra NTNU Gløshaugen.

Kan du kort beskrive stillingen og oppgavene dine?
Vi er nå snart 19 ansatte i Variant, med en nesten lik fordeling av utvikling og design av alle former. Vi fokuserer foreløpig på kundegrupper i Trøndelagsregionen, men har også kunder andre steder.

I Variant har jeg rollen som Chief Community Officer hvor jeg har ansvar for fag, kulturbygging og vår involvering med fagmiljø rundt oss. Som konsulent er jeg også leid ut til kunder. Der er jeg leid ut primært som utvikler, noen ganger arkitekt og teknisk rådgiver, og andre ganger for opplæring og kursing.

Hvorfor valgte du akkurat denne arbeidsgiveren?
Jeg ønsket å eksperimentere med hvordan man kunne gjøre kulturbygging, hvilke tjenester som kan tilbys og hvordan man bygger opp et selskap sentrert rundt åpenhet og endringsvilje. Da er det en fordel å kunne ha et selskap som er uten egen historie og uten ferdig etablerte rutiner. Jeg kom inn som nummer 3 i selskapet, helt i begynnelsen, og har vært med å sette retning for hvordan Variant skal være som selskap. Det å kunne være med å forme en tanke om hva et selskap skal være og muligheten til å realisere det med hyggelige mennesker er klart motiverende og vanskelig å si nei til.

Hvor jobber du mest, på kontoret, på hjemmekontoret eller ute hos kunder?

Det å kunne være med å forme en tanke om hva et selskap skal være og muligheten til å realisere det med hyggelige mennesker er klart motiverende og vanskelig å si nei til

Det kan variere veldig fra kunde til kunde. Hvordan de er bygd opp og hvor de holder til. Vi ønsker gjerne å sitte ute hos kunde for og ta del i mer enn bare implementasjon av utvikling eller design. Vi prøver oss som «profesjonelle kulturbærere», og for at det skal fungere er vi avhengig av å bygge relasjoner med de rundt oss hos kunden.

Kan du fortelle litt om prosjektet/prosjektene du har jobbet med i det siste?
Det prosjektet jeg jobber med akkurat nå kan jeg ikke si så mye om. Det involverer aggregering, lagring og prosessering av meldinger i en kø, men så mye mer kan jeg ikke si.

Jeg kan si litt mer om det prosjektet jeg jobbet på tidligere derimot. Jeg satt hos Lånekassen her i Trondheim, i deres IT-utviklingsmiljø. De fleste som leser dette har nok kjennskap til og i det minste hørt om hva Lånekassen gjør. De ser på seg selv som en bank hvor i alle fall jeg er en av kundene. Faktisk så er de Norges nest største bank, med, om jeg husker dette rett, over 1 million kunder. Hos de jobbet jeg noe med omskriving av autentiseringsmekanismer, men siste perioden min der jobbet jeg mest som arkitekt og frontendarkitekt under konsept- og planleggingsfase av nye lanekassen.no som de har startet arbeidet med. Lånekassen har mange forskjellige systemer og kundefronter de jobber med, og nå er de i gang med å etterhvert gjøre en helt nyutvikling av lanekassen.no hvor alt skal få et løft og gjøre det mye mer tjenesteorientert for oss som kunder.

Hvor lenge har du jobbet som utvikler?
Jeg syns alltid det er vanskelig å si noe om fartstid med høy presisjon. Jeg kan si jeg fikk min første skattesmell via enkeltpersonforetaket mitt rundt 2006, men var ferdig utdannet fra Datateknikk på NTNU i 2013. Da jeg først flyttet til Trondheim i 2008, gikk jeg bort fra å skaffe utviklingsoppdrag selv som frilans, til å jobbe deltid i et lite medieselskap. Der var jeg leid ut hos ulike kunder både i Oslo og Trondheim.

Hvor gammel var du da du først begynte å lære deg programmering?
Til jeg var litt over 14 år var det en ting som sto på min agenda: fotball. Det var Manchester United-tapet over hele rommet, de prydet gardiner og sengesett. Når jeg ikke spilte selv, tegnet jeg portretter av lagoppstillingen til 98/99-sesongen. Jeg fikk øynene litt opp for data på ungdomsskolen da vi hadde en IT-ansvarlig som hadde interessegrupper for data. Der fikk jeg lære Frontpage 2000 og koblingsrekkefølgen for twisted pair-kabler. Etterhvert gikk det over til en dyp interesse i Counter Strike 1.6 som videreutviklet seg til interesse for å sette opp servere, skrive tcl eggdrop-scripts for IRC bots og til slutt lage nettsider for CS-lag som vi spilte på. Interessen tok overhånd og det ble raskt til en langvarig lidenskap.

Mikael Brevik. Foto: Privat

Hvilke plattformer utvikler du vanligvis for?
Det er web og særlig frontend som er og har vært min største kjærlighet over årene. Tidvis er jeg innom prosjekter som ikke er direkte web-relaterte og trives med det også, men jeg kommer alltid tilbake til den fantastiske web-en.

Hvilken pc-plattform/OS foretrekker du selv å bruke? Kan du fortelle litt om hvorfor?
Helt siden desember 2005 da jeg fikk tak i min første iBook G4 har det vært macOS i en eller annen form som har vært mitt go-to OS. Jeg husker en venn av meg snakket om å kjøpe seg en Mac, som jeg avfeide kjapt som tull og overpriset jåleri for folk som ikke ville spille spill. Så gikk det kanskje knappe 6 måneder før jeg glemte mitt eget standpunkt og ventet på en pakke fra Nederland. Da var det programmering som sto på agendaen og hadde fått for meg at Mac hadde mange gode verktøy for å gjøre det. Den gang programmerte jeg mye i PHP og det hjalp at det mye brukte dollar-tegnet i det språket var lett tilgjengelig via Shift + 4. Mulig det hadde vært litt billigere å byttet til US keyboard, men jeg ble i alle fall overbevist av byggkvaliteten og multitouch støtte på laptop-ene. Jeg må være såpass freidig å påstå at selv nye, dyre, ikke-Apple laptops i dag ikke har touchpaden som kan måle seg med det Apple leverte alt den gang. OS-et i seg selv har også alltid passet meg. Det har vært den fine kombinasjonen mellom fleksibilitet og stabilitet på et vis. Om jeg vil ha kontroll over noe har jeg muligheten, men ofte vil jeg ikke bruke mye unødvendig tid på å konfigurere opp ting for nøye selv. Det var en tid hvor jeg syns det var morsomt, men etterhvert som tiden går føler jeg det blir mer og mer i veien for mye av det jeg ønsker å gjøre. Jeg bruker også en del Adobe-produkter (Premiere, Lightroom) og Sketch i tillegg til selvfølgelig kravet om en god terminal.

Hvilke programmeringsspråk benytter du?
Jeg er en stor fan av programmering og programmeringsspråk generelt. Det vil si jeg liker å lære om forskjellige språk og paradigmer. Hva som blir brukt i prosjekter er ofte avhengig av mye mer enn mine preferanser – og det er slik det burde være etter min mening. Hva slags forutsetninger er det hos kunden? Hvem skal mest sannsynlig overta koden? Hvor skal det kjøre? Hvilket problem skal løses? Osv. I løpet av karrieren min har jeg brukt alt fra Java, Scala, Python, F#, C#, TypeScript, JavaScript og om vi går riktig langt tilbake, PHP. I tillegg kommer selvsagt ting som CSS og HTML som jeg liker godt og syns ofte er undervurdert som språk i enkelte kretser. I tillegg eksperimenterer jeg ofte med ulike programmeringsspråk på fritiden. Alt fra ML-baserte språk som Haskell og særlig OCaml og ReasonML til Lisp og Rust.

Hva er favorittspråket og hvorfor?
For de som kjenner meg er det kanskje ikke overraskende at jeg sier at JavaScript er et fantastisk språk. Et så tilgjengelig, fleksibelt og på mange måter fascinerende språk er lett å like for min del. Jeg vet det er mange som syns det også er lett å mislike, men ofte mener jeg det kommer fra et sted hvor man ønsker å mislike det. Og det er ikke noe som er så enkelt som å ikke like noe man har bestemt seg for å hate. Og det er nok ikke så unaturlig når det er et språk og en plattform som mange blir tvunget over på uten å ville det. Da blir det til at vi bare gjør minimale innsatsen for å få det gjort, uten at vi reflekterer over hvordan vi gjør det eller hvordan vi kan lære av det.

Et så tilgjengelig, fleksibelt og på mange måter fascinerende språk er lett å like for min del

Men om man tar seg tid til det er det et skjønt lite språk som venter. Et lite språk som har de byggeklossene man trenger og den fleksibiliteten man kan trenge til å gjøre det man ønsker. Sentralt i språket er objekter og funksjoner (som egentlig også bare er objekter), og programmering er jo ofte egentlig bare transformering av informasjon på en form til en annen. Så at du har gode egenskaper for funksjoner i et språk er viktig for min del. Og det har JavaScript. Det har første klasses funksjoner som man kan holde i variabler og manipulere, det har høyere ordens funksjoner som gjør at de kan ta i mot og gi tilbake andre funksjoner, og det har «ergonomiske» objekter for å holde på data av ulik type.

Vi kan egentlig beskrive JavaScript på samme måte som vi kan beskrive et godt brettspill: Enkelt å lære, vanskelig å mestre. Og dette er på godt og vondt i JavaScript. Det kan være vi møter på noe som er uventet når vi kommer fra andre plattformer, men det er også mye sans av læring og progresjon.

Hvilke to verktøy greier du deg ikke uten, og hvorfor?
Etterhvert som jeg har blitt eldre merker jeg at jeg blir mindre og mindre opptatt av konkrete verktøy. Usikker på hvorfor det er blitt slik, men det er ikke noe konkrete verktøy jeg har som jeg bare må ha. Det kommer selvsagt an på hvilket nivå man legger det på, men du kommer langt med en hvilken som helst editor (nå bruker jeg VSCode) og en terminal (bruker nå iTerm 2). De eneste litt mer spesifikke verktøyene jeg kommer på som jeg er avhengig av er jump for zsh, slik at jeg kan navigere raskt mellom markerte mapper i filsystemet, og for utvikling er jeg vært helt avhengig av Prettier de siste årene. Prettier er en «pretty printer» for abstrakte syntakstrær av forskjellige språk. Den parser komplett kildekode og printer den tilbake i formatert orden ut i fra etablert standard (med lite valgmuligheter). Det har endret helt måten jeg skriver kode på.

Hva slags oppgaver liker du best å jobbe med?

Jeg liker egentlig aller best å lære og anvende det jeg lærer til å løse problemer av forskjellig slag, og utfordre meg selv til å bli bedre i det jeg gjør

Dette varierer nesten fra dag til dag. Noen ganger blir jeg helt opptatt av å få til animasjoner på rett måte i en nettleser, eller sette opp fornuftig byggesteg på en CI, eller lage utviklerverktøy eller bare skrive funksjoner som transformerer data rått og brutalt, eller gjøre dypdykk i kode for debugging. Andre ganger trives jeg best med mentoring, kulturbygging og holde kurs, eller lage læringsmateriale og videoinnhold.

Jeg liker egentlig aller best å lære og anvende det jeg lærer til å løse problemer av forskjellig slag, og utfordre meg selv til å bli bedre i det jeg gjør. Om vi ser bort i fra konkrete oppgaver, trives jeg aller best når jeg jobber med andre som er engasjert i det de driver med.

Hvordan sørger du for å holde deg faglig oppdatert?
Det er ulike måter jeg holder meg selv oppdatert på. En viktig del er å snakke med folk og ha faglige samtaler. Jeg elsker å snakke om utvikling og fag generelt og lærer mye av andre mennesker som har ulike erfaringer med ting jeg ikke kan. Det er mye derfor jeg var med å starte Meetup-en BartJS i Trondheim. Dette førte også til at jeg, sammen med gode venner, startet en programmeringsorientert podcast om alt av JavaScript, hvor vi møtes hver måned for å snakke om fag – gjerne med gjester som har hatt en presentasjon om noe. Denne podcasten, BartJS Podcast, har nå eksistert siden 2015. I tillegg har jeg en bi-ukentlig podcast om utviklerlivet generelt sammen med Stian Veum Møllersen. Denne podcasten har vi kalt Kortslutning og vi har gitt ut annenhver uke i halvannet år. Jeg ga også ut ukentlig programmeringsvideoer via Kodesnutt.io i et helt år. Det gjorde at jeg lærte mye om både kommunikasjon og tekniske temaer.

En viktig måte å holde meg oppdatert på er å holde presentasjoner og kurs i forskjellige forum. Enten på meetup, konferanser eller internt hos kunder. Dette har vært et viktig verktøy for å motivere meg selv til å sette meg inn i forskjellige temaer og reflektere over det jeg lærer.

Den daglige oppdateringen får jeg via artikler og innhold fra Twitter og nyhetsbrev. Jeg bruker ofte Pocket App til å organisere artikler om forskjellige temaer som jeg leser når jeg har ledig tid.

I hvilken grad har metoder og teknologier som DevOps, maskinlæring, nettsky og konteinere endret måten du jobber på?
DevOps og sky har egentlig på forskjellige nivå alltid vært der for min del. I alle fall om man ser bort i fra den perioden hvor jeg brukte FTP for deploy. Men det har vært enkelte kunder som ikke har vært like frempå når det kommer til kontinuerlig integrasjon og feedback loops. Det jeg merker det mest på er eierskap og ansvarsfordeling. Det er mye lettere å kjenne på ansvaret for det som kunden faktisk opplever i produksjon dersom du har direkte innvirkning på hvordan det kan endres. Og dette gjør at team som helhet kan dele eierskap i større grad. Og det er slik det burde være mener jeg. I tillegg har det jo betydd en del andre ting å lære seg. Jeg ender ofte opp med å sette opp CI-systemer og har måttet satt meg inn i mange forskjellige måter å bygge kode på. Noe jeg også liker godt.

Ser du noen trender framover som virkelig vil forandre hverdagen til utviklere?

Jeg tror ikke «jeg gjør bare jobben min» vil være en unnskyldning som kan leve lenge

En trend som jeg gledelig observerer og som jeg tror kommer til å fortsette er det vi kanskje kan kalle noe slikt som «empatidrevet utvikling». Vi innser at det handler egentlig ikke bare om de kodelinjene vi skriver men innflytelsen de kodelinjene har på samfunnet vi lever i. Vi kan ikke sitte med skylapper i vakuum og forvente at det vi gjør ikke har noen konsekvenser. Og med kunstig intelligens og datasamling blir disse konsekvensene mer og mer synlig. Våre menneskelige fordommer følger oss over til skjevheter i system og gjør det ekstra synlig. Jeg tror ikke «jeg gjør bare jobben min» vil være en unnskyldning som kan leve lenge.

Hvilke teknologier eller fagområder skulle du gjerne kunnet mer om?
Jeg merker at jeg blir mer og mer interessert i kommunikasjon av ulike former. Innser sakte men sikkert at kommunikasjon berører alle deler av arbeidsområdet uansett hva jeg gjør. Bare på overflaten er kommunikasjon viktig for samtaler med kunder og i presentasjoner. Men det er også samarbeid og kulturbygging. Det er å formidle informasjon på en god måte til andre for å representere din interne dialog på en rettferdig måte. Men kode er også en form for kommunikasjon. Ikke bare til maskiner, men til andre konsumenter av koden. Kolleger eller til og med deg selv i fremtiden. Og som med det meste annet viser det seg at kommunikasjon er et eget fagfelt og det er noe man kan jobbe med å bli flinkere på.

Av teknologier er det et hav av områder jeg kunne tenkt meg å vite mer om. Det meste faktisk. Det mest nærliggende er kompilatorteknikk og språkteori. I web-ens verden beveger det seg nå en del rundt Web Assembly som videre styrker nettlesere og web som en helt utrolig tilgjengelig distribusjonsmekanisme. Vi har alt sett en del interessante virkninger av dette, men vi kommer nok til å se enda mer den kommende tiden. Jeg kunne tenkt meg å satt meg mer inn i detaljene av WASM.

Deltar du jevnlig på konferanser? I så fall, hvilken er den viktigste for deg?
Jeg er alltid på minst en konferanse i året. De siste 3-4 årene har det, utover de jeg har snakket på, vært JSConf EU og CSSConf EU i Berlin og Web Rebels i Oslo. Dette er konferanser som treffer veldig godt på krysningspunktet mellom teknologi og mennesker. Det er ting som ikke kan understrekes viktigheten av nok.

Hvilket forhold har du til innebygd personvern?
Jeg syns vi som utviklere i større grad må være flinke til å bidra til at teknologien vi utvikler ikke er kynisk. En viktig del av det er å ivareta personvern.

Bidrar du, enten i jobben eller på fritiden, til noe åpen kildekode-prosjekt – i så fall, hvilke(t)?
Jeg er stor fan av Open Source, både fra et filosofisk standpunkt, men også som arbeidsmetodikk og metode. Mye av de grunnleggende kjerneverdiene vi har for Variant er bygget på Open Source-tankegang.

Nå bidrar jeg ikke aktivt til andres store Open Source-prosjekter, men har tidligere bidratt i ting som Bootstrap, TinyMCE, Facebooks Flow og Jest, Bucklescript av Bloomberg, andre OCaml-prosjekter, og andre små prosjekter. I tillegg har jeg drevet mye med egne Open Source-prosjekter. Den mest brukte er vel en pakke for lokal utvikling på Node.js-plattformen som heter node-notifier. Et kryssplattformsverktøy for å sende notifikasjoner på OS-nivå. Den ligger på over 4 millioner nedlastninger i uka.

Hvor mye programmerer du på fritiden?

Det har vært mye programmering på fritiden igjennom årene. Det er og har vært primærhobbyen i tillegg til jobb

Det har vært mye programmering på fritiden igjennom årene. Det er og har vært primærhobbyen i tillegg til jobb. Enten det har vært kode igjennom programmeringsvideoer, Open Source, eller bare rent esoteriske oppgaver av for å få utløp for nysgjerrigheten min. Om jeg begynner på et prosjekt eller har en hypotese jeg vil teste blir jeg ofte litt for opphengt i det og det blir fort det eneste jeg greier å konsentrere meg om. Sannsynligvis til fortvilelse fra andre i husholdningen.

Har du noen (andre) hobbyer?
Siden jeg startet med podcast og kodevideoer har jeg fått mer og mer øynene opp for produsering av innhold i varierende former. Jeg er blitt mer og mer opptatt av lyd og lydutstyr, og kamera og filming. Nå i det siste har jeg vært veldig opptatt av å lære meg mer om fotografering og filming. Det har ført til månedsvis med research i kameraer, mikrofoner, tripods, filter, linser, sekker, osv. Selvfølgelig antok jeg automatisk at om utstyret er på plass, så er ferdighetene det også. Merkelig nok viser det seg at dette ikke stemmer. Så nå har jeg brukt mye av den siste tiden på å lære meg mer om komposisjon, god eksponering og planlegging av bilder og video. Jeg har et veldig langt stykke å gå enda, men jeg syns i alle fall det er morsomt.

Hva gleder du deg mest over ved å jobbe som utvikler?
Jeg finner veldig stor glede i å bli introdusert for nye fagfelt å lære noe om. Alle domener man blir utsatt for å må sette seg inn i for å kunne løse problemer i. Og alle fantastiske mennesker man møter som har forskjellige erfaringer og kommer sammen for å prøve å løse noe som har innvirkning på så mye mer enn bare oss selv. Å lære nye ting uansett hva det måtte være gir meg stor glede. Og heldigvis mister vi aldri den muligheten som utvikler.

Opplever du at jobben som utvikler har noen negative sider?

Vi som utviklere er for flinke til å tenke micro-nivå når vi egentlig burde tenke langsiktig og på det hele bildet

Det er klart at det finnes noen negative sider med å jobbe som utvikler, slik som det er negative sider med alle andre jobber. Eksempelvis, syns jeg vi som utviklere er for flinke til å tenke micro-nivå når vi egentlig burde tenke langsiktig og på det hele bildet, og jeg mener vi burde ta større ansvar for konsekvensene vi har på omverden fra et etisk perspektiv.

Men fra et personlig plan ser jeg også enkelte ulemper med min egen personlighetstype og mitt karrierevalg. Jeg blir veldig oppslukt i å lære meg nye ting og utforske. Det er tidkrevende og det tar all oppmerksomhet. Det betyr at jeg sikkert ofte jobber for mye med det. Jeg liker det godt og trives godt med det, men det går også utover andre enn meg selv. Det betyr også at i perioder hvor jeg ikke føler meg så produktiv, eller i perioder hvor ønsker går mye høyere enn energi og motivasjon, så må jeg leve med en absurd følelse av dårlig samvittighet for at jeg ikke gjør det jeg ønsker eller føler jeg må gjøre.

Hva er det beste frynsegodet du får?
Det kommer an på hva man ser på som frynsegode, men jeg liker veldig godt måten vi har bygget Variant rundt åpenhet. Ikke bare åpen i informasjon, men åpenhet for endring og endringsvilje. Det at alle ansatte er med å bestemmer hvordan vi skal gjøre det, hvilke kunder vi satser på, hvilket prosjekt vi ønsker å være på, hvordan vi skal fremstå, osv.

Kommentarer (0)

Kommentarer (0)
Til toppen