Hvordan begynte du med koding? 👶
Jeg begynte ganske tidlig på barneskolen med noe man kan kalle koding i Flash og «The Games Factory».
Det jeg derimot anser som «begynnelsen» var da jeg fant ut at jeg kunne automatisere ting i IRC-kanalen med mIRC-scripting! Jeg synes dette var så gøy at neste steg ble å lage min egen IRC-klient, naturligvis. Dermed lærte jeg meg selv Java, nettverking, GUI-programmering, og voldsomt mye annet som kom av å stupe ned i kode-verden.
Først lærte jeg meg alt selv. Men etter et tips fra bestefaren min, begynte jeg å gå på åpne forelesninger på Informatikk ved UiO. Her fikk jeg i meg litt av teorien bak koden, slik at jeg endte med en mer fundamental forståelse av ting.
Eksamen ble det derimot ikke noe av, ettersom jeg fremdeles var et stykke unna å begynne på videregående. Men jeg fikk likevel nok teori og inspirasjon til å utvikle meg selv videre.
De neste årene, før min første utvikler-jobb, brukte jeg programmering til mye forskjellig. Jeg kodet spill, hacker-verktøy, nettsider, musikkspillere, kompilatorer, og mye annet. Jeg forsøkte å dykke ned i nesten alt som hadde med programmering å gjøre, og endte dermed opp med ganske bred kunnskap.
Så fikk jeg plutselig jobb hos USIT, UiOs senter for informasjonsteknologi, og startet livet som profesjonell utvikler.
Hva jobber du med akkurat nå? 🛠️
Jeg jobber med regnskapssystemet Tripletex, en komplett skyløsning for små og mellomstore bedrifter. Det høres kanskje ikke så spennende ut, men jobben vår er rett og slett å forenkle hverdagen.
De aller fleste i arbeidslivet må gjøre oppgaver som å føre timer eller skrive reiseregning. Og jeg vil tro det er veldig få som faktisk synes dette er morsomt eller inspirerende. Personlig vil jeg helst gjøre det jeg kan best, og unngå så mye som mulig av disse kjedelige side-oppgavene. Og det er nettopp disse kjedelige side-oppgavene vi forsøker å automatisere og forenkle, noe som føles veldig godt! Spesielt siden vi selv bruker Tripletex, og føler på smerten når noe ikke er optimalt.
Fiken blåser i SCRUM og skytjenester, men elsker Kotlin
Bli med kode24 på innsiden av regnskapsprogrammet Fiken.
Mer konkret jobber jeg i plattform-gruppen. Nærmere bestemt i «A-team», med fokus på arkitektur, rammeverk, DevOps og sikkerhet.
Vi vokser fort – både i antall kunder og ansatte – og da er det viktig med gode støttesystemer og rutiner som skalerer. Vi leverer i snitt ti ganger om dagen til produksjon med Java-monolitten vår, og vi har ingen planer om å redusere tempoet. For å gjøre dette mulig, må vi jobbe smart.
For tiden er hovedfokuset automatisering av sikkerhetsrutinene våre via Jenkins-jobber, kode-analyseverktøy, og gode overvåkings-skjermer med Grafana. Med 50 utviklere kan vi ikke lenger basere oss på at alle kan alle «reglene» i kodebasen vår, så vi forsøker å automatisere og modularisere så mye som mulig her. Det skal være enkelt å gjøre det riktig, men vi må likevel gjøre det mulig å bryte mønstrene når det er nødvendig.
Hvordan ser en typisk arbeidsdag ut for deg? ☕
En typisk arbeidshverdag er faktisk ganske utypisk. Vi har noen faste møter som standups, avdelingsmøter og «TripleTechZone» (kunnskapsdeling), men utover det er det lite som er fast.
«Vi har is-tirsdag, vaffel-torsdag og brus-fredag.»
Eller, sett bort fra våre faste sosiale aktiviteter hver uke, selvsagt. Vi har is-tirsdag, vaffel-torsdag, og brus-fredag. Is-tirsdag begynte vi med nå i sommer, men vi får se om vi klarer å opprettholde den gjennom hele vinteren. Foreløpig kjører vi på videre, selv når det snør på Skøyen.
Utover alle søtsakene, bruker jeg endel tid på støttearbeid. Som en del av A-team, består rollen min i hovedsak av å bistå resten av utviklingsavdelingen. Heldigvis har vi en god sofa og en stor whiteboard-vegg i kroken der vi sitter, så det er bare koselig når folk kommer på besøk med spørsmål!
Resten av tiden min går til å grave meg dypt inn i IntelliJ og jobbe med rammeverkene våre. Viste det seg at vi hadde over-abstrahert en funksjon, forsøker jeg å forenkle den. Eller kanskje det manglet støtte for noe viktig, for da legger jeg til det. Veldig mye variert, men også veldig givende ettersom vi får kontinuerlig feedback fra de andre utviklerne i avdelingen, som på en måte blir A-team sine kunder.
Hva synes du er de mest spennende språkene, rammeverkene eller teknologiene akkurat nå? ✨
Jeg er en hacker av natur, og for tiden er jeg veldig glad i Grafana, og dens muligheter for ekstrem tilpasning.
Det er egentlig bare et verktøy for å lage dashboards og grafer, men den har noe veldig enkelt som åpner opp dørene på vidt gap: HTML-paneler! Har du fri tilgang til HTML, har du plutselig tilgang til CSS og JavaScript også. Og dermed har du i praksis mulighet til å lage hva som helst.
«Jeg er en hacker av natur, og for tiden er jeg veldig glad i Grafana.»
Vi har paneler i Grafana som viser når hvert team har standups. Dynamiske kalendere som viser dagens aktiviteter. Dashboards som lar deg lett dykke ned i feilmeldinger, korrelere logger, aggregere datakilder, og utheve relevant informasjon – kun med ett tastetrykk. Kule animasjoner som viser hvor langt vi har kommet med siste utrulling. Og mye mer.
Disse tingene er ikke innebygget i Grafana, og det med god grunn. Dette er veldig tett knyttet opp mot særheter i Tripletex, og det er ikke hensiktsmessig å gjøre slikt standardisert. Men med HTML-paneler, kan vi likevel få det til! Sånt synes jeg er veldig gøy å leke med.
Hva er du mest stolt av å ha laget? 🏆
Det er nok Twitch.tv-chatboten jeg satt opp en del år siden, SauceBot. Det var det første «ordentlige» prosjektet jeg jobbet med hvor jeg drev hele prosessen selv. Jeg sto for UX, design, frontend, backend, database, drift, support, markedsføring og alt annet som måtte til.
Målet med SauceBot var både å gjøre Twitch-chatten håndterbar via automatisk moderering, i tillegg til å ha funksjonalitet som «spritet opp» chatten. Roboten var bygget opp av 18 forskjellige «moduler», og alle som brukte roboten kunne selv velge hvilke moduler de ønsket. Modulene var en sammensetning av kommandoer, triggere, og annen automatikk. Alt var kodet med moduler i tankene, slik at det var trivielt å lage nye moduler on-the-fly.
Lag en superteit chattebot med Socket.IO
Lær hvordan du kommuniserer over WebSockets med NodeJS, Express og Socket.IO.
Eksempler på tilgjengelige moduler var «filter» for automatisk filtrering av meldinger (moderering), «autocommercial» for å automatisk spille av reklamer i visse intervaller, og «poll» for å avholde spontan-avstemninger.
Favoritt-modulen min var derimot «pokemon», som lot alle i chatten spille en variant av Pokémon. Alle som deltok i chatten kunne forsøke å fange hverandre som Pokémon, og så inngå i «Pokémon-kamp» med hverandre. Alt var selvfølgelig helt tilfeldig, men det var likevel veldig gøy. Plutselig fanget du en «shiny» level 100 versjon av en venn av deg, som du videre kunne bruke til å slå alle de andre i kamp.
Det som gjorde roboten ettertraktet, var web-grensesnittet. Uten å være altfor skråsikker, så tror jeg SauceBot var den første Twitch-botten med et dedikert web-grensesnitt. Du kunne logge inn i grensesnittet, administrere modulene dine, og følge med på hvordan roboten kjørte. Her forsøkte jeg også å legge til en del gøy, blant annet for moduler som «pokemon»: Alle sammen kunne gå inn i web-grensesnittet og se på hvilke «pokemon» de hadde fanget via modulen. For å være mer sann til Pokémon, tegnet jeg noen hundre små bilder, som hver «pokemon» ble tildelt tilfeldig. Plutselig var det et spill med grafikk, og ikke bare tekst.
«CoffeeScript virker kanskje litt rart å velge nå, men det gjorde det mye smidigere å skrive JavaScript-kode på den tiden.»
Når det gjelder det tekniske, forsøkte jeg å holde roboten ganske enkel. Jeg brukte teknologiene jeg allerede kunne, for å øke effektiviteten. Web-grensesnittet var skrevet i PHP med jQuery i frontend, mot en MySQL-database. Roboten snakket også med MySQL-basen, men var skrevet i CoffeeScript på Node.js. Den første versjonen av roboten var skrevet i Perl, men jeg gikk fort over til Node.js med dens asynkrone fordeler da systemet begynte å vokse over et par hundre linjer kode.
CoffeeScript virker kanskje litt rart å velge nå, men det gjorde det mye smidigere å skrive JavaScript-kode på den tiden. Nå som ren JavaScript har fått en god del oppgraderinger de siste årene, ville nok det vært et mer naturlig valg om jeg hadde startet i dag.
Hva er det vanskeligste ved å være utvikler? 🤷
Egen prioritering, helt klart.
Personlig synes jeg nesten alt innenfor utvikling er spennende. Jeg vil helst jobbe med alt, og gjøre alt. Men ettersom døgnet bare har 24 timer, og presset om å levere aldri minker, må man nesten prioritere det som er viktigst.
Det er vanskelig å si nei til noe du har lyst til å gjøre, men det er bare noe man må akseptere.
Jo, du har tid til hobbyer!
David Skaufjord om det å bli voksen, innse at tidsklemma er en myte og lage en 8-bit Flappybird-klone.
Hva synes du norske utviklere bør bli flinkere på? 🙋
Ha det gøy med teknologi! Det er så ofte jeg ser løsninger som fungerer bra, men uten noe form for engasjement rundt. Legg inn easter eggs. Pynt med noe kreativt. Ha det gøy!
I stedet for å bare ha et kjedelig økende nummer når du skal lansere en ny versjon, legg til noe morsomt. Vi får Jenkins-pipelinen vår til å automatisk sette et tilfeldig «BankID-navn» på hver versjon. Det er mye morsommere å lansere «awesome chair» enn versjon 7231. Det krever ikke mye å sette opp, men det bidrar til å gjøre de faste rutinene litt mer spennende.
Og helt klart dashboards! Overalt ser jeg overvåkingsskjermer med de samme kjedelige grafene igjen og igjen. Antall feil. Minnebruk. Diskbruk. Det er definitivt nyttig informasjon, men det er så lite inspirerende!
«Da jeg la til en aprilsnarr i timeplan-løsningen til UiO, var det ikke alle som var like glade.»
Lag noen kule grafer som ingen skjønner bæret av! Finn ut hvordan du kan illustrere nyttige målinger på en mer kreativ måte. Når du har dette – i tillegg til de nyttige grafene selvsagt – blir det straks mye mer gøy å sette opp monitorering. Hos oss har alle team sine egne skjermer, og ingen er like. Det har endt opp med en konkurranse om å ha de kuleste skjermene – og dette igjen skaper engasjement!
Det kan derimot være lurt å tenke litt gjennom målgruppen før du innfører noe slikt. Da jeg la til en aprilsnarr i timeplan-løsningen til UiO – hvor forelesningene dine falt ut av timeplanen når du holdt musen over dem i fem sekunder – var det ikke alle som var like glade. Alle i teamet mitt synes det var kjempegøy, men det var kanskje ikke like gøy for studentene som ringte og lurte på om forelesningene deres hadde blitt avlyst.
En god regel er å starte internt. Da blir det straks mye større frihet!
Hva liker du å gjøre når du ikke jobber? 🕹️
Det er veldig lite fast her, men jeg bruker gjerne fritiden til utvikling hvis jeg trenger noe. Jeg synes det er gøy å kode, og spesielt når jeg kan bruke kunnskapen min til å løse «ekte» problemer.
«Samboeren min og jeg trengte et system for å enkelt fordele utgifter mellom oss.»
Samboeren min og jeg trengte et system for å enkelt fordele utgifter mellom oss. Så da lagde vi en liten webapp sammen, med integrasjon til Mattermost-chatten vi bruker for å snakke sammen. Det løste problemer vårt, og vi fikk gjort noe gøy sammen. Vinn-vinn!
Ellers går det mest i små prosjekter her og der. Vi skaffet oss nylig Philips Hue i hele leiligheten, så jeg har lekt endel med å sette opp integrasjoner til diverse duppedingser. For eksempel kan nå Launchpad-kontrolleren min brukes for å lage lysshow på hjemmekontoret. Jeg vil ikke si det gir så mye nytteverdi, men det var gøy å lære meg hvordan MIDI fungerer!
Når jeg ikke programmerer, går tiden for det meste til å slappe av med serier, filmer og spill. Det er så mange gode spill ute for tiden, og jeg gjerne skulle hatt mer tid til å spille! Med Borderlands 3, The Outer Worlds, og nyligst Death Stranding, så rekker jeg sjeldent spille ferdig spill før neste kommer ut. Men heldigvis er det viktigste for meg å ha det gøy med spillene, og ikke å spille dem ferdig!
- Kjempeviktig å få bort den stereotypiske utvikleren
- Skal vi utvikle løsninger som når alle, kan vi ikke bare være én type mennesker, mener kodestudenten Elena Snellingen.