Hvorfor ble du utvikler? 👶
Min grandonkel som hadde jobbet med å installere IBM-stormaskiner hadde en masse gamle 80{,1,2}86-maskinvare liggende, samt noen fysiske IBM C-kompilator-manualer.
Jeg pleide å tilbringe skoleferiene i garasjen hans og en dag viste han meg at du kunne få datamaskiner til å gjøre ting for deg. Da ble jeg hekta. Jeg begynte med å kopiere eksempelprogrammer fra manualene og modifisere dem – de krasjet selvfølgelig med én gang.
Jeg begynte å jobbe rett etter skolen som selvstendig konsulent og tok på meg alt jeg kunne finne av jobber. Det var alt fra web-relaterte ting, kommersiell 3D-visualisering i skreddersydde OpenGL-motorer (før programmerbare shader-pipelines eller gode gratis motorer var en ting), og jeg brukte til og med tid på tidlige versjoner av "computer vision" for OCR. Jeg hostet også enkelte systemer for klienter og private sideprosjekter her og der, og de ble hacket – så jeg lærte en del på "den harde måten".
Jeg fant stabilt og mer langvarig arbeid innenfor telekommunikasjon, der jeg skrev lavnivå nettverksprotokoller i C++. Litt senere gikk jeg over til fintech-bransjen, der jeg fikk jobbe med et veldig bra team som vedlikeholdt et ende-til-ende-kryptert meldingssystem.
Tjenesten fikk mange brukere mye raskere enn vi visste hvordan vi skulle håndtere på den tiden, og det var her vi fant ut at Go var et veldig bra valg. Go er spesielt godt egnet for nettverksapplikasjoner, og kunne håndtere ekstreme belastninger med begrensede ressurser eksepsjonelt bra på den tiden.
Siden den gang har jeg vært mest lykkelig når jeg har kunnet utvikle systemer som involverer nettverks-I/O på en eller annen måte, krypto (kryptografi – ikke den andre...) og identitet.
Hva jobber du med? 💪
På jobben bruker jeg det meste av tiden på å videreutvikle en fleksibel åpen kildekodebasert API-gateway i Lua og Go. Den vil erstatte et tungt kommersielt system, og med en gang alt er migrert vil den betjene hundrevis av API-er innenfor mange ulike bruksområder.
Vi har lagt ned betydelig med tid på å sikre at alt er satt opp på en pålitelig og sikker måte, og at vedlikehold av den vil være bærekraftig for teamet.
På privaten, når jeg ikke ramler av sykkelen i skogen, er jeg glad for å ha litt tid igjen til å jobbe på sideprosjekter. For øyeblikket involverer det å ta i bruk DNSSEC, og noe eksperimentelt (men antagelig idiotisk) med FUSE.
«På privaten, når jeg ikke ramler av sykkelen i skogen, er jeg glad for å ha litt tid igjen til å jobbe på sideprosjekter.»
Hvordan ser oppsettet ditt ut? 💻
På jobb har jeg en Macbook Pro med minimal administrasjon. For øyeblikket er Mac eller PC de eneste godkjente alternativene på jobb, og jeg velger heller en Mac med BSD-brukermiljø og PF over Windows.
Privat bruker jeg en Macbook Air for mobilitet, hovedsakelig som en avansert SSH-klient til Debian- eller Gentoo-baserte sky-VM-er. Batterilevetiden på ARM-baserte Macbooks overbeviste meg, og jeg har hatt litt (anekdotisk) uflaks med andre merker nylig. Om vinteren holder jeg meg varm med en Threadripper-desktop som kjører Gentoo. Jeg har Windows dual-boot på en maskin, men den bruker jeg stort sett bare til å starte Steam og avinstallere Copilot.
Som editor har jeg en "fin-tunet" Neovim med LSP for språk jeg liker eller jobber ofte med, og VSCodium for de andre.
Jeg har brukt GH Copilot, GPT-4o/o1-preview og Claude av og på. Jeg synes de er litt nyttige for boiler-plating eller når jeg glemmer spesifikk syntaks, men jeg synes fortsatt at denne generasjonen av "AI" (også kjent som fancy autofullfør) fører til at jeg kaster bort tid for alt som ikke er trivielt, eller når det trengs nyere og mer oppdatert informasjon. I hvert fall foreløpig.
Hvordan ser uka ut for deg? 📆
Det er en hybridløsning med en blanding av både kontor og hjemmekontor, avhengig av hva som passer best i henhold til ukens kalender.
Det er godt å være på kontoret når teamet mitt er der, mens jeg på den andre siden liker å kunne jobbe fokusert fra et stille hjemmekontor når jeg har godt definerte oppgaver jeg må gjøre.
Akkurat nå er jeg ganske fornøyd med balansen mellom møter og fokustid, sammenlignet med hvordan dette var for meg tidligere. Jeg er også ganske fornøyd med at teamet vårt har litt fleksibilitet når det gjelder å velge måter å jobbe på som fungerer bra for oss. For eksempel så bruker vi Scrum på en måte som hjelper teamet, i stedet for å slavisk følge metodikken.
Det er regelmessige informasjonsdelingsmøter mellom avdelinger og team, samt bredere samlinger og seminarer. Internt mener noen at informasjonsdelingen kan bli bedre, men jeg synes de er ganske gode på dette.
Hva er det neste du har lyst til å lære deg eller bli bedre på? 🧠
Jeg har hatt glede av å komme tilbake til lavnivå systemutvikling igjen, og bruker dette som en måte å få mer erfaring med Rust, som har stått på læringslisten min en stund nå.
Når jeg ikke sitter foran en datamaskin, har jeg lyst til å konkurrere i en Megavalanche snart – og komme i mål med en god tid. De tekniske sykkelstiene rundt Oslo har vært en flott måte å forberede seg på, og jeg føler jeg har gjort store fremskritt siden jeg begynte å sykle der.
Hva er den mest utfordrende situasjonen du har stått i? 👀
I en tidligere jobb hadde vi et midlertidig nettverksbrudd i forbindelsen mellom regioner. Den ble gjenopprettet ganske raskt av skyleverandøren, men systemet hadde så mange aktive brukere at når forbindelsen kom opp igjen, så gjorde "trafikkrushet" at den tilgjengelige kapasiteten ble fullstendig overbelastet (både når det gjelder compute og nettverksnode-båndbredde).
Det å gjenopprette tjenesten var en omhyggelig sjonglering som innebar å rute trafikk til deployments i andre geografiske regioner (for å bruke latency til å redusere gjennomstrømmingen), og så forsiktig returnere trafikken etter hvert som mer kapasitet ble tilgjengelig igjen.
Vi var bare to personer tilstede da problemet oppsto, og det var uansett vi som hadde ansvaret for systemet. Vi fikk først panikk, men det hjalp at vi tok oss tid til å roe ned først og tenke gjennom endringene for å vurdere om det ville gjøre ting verre i stedet for bedre.
Hva ser du på som bransjens største utfordring akkurat nå? 🔭
Mange populære tjenester og plattformer er ikke laget med brukerens beste interesser i tankene. Mange ting vi tar i bruk i livene våre, og kjører på enhetene våre, utnytter oss for å måle engasjement og tjene penger.
Det utgjør kanskje ikke noen stor forskjell, men jeg prøver å støtte alt som respekterer brukerne sine i stedet for å utnytte dem.
Det er to ting jeg er mest bekymret over med nyere former for "AI":
- Den første er at det vil bli brukt til å analysere eller oppsummere menneskers atferd uten tilsyn, ansvarlighet eller mulighet for innsigelser.
- Den andre er at det kan resultere i at noen typer programvare som mennesker er nødt til å bruke, blir dårligere enn den allerede er – for å kutte kostnader.
Vi har godt av å jobbe for å motvirke disse risikoene når vi kan.
Hva er ditt beste tips til andre utviklere? 🤖
- Produktivitet: Hvis jeg ser at jeg unngår å gjøre noe som må gjøres, eller ikke er i stand til å fokusere, har jeg funnet ut at Pomodoro-teknikken er en god måte å lure seg selv til å komme inn i flyten på. Ofte trenger jeg ikke å sette timere på de påfølgende øktene.
- Om karrieren din: En mentor sa nylig til meg at du ender opp med å få ansvaret for det du har vist at du er god til, eller melder deg frivillig til å gjøre uten å vite om det. Det betyr at hvis du organiserer et prosjekt eller roadmapen til et team, så kan du etter hvert ende opp i en produkt- eller lederrolle. Helt fint om det er det du ønsker, men tipset mitt er: Velg bevisst det du liker å gjøre!
- Om ansettelser: Jeg kan ikke uttale meg om alle ansettelsessituasjoner, men tidligere når vi har valgt om vi vil gå videre eller ikke med en kandidat, så har kandidatens emosjonelle modenhet og ydmykhet ofte spilt en stor rolle. Det gjelder spesielt hvor godt et nytt teammedlem vil passe inn i en "tjenende lederrolle" til stillinger som er mer senior. Personlig foretrekker jeg å jobbe med team-medlemmer som løfter andre. Jeg er sikker på at det er andre som tenker det samme, og tar ansettelsesbeslutninger basert på dette.