- Jeg kan bli sittende i timesvis, banke i bordet og bli skikkelig forbanna

Ukas Koder Christian Alfoni, mannen bak Overmind, slutter snart i jobben for å satse på open source og freelance.

Christian Alfoni jobber med store open source-prosjekter, og produserer videoer ukentlig - som denne hvor bildet er hentet fra. 📸: Privat
Christian Alfoni jobber med store open source-prosjekter, og produserer videoer ukentlig - som denne hvor bildet er hentet fra. 📸: Privat Vis mer

Hvordan begynte du med koding? 👶

Jeg fikk min første datamaskin da jeg var 11 år. En 486 med massive 512mb diskplass. Den første tiden gikk det mest i Pinball, Sim City, Dune 2 og Command and Conquer.

Det endret seg da den nye CD-ROM-en min ikke fungerte i MS-DOS. "mscdex" og "system" filer ble hacket på. Tror nok det er her jeg oppdaget den vanvittige staheten min rundt å få ting til å fungere. Jeg brukte sikkert ukesvis på å løse problemet og gleden husker jeg fortsatt.

Etterhvert som årene gikk ble jeg introdusert for websider av en kompis og vi konkurrerte om å ha høyest antall på besøks-widgeten, altså... hvem som hadde trykket F5 flest ganger på sin egen side. En annen kompis viste meg hvordan jeg kunne lage avrunda hjørner ved hjelp av bilder og tabeller. Jeg var solgt og oppdragene ramlet i fanget. Starcraft klansider, dataparty-sider og min første betalte jobb var for et varmepumpe-firma. En 8x cd-brenner til 5000,- spenn.

Dette engasjementet holdt seg gjennom videregående, der jeg ble introdusert for koding med Visual Basic. Jeg ELSKET det og var ikke redd for å spørre om hjelp fra mer erfarne. Hovedoppgaven var å bygge en filmdatabase, men jeg laget heller et grafisk grensesnitt for å definere bussruter på et kart og simulerte avganger på et slags rutesystem. Læreren ga meg stryk. Når jeg ser tilbake på dette er det et prima eksempel på hvordan en lærer kan kraftig påvirke livet til en elev. Hvis han hadde vært en god lærer ville han kanskje fortsatt gitt meg stryk, fordi jeg løste ikke oppgaven, men han ville sett et engasjement og oppmuntret meg til å fortsette med programmering. Istedenfor ble jeg sykt skolelei, og begynte å jobbe istedenfor å fortsette skolegangen.

Jeg havnet i mobilbransjen og pussig nok var det dette som til slutt førte meg tilbake til programmering. Etter 4 år i Klart Svar, 2 år i NetCom og et kaldt år i Nord-Norge, så fikk jeg muligheten til å jobbe med support for Marcello. Marcello er konsulentbyrået som har vært, og fortsatt er, involvert i det meste av business-løsninger hos NetCom, nå Telia.

«Jeg introduserte de andre programmererne for konseptet å bygge rike klienter med JSON API.»

Jeg skulle jobbe med å supportere avdelingen jeg tidligere jobbet for. Her møtte jeg den stikk motsatte personen av læreren jeg nevnte. Sjefen min, Peter Magnus, identifiserte engasjementet mitt. Han hjalp meg å sette opp miljøet på maskinen min og lot meg stort sett gjøre som jeg ville. Det ble mange sene kvelder og plutselig befant jeg meg i et møte der jeg introduserte de andre programmererne for konseptet å bygge rike klienter med JSON API. Kort tid etter bestilte NetCom blant annet et web-basert sentralbord og Peter Magnus ga meg ansvaret for å realisere klienten. Jeg hadde på ingen måte kompetansen til å fullføre prosjektet når det startet, men jeg lærte tonnevis underveis og igjen ble det mange sene kvelder. Er megastolt av hva vi fikk til der uten bruk av rammeverk. Backbone fantes såvidt den gangen. Benytter muligheten til å sende en stor takk til tidligere kollegaer og spesielt Peter Magnus for å skape et miljø der utvikleren Christian Alfoni ble født.

Jeg hadde en fantastisk tid i Marcello, men etter noen år ble jeg rastløs etter nye erfaringer. Jeg sluttet og tok 6 måneder på egenhånd med oppsparte penger. Jeg hadde i prinsippet min egen skolegang for ting som interesserte meg. Heldigvis hadde React og Webpack akkurat dukket opp og jeg opparbeidet meg masse erfaring og kunnskap som jeg delte i form av artikler og open source prosjekter. Dette førte til litt konsulent virksomhet og en "gig" med inhouse utvikling hos et selskap i Oslo.

Da vi flyttet til Trondheim fungerte det ikke så bra som jeg trodde med remote arbeid og hoppet på en mulighet å drive fram mitt eget prosjekt med litt funding fra Innovasjon Norge. Dette var utrolig gøy og bar frukter i forskjellige former senere, men selve prosjektet stoppet da jeg innså at man trenger mer enn programmeringsevner for å realisere ideer; man må også forstå marked og salg. Dette er ting jeg ikke er noe flink på. I løpet av denne tiden kom jeg i kontakt med en rekke andre startups.

Min daværende kollega, tidligere fra Marcello, Tommy Østgaard og jeg valgte å hjelpe "Ducky" (ducky.eco). Dette var en fantastisk erfaring for meg, da valg av teknologi og prosesser vi utarbeidet var under ekstremt stramme rammer . Det jeg også innså er at mange startups startes av teknologer som mangler marked/salg, som var mitt tilfelle, men Ducky var en startup som forstod marked og salg, men manglet teknologer. Det var helt konge og jeg er veldig stolt av å ha hjulpet de i en kritisk fase, men dessverre ble økonomien for usikker og jeg valgte å bli konsulent igjen og søkte jobb hos Bekk.

Med min noe spesielle bakgrunn valgte de å satse på meg og jeg har stortrives! Å jobbe i Bekk er faktisk helt fantastisk. De vet virkelig hva de driver med både teknologisk og som kulturbyggere. Med andre ord, man har det godt som både fagperson og menneske i Bekk. Dessverre ble det overraskende stressende hverdag for meg å være 100% konsulent og ha kid, så jeg valgte å slutte. Jeg jobber nå 40% i Bekk og 60% freelance og vil være 100% freelance etter sommeren.

Slik ser det ut på hjemmekontoret til Christian Alfoni. 📸: Privat
Slik ser det ut på hjemmekontoret til Christian Alfoni. 📸: Privat Vis mer

Hva jobber du med akkurat nå? 🛠️

For Bekk jobber jeg med en kunde som driver med prosessstyring. De hadde en gammel Silverlight-klient som skal relanseres på tradisjonell web med React. For meg var dette noe skremmende, da det krevde mye backend-arbeid i C#, som jeg følte jeg hadde ingen kompetanse på.

«Alt annet løser man bare ved å prøve og feile. Til man til slutt har prøvd nok ganger, og lykkes.»

Det jeg fort lærte, er at når man først kan programmere i ett språk, så går det forbausende fort å sette seg inn i et annet. Og arkitektur handler mer om logiske prinsipper enn teknologi. Alt annet løser man bare ved å prøve og feile, til man til slutt har prøvd nok ganger og lykkes.

Som freelancer jobber jeg med en liten startup i Trondheim. De hjelper foreldre i perioden med spedbarn. Alt fra søvn, gråt, bæring og så videre. Det er overraskende spennende teknologisk, da vi beveger oss fra en Wordpress-klient over til en egen chat-klient som testes på web, og nå over på native app. Her kjører vi Firebase og React, med Flutter på native app.

Jeg jobber også på Codesandbox. Jeg hjalp de med å refaktorere fra Redux til et state management bibliotek jeg har jobbet med en del år som heter Cerebral Js. Vi tar nå en ny refaktorering til Typescript og Overmind JS, som er det siste open source prosjektet jeg har jobbet på.

Også legger jeg ut ukentlige videoer på ko-fi.com, hvor folk kjøper kaffe til meg for å drive med open source.

Her er Christian Alfonis siste video. Vis merVis mer Vis mer

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Når jeg jobber hos Bekk er tiden delt i skyping med kunden, headset, koding og en rekke kaffepauser. Det er ganske uvanlig i Bekk å jobbe alene på prosjekt, men jeg kompenserer med å plage de andre på kontoret og bidra til bisarre lunsjdiskusjoner.

Når jeg er freelance sitter jeg enten hjemme på "plassen min", i sofaen eller på café. Her bruker jeg også en del tid på open source-arbeid og produserer videoer. Har en ukentlig video der jeg snakker om det å jobbe freelance, med startups, teknologi og alt annet jeg måtte ha på hjertet

"Tok bilde av stua" skriver Christian Alfoni til dette bildet, som vanligvis skal vise hvordan kontorene rundt Ukas Koder ser ut. 📸: Privat
"Tok bilde av stua" skriver Christian Alfoni til dette bildet, som vanligvis skal vise hvordan kontorene rundt Ukas Koder ser ut. 📸: Privat Vis mer

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

Jeg er opptatt av å jobbe effektivt med å realisere og teste ut ideer. Siden jeg jobber en del med startups er dette også kritisk, da man jobber under langt strammere rammer enn som konsulent for store bedrifter.

Her vil jeg si Firebase er helt eksepsjonelt. Du får absolutt alt du trenger av arkitektur for å realisere konsepter på en effektiv måte. Autentisering, realtime database, functions (lambda) og hosting. Det fungerer bare helt ypperlig.

Flutter er noe jeg har sett på nylig og går i samme kategori. Det er bare helt absurd hvor effektivt man kan gå fra konsept til noe som kan testes av en bruker. Flutter er også fra Google og er deres "ett språk, flere devicer", likt React Native. Utvikleropplevelsen er bare langt bedre etter min mening.

Det er jo veldig mye annet som også er spennende, men det er bare ikke like relevant for problemene jeg løser til daglig.

Hva er du mest stolt av å ha laget? 🏆

Jeg er stolt av flere prosjekter, av forskjellige årsaker egentlig.

Cerebral JS er det første open source-prosjektet der det faktisk ble et community. Jeg har møtt mange fantastiske mennesker, også i virkeligheten. Det ble liksom mer enn et verktøy, det påvirket faktisk livene til folk. For eksempel en kar som flyttet til et annet land for å jobbe sammen med en annen Cerebral-utvikler. En kar flyttet fra England og jobbet med oss i Ducky. For meg er det helt sprøtt å tenke på at en idé i sofaen kan ende opp med at folk rundt om i verden møter mennesker de aldri ville møtt før, får jobber de aldri ville fått og flytter til land de kanskje aldri ville flyttet til. Helt sprøtt.

«Det høres ikke så stort ut nå, når andre løsninger gjør det samme i dag, men på dette tidspunktet var det ganske episk.»

Jeg er også stolt av prosjektet webpackbin.com, som dessverre ikke lever lenger. Dette ble lansert før Codesandbox kom, og var noe av det mest kompliserte jeg har bygget. For det første var det et web-IDE der hver sesjon hadde en webpack bundler på serveren. Dette gjorde at man kunne kjøre loaders som webpack tilbyr. I tillegg laget jeg en NPM delivery service, så man kunne dra inn NPM-pakker og spinne dette rett i nettleseren. Det høres ikke så stort ut nå, når andre løsninger gjør det samme i dag, men på dette tidspunktet var det ganske episk. I tillegg hadde man live deling av kode.

Mye av klienten kom faktisk fra Innovasjon Norge-prosjektet der man faktisk også hadde opptak av video, lyd og interaksjon direkte i nettleseren. Du kan sammenligne det med scrimba.com egentlig. Både Codesandbox og scrimba.com løser disse tingene langt bedre enn jeg gjorde med webpackbin.com, men jeg har fått tilbakemelding på at webpackbin.com var en viktig iterasjon som har bidratt til der vi er i dag med disse type løsninger. Ives, skaperen bak Codesandbox, og jeg samarbeidet faktisk på NPM delivery servicen en periode. Den leverte NPM pakker både til webpackbin og codesandbox.

I dag er jeg kanskje mest stolt av overmindjs.org-prosjektet. Dette er etterfølgeren til Cerebral JS og vi har nå enormt fokus på Typescript-støtte. Du føler virkelig at Typescript kun er der for å hjelpe deg, ikke at du hjelper Typescript... som det så altfor ofte føles. Men kanskje enda mer spesielt er utviklerverktøyet. Jeg er superhappy med hvordan Cerebral-utviklerverktøyet endte opp, men har nå tatt alle de erfaringene og bygget noe enda bedre. Det som gjør Overmind helt spesielt er visjonen for utvikleropplevelsen. I neste versjon vil man kunne utvikle applikasjonen uten å bruke nettleseren. For meg er UI en implementasjonsdetalj. Det å utvikle en app handler først og fremst om "state", "effects" og logikken som binder dette sammen. Nettleseren et fantastisk verktøy for å bygge og debugge UI, men den er helt ubrukelig på å debugge "state" og "effects", fordi dette skjer jo "bak UI". Det er dette Overmind utviklerverktøyet prøver å endre.

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

Jeg synes det er vanskelig at følelseslivet mitt blir såpass påvirket av hva som skjer på skjermen. Jeg har kanskje et problem jeg sliter med å løse. Jeg stresser på grunn av en kritisk bug i et open source prosjekt. Noen sier noe negativt. Jeg blir litt for hekta på Twitter-notifications. Jeg føler andre har megasuksess med sine prosjekter, og føler at jeg ikke når fram med egne ideer.

«Jeg kan bli skikkelig frustrert og deppa noen ganger, og alt dette tar jeg med meg hjem til familien.»

Jeg kan bli skikkelig frustrert og deppa noen ganger, og alt dette tar jeg med meg hjem til familien. Dama er heldigvis veldig klar over at mine korte responser i så og si alle tilfeller er relatert til noe helt annet enn henne. Men dette er noe jeg har blitt flinkere på og jobber fortsatt med.

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

Vanskelig å finne en utfordring som dekker alle norske utviklere og den stemmer sannsynligvis ikke heller, så velger å svare på hva jeg selv kunne bli flinkere på :)

Jeg er veldig bevisst på at prokrastinering er ofte det beste verktøyet for å løse problemet. Det å bare gå fra et frustrerende problem og la underbevisstheten jobbe med det. Jeg har blitt flinkere på det, men jeg må ta det i bruk før jeg når et visst nivå av frustrasjon. Når jeg tipper over så er det ingen vei tilbake altså. Da kan jeg bli sittende i timesvis, banke i bordet og bli skikkelig forbanna. Dette fungerer overraskende nok også, men det er en lite elegant måte å løse problemer på.

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

Når datteren vår ikke praktiserer rutiner for trass-alderen, så synes jeg det er fantastisk å sitte på første rad og oppleve at et menneske blir til. Hun har jo fortsatt ordforrådet til en undulat, men hver eneste dag skjer det et eller annet nytt. Mer personlighet, et nytt ord, nytt blikk og så videre. Det er faktisk ganske fantastisk.