utviklerprofilen

Utvikleren Are mener event-drevet arkitektur kan ha enorme fordeler

Les ukens utviklerintervju.

Are Almaas på Gaustatoppen under en de første toppturene tidligere i vår.
Are Almaas på Gaustatoppen under en de første toppturene tidligere i vår.

Ukens utviklerprofil er Are Almaas (32). Han har nylig startet som selvstendig konsulent i sitt eget selskap med samme navn som ham selv.

Kan du kort beskrive stillingen og oppgavene dine?Jeg er en selvstendig konsulent, innleid som rådgiver, teknisk leder og full-stack utvikler i forskjellige prosjekter. Min største arbeidsgiver er Solv, der jeg jobber som teknisk leder i Spire. De fleste arbeidsoppgaver er av teknisk art, der jeg både bidrar som leder og utvikler. Andre arbeidsoppgaver er knyttet til produktutvikling, der jeg fungerer mest som rådgiver.

Hvorfor valgte du å starte for deg selv?

Opp gjennom så har jeg alltid hatt en trang om å sette i gang nye initiativer. Jeg har vært med i oppstarten av ulike oppstartsbedrifter, sist nå som innovasjonssjef i en ny avdeling for et produkt/konsulent-selskap. Etter hvert fant jeg ut at det var på tide med en «pause».

En annen viktig årsak til at jeg valgte å gå selvstendig, må nok være fleksibiliteten og friheten som følger med. Selv om det kan være slitsomt til tider, styrer man tiden sin litt selv, og det hjelper når det av og til blir for mye, eller jeg har lyst til å finne på noe annet.

Samtidig så var jeg inne i en fase preget av usikkerhet for hva jeg ville jobbe med i fremtiden. Det var også et lengre USA-opphold som jeg vurderte ut i 2021. Det skapte en del usikkerhet om hvilken jobbsituasjon som ventet meg da. Så da er det greit å stille forberedt med et bredt nettverk, en portefølje og erfaring med det å jobbe på egen hånd.

Hva kan din arbeidsgiver bli enda bedre på?

Tiden vil vise. Jeg begynte som selvstendig tidligere i år, så arbeidsgiveren er ganske ny i gamet. Håper bare at arbeidsgiveren ikke gir meg for mye eller for lite å jobbe med fremover.

Hvilket selskap kunne du aldri ha jobbet for?Jeg trives jo best å jobbe i små team bestående av personer med mangfoldig bakgrunn og ulike disipliner med gjennomføringskraft og beslutningsmyndighet. Så en noe større og komplisert bedrift der feedbackloopen er enorm, eller man ikke investerer mye i produktutviklingen gjennom å for eksempel ha en produkteier, ville jeg slitt med.

Andre ting å nevne er jo kultur, lite takhøyde og noen som jobber med noe som bryter med mine verdier. Kultur har jeg erfart å være noe av, om ikke dét viktigste innad i et selskap. Evne til å gi og ta imot feedback og bygge opp hverandre, er svært viktig. Har vært heldig med selskap foreløpig.

Hvor jobber du mest, på kontoret, på hjemmekontoret eller ute hos kunder?Nå blir det jo mest hjemmekontor. Kundene jeg jobber for nå, er lokalisert i Stavanger og andre byer rundt omkring i Norge, så det fungerer helt greit. Jeg savner jo det felleskapet vi har hatt i kontorlandskapene. Har vært så heldig å ha hatt kontor på Mesh i Oslo, der det kryr av interessante mennesker og aktiviteter.

Jeg jobber også hos kunder om det er ønskelig. Tror det er bra at man sitter fysisk med teamet man jobber med av og til. Særlig i begynnelsen. Det er selvfølgelig ikke et krav, men det hjelper for å skape tillit og å lære hverandre å kjenne. Viktig i en onboardingsfase.

Man kunne merke at noen kunder var redde for å sette i gang og fortsette på større interne prosjekter.

Hvordan påvirker koronapandemien din arbeidssituasjon?

Jeg merket jo at det var litt panikk i starten. Da det slo ut for fullt i 2020, var jeg fortsatt innovasjonssjef i Solv Oslo. Det var tøffe tider som fulgte. Man kunne merke at noen kunder var redde for å sette i gang og fortsette på større interne prosjekter. Særlig de prosjektene som var mest risikable.

Det ble jo bedre og bedre etterhvert som tiden gikk. Da jeg valgte å starte for meg selv, var jeg tryggere på at det var jobb til meg der ute. Jeg har andre tidligere kolleger og kamerater som har jobbet som selvstendige en stund, som merket stor pågang, så det hjalp veldig. Men jeg var jo helt klart bekymret.

Kan du fortelle litt om prosjektet/prosjektene du har jobbet med i det siste?Utdanning har alltid hatt en spesiell rolle i livet mitt, så arbeidet mitt knyttet til bacheloroppgave, masterstudiet og oppstartsbedriftene jeg har vært med å starte, har vært rundt e-læring.

I 2015 grunnla jeg en e-læringsstartup ved navn Differ sammen med tre andre. Vi hadde en solid produktutviklingsprosess i bunnen, som var veldig datadrevet, og som gjorde at vi måtte iterere gjennom flere produkter/prototyper. Ulike teknologier ble brukt i de forskjellige produktene. På det tredje produktet endte vi opp med en event-drevet arkitektur med Kubernetes i bunn og React Native for mobilappene. Denne typen arkitektur er noe som har fulgt meg i de fleste andre prosjekter jeg har vært med i siden.

Etter tiden i Differ har jeg jobbet i prosjekter der «event-sourcing» har vært en sentral del. Noen systemer har vært selvlagde, andre ved bruk av rammeverk som Dolittle, som er et fremadstormende norsk produktselskap som tilbyr en event-sourcing-plattform.

Spire, der jeg er innleid nå, er en spennende startup som har til hensikt å styrke økonomien til idrettslag, frivillige organisasjoner og kulturaktiviteter gjennom blant annet å tilby et fordelsprogram støttemedlemmer kan benytte seg av. Der har vi satt sammen et event-sourced system som er cloud native. Det vil si at all kode skrives i rene funksjoner, API og databasemodeller blir generert av Amplify og hostet i AWS sammen med alle andre verktøy og systemer som vi bruker. Arkitekturen vår er bakt inn i skytjenestene. React Native brukes også for å lage appene her.

Hvor lenge har du jobbet som utvikler?

Jeg ble ferdig med dataingeniør-utdannelsen i 2013, men hadde deltidsjobb som utvikler fra 2012. Utenom en pitstop innom Universitetet i Oslo i 2015 for å ta en master i innovasjon og entreprenørskap, har jeg jobbet som utvikler. Jobbet 40 prosent som konsulent gjennom hele masterstudiet, så kan vel egentlig si at jeg har vært utvikler siden 2012, men i forskjellige roller som arkitekt, tech-lead, innovasjonssjef og produktutvikler.

Har du vært ansatt ved samme sted hele tiden?Nei, det har vært mye forskjellig oppgjennom. Etter bacheloren jobbet jeg som konsulent i Making Waves (NoA Ignite) og hadde et par andre initiativer og prosjekter helt til jeg startet Differ sammen med min foreleser fra masterstudiet og venn fra bachelorstudiet. Her var jeg i fem år, helt til jeg og en annen startet opp en avdeling i Oslo for Solv. I Solv var jeg innovasjonssjef inntil jeg startet mitt eget firma som selvstendig.

Det må sies at Differ fortsatt holder det gående, og jeg bidrar fortsatt med rådgiving og noe utvikling.

Hvor gammel var du da du først begynte å lære deg programmering?Da var jeg vel rundt 19. Det som kickstartet det hele, var vel at en kamerat begynte å programmere noe rundt den tiden. Synes det så svært interessant ut. Da hadde jeg også veldig lyst til å gjøre noe annet enn det jeg jobbet med da. Lagde vel en blogg i Joomla og noe PHP-greier ingen fikk bruk for i starten.

Hva slags utdannelse har du?

Dataingeniør fra Høgskolen i Oslo (nå OsloMet) og en master i innovasjon og entreprenørskap. Leverte aldri inn masteroppgaven, da jeg heller valgte å starte firma. Det konsumerte all tid på det tidspunktet.

Syns du at du har hatt god nytte av denne utdannelsen?Synes jeg har hatt svært godt nytte av både dataingeniørstudiet og innovasjon- og entreprenørskapsstudiet. Har alltid jobbet med helt andre rammeverk og språk enn dem vi jobbet med på studiene, men jeg har tatt med meg mye annet, som evne til å tenke problemløsning og en forståelse av utvikling, utviklingsspråk og teknologi fra dataingeniørstudiet, og forretning-/startup-forståelse fra innovasjon og entreprenørskap.

Jeg vil absolutt anbefale data-ingeniørstudiet ved OsloMet til andre, hvis man liker en mer praktisk tilnærming til læring.

Jeg jobbet jo ved siden av studiet også på mine egne bedrifter og som utvikler i andre, så det hjalp jo veldig. Jeg vil absolutt anbefale dataingeniørstudiet ved OsloMet til andre, hvis man liker en mer praktisk tilnærming til læring. Det skadet ikke med et lite opphold i Hawaii heller. Selv om det endte i mer surfing og festing enn studier.

Hvilke plattformer utvikler du vanligvis for?Det går mye i ulike skytjenester. AWS og Google Cloud for det meste. Ellers jobber jeg mye med mobilutvikling med React Native og webapplikasjoner. Som nevnt over har det vært en del cloud native, og det gjør at man må utnytte alle styrkene som ligger i skytjenesteleverandøren.

Hvilken pc-plattform/OS foretrekker du selv å bruke?

Jeg var Windows-bruker frem til 2012, kjøpte Mac, og har aldri sett meg tilbake siden. Jeg kjøpte en Windows-pc her forleden for å spille litt, ettersom spillutvalget på en Mac er noe begrenset. Den egentlige grunnen til at jeg gikk over til Mac var vel fordi jeg ville prøve noe nytt, og de rundt meg som hadde Mac, var svært fornøyde.

Hvilke programmeringsspråk benytter du, hva er favoritten og hvorfor?Typescript er definitivt det jeg har jobbet mest med både på server og klientside. Det finnes nok et objektivt sett bedre programmeringsspråk, men ingenting slår tilgjengeligheten til JavaScript som det transpileres til.

Kombinerer man det med å bruke NodeJS, kan lage alt fra apper, webapplikasjoner, kompliserte systemer og ikke minst programmere for IoT. Python er også et herlig språk å jobbe med, som jeg har tatt i bruk mest til dataanalyse. Det er mye lettere å jobbe med i slike use-caser enn JavaScript.

Hvilke to verktøy greier du deg ikke uten, og hvorfor?Miro er nok desidert det verktøyet jeg ikke kunne klart meg uten nå. Særlig med tanke på koronasituasjonen, der mye komplisert logikk og flyt må ut i programmer heller enn på whiteboardet. Det har vi tatt i bruk internt til alt fra «design sprints» til arkitekturtegninger.

Fiken må vel være det andre. Det sparer meg for en del hodepine knyttet til regnskapsføring.

Du får makt til å slette en applikasjon eller helt kategori programvare fra historiebøkene, hva ryker og hvorfor?Internet Explorer har jo skapt mye hodebry for utviklere. Den blir nok nevnt mye her, tipper jeg. Utenom det, kan jeg ikke komme på noe spesielt. Alle programmer har vel en plass i historien. Man lærer jo mye av feil andre gjør også.

Hva slags oppgaver liker du best å jobbe med?Der jeg kan bidra på produktutviklingen. Jeg liker å ha innsikt i hva som lages og hvorfor det lages. Å jobbe sammen med ulike disipliner innad i et team og finne de beste løsningene. De morsomste oppgavene er vel der jeg også er med og bidrar på utviklingen selv.

Da oppdaget vi at systemet ikke tålte ti samtidige brukere engang.

Kan du dele opplevelsen fra en gang du gjorde en katastrofal feil eller tabbet deg skikkelig ut på jobb?Et konkret eksempel må vel da vi designet et system som i utgangspunktet skulle være utrolig skalerbart med event-sourcing og flere andre buzzwords implementert. Vi fikk ikke lasttestet det ordentlig før vi inviterte hundrevis av brukere til plattformen. Da oppdaget vi at systemet ikke tålte ti samtidige brukere engang. Grunnen var vel at jeg hadde implementert en retry-mekaniske som aldri tok pause, og som slukte opp alle ressurser som var tilgjengelig. Det ble heldigvis fikset etterhvert, men det ble jo en kjedelig start på en release.

Hvordan sørger du for å holde deg faglig oppdatert?Jeg leser artikler som kommer inn i innboksen min fra Medium og andre kilder. Det er nok hovedkilden min til alt fra produktutvikling, forretning og utvikling.

I hvilken grad har metoder og teknologier som DevOps, maskinlæring, nettsky og konteinere endret måten du jobber på?

I de firmaene og prosjektene jeg har jobbet i, begynte vi tidlig å ta i bruk konteinere og skytjenester, så vil nok si at det har preget omtrent hele mitt profesjonelle liv.

Nå til dags kommer man sjeldent utenom å forholde seg til skybaserte tjenester. Spørsmålet er jo hvor mye av det man vil ta i bruk. I ett av prosjektene jeg er i nå, har vi tatt i bruk skytjenester i den grad at det er med på å definere arkitekturen vår. Mye av backenden er implementert i ulike tjenester hos skytjenesteleverandøren. I andre prosjekter så har vi et system som hostes, skaleres og vedlikeholdes hos en skytjenesteleverandør, men der forretningslogikk og arkitektur er fullt implementert av oss selv.

I oppstartsbedriftene jeg har vært en del av, har DevOps og skytjenester gjort at vi kan utvikle raskere og få et skalerbart system, om man designer det riktig. Det har vært avgjørende for å kunne produsere prototyper og produkter såpass hurtig. Maskinlæring har jeg ennå til gode å jobbe særlig mye med.

Ser du noen trender framover som virkelig vil forandre hverdagen til utviklere?Jeg tror nok systemer vil bli mer event-drevet fremover. Det blir en annen måte å tenke om arkitektur på. Det bringer frem enorme fordeler om det tas i bruk riktig. Det kan føles litt tungt å komme i gang med, men ved bruk av en metodikk som event-storming og plattformer som Dolittle, så får man mer kontroll på hvordan man kan designe et slikt system riktig. Distribuerte systemer er gjerne sterkt knyttet til event-sourcing, så det kommer vi til å se mer av.

Mer skytjenester, der Kubernetes kommer til å få stor plass. Det som er fint med Kubernetes, er at man ikke er «vendor-locked» og kan hoste det selv i en edge-computer eller annen maskin. Skyleverandørene har også en stor verktøykasse. Kombinerer du de riktig, får du nok gjort det du måtte ønske. Det som kan være et problem her er jo at man får en vendor-lockin. Ved hjelp av Kubernetes og andre verktøy, så slipper man i de fleste tilfeller unna det problemet.

En produkteier sammen med en designer kan skape utrolige ting, tipper jeg.

Low-/no-code-verktøy blir det helt klart mer av fremover. Jeg vil anta at det er hovedsakelig to typer verktøy som vil gjelde her. Det mer tekniske verktøyet vil nok kreve forståelse av hvordan systemer fungerer sammen, hvordan informasjonsflyten bør være og innsikt i de tekniske delene. Den mindre tekniske vil nok kreve mer forretningsforståelse eller design, avhengig av hva slags løsning man lager. Det blir spennende fremover å se hva slags nye roller som blir definert her. En produkteier sammen med en designer kan skape utrolige ting, tipper jeg.

Man kan jo få inntrykk av at utvikleren står i fare for å miste jobben, men tror nok heller det blir mer behov for oss i fremtiden. Vi må nok tilpasse oss nye måter å jobbe på. Som for eksempel at det blir mer høynivåutvikling. Uansett så kommer man nok til å måtte grave litt i kode en stund fremover, selv om man jobber med low-code. Om man ikke graver i kode, så krever det uansett en god teknisk forståelse for å kunne utføre det.

Hvilke teknologier eller fagområder skulle du gjerne kunnet mer om?

Maskinlæring, native mobilutvikling og fintech for å nevne noe. I fintech skjer det mye spennende om dagen. Her er det mye å sette seg inn i, og det er et område jeg gjerne skulle blitt bedre kjent med. Har jobbet litt med native utvikling ved å bygge native-bridger i React Native, men kjenner det er fortsatt flere ukjente elementer knyttet til det, som jeg gjerne kunne tenkt meg å dykke mer ned i.

Deltar du jevnlig på konferanser? I så fall, hvilken er den viktigste for deg?Sjeldent. Det er nok noe jeg skal gjøre mer av fremover. Det er en fin arena for å nettverke og få nye faglige impulser. Har vært på NDC opptil flere ganger. Det jeg liker med NDC, er at de har en svært god bredde. Du kan enten hoppe inn i et svært teknisk foredrag, eller se en høynivå presentasjon som de fleste forstår. Med andre ord så finner du alltids noe interessant.

Bidrar du, enten i jobben eller på fritiden, til noe åpen kildekode-prosjekt – i så fall, hvilke(t)?Altfor sjeldent. Jeg bidrar med noe av og til, særlig om det fikser et problem jeg har, men jeg pleier nok heller å være ganske ivrig på å lage issues og følge dem opp, enn å faktisk implementere det selv.

Hvor mye programmerer du på fritiden?

Jeg var mer ivrig tidligere, men det blir svært lite nå. Nå er det som regel for å lære meg noe som kan være relevant inn i prosjekter jeg jobber med, eller har lyst til å jobbe med. Det har blitt et tydeligere skille mellom jobb og fritid.

Har du noen (andre) hobbyer?

Musikk er nok en av de største lidenskapene jeg har. Spiller for det meste piano og noe gitar. Prøvde meg på synging, men det gikk så som så. Skjønte fort at det er forskjell mellom karaoke og profesjonell sang, så jeg holder meg til karaoke når/hvis Syng i Oslo åpner igjen.

Noe av det viktigste som har skjedd meg under pandemien er nok å gjenoppta tidligere hobbyer. Jeg tok opp skiinteressen igjen, og begynte å gå toppturer som resten av Norge. Det har nok reddet meg fra å gå på veggen under pandemien. Viktigheten av å ta opp hobbyene igjen, kan nesten ikke beskrives.

Jeg har hatt en ganske travel karriere preget av både sene kvelder og nudler til middag siden jeg begynte å studere, noe som gjorde at hobbyer ble satt på vent. Så nå er det på tide å ta tilbake det tapte, så får vi se om kroppen fortsatt henger med. Hobbyer, familie og venner blir nok høyere prioritert fremover. Det er sikkert.

Når snøen smelter på fjellene omkring i Norge, så tar jeg opp sykkelen og sykler ned de samme toppene.

Hva gleder du deg mest over ved å jobbe som utvikler?

Jeg er glad i å lage produkter som ender opp med å lage litt impact hos dem som ender opp med å bruke det. Å se at noe du har lagd har endret en vane eller arbeidsmåte hos sluttbruker, er herlig. Det er man jo i posisjon til å oppleve som utvikler.

Opplever du at jobben som utvikler har noen negative sider?

Har man en dårlig produktutviklingsprosess eller arbeidsmetodikk innad i teamet, kan det være svært slitsomt å være utvikler. Det berører jo selvfølgelig også flere enn utviklere i teamet.

Jeg føler at mange prosjekter får legacy-kode før de i det hele tatt lanseres.

Webutvikling særlig har et økosystem som er i endring til enhver tid. Rammeverket du brukte for et år siden kan være utdatert allerede, eller ha så store endringer at det blir et mareritt å oppgradere. Det finnes jo mekanismer for å unngå dette, men jeg føler at mange prosjekter får legacy-kode før de i det hele tatt lanseres.

Hva er det beste frynsegodet du får på jobben?Å være fri til å bestemme over min egen tid og hvilke prosjekter man vil være engasjert i.

Nevn et frynsegode du savner!Av og til kjenner jeg jo på at jeg savner fredagspilsene, sommerfestene og pingpong-bordet. Men ser ikke bort ifra at jeg oppsøker co-working-områder etter hvert.

Du finner mange flere utviklerintervjuer på vår samleside »

Powered by Labrador CMS