Møt Cailin, skaperen av MethodScript

Cailin Smith gikk fra Linux og Java til Microsoft Norge og C#. Snart håper hun hennes eget språk kan konkurrere med begge.

Cailin Smith jobber hos Microsoft i Barcode. På fritida lager hun sitt eget programmeringsspråk; MethodScript. 📸: Privat
Cailin Smith jobber hos Microsoft i Barcode. På fritida lager hun sitt eget programmeringsspråk; MethodScript. 📸: Privat Vis mer

Hvordan begynte du med koding? 👶

Jeg utviklet tidlig en interesse for datamaskiner og videospill, og var nysgjerrig på hvordan de fungerte allerede som barn. Dessverre vokste jeg opp i et hjem uten internett, så det var ganske vanskelig å tilegne seg kunnskap om hvordan disse maskinene fungerte.

Derfor lærte jeg meg ikke noe om programmering før jeg begynte på videregående, og startskuddet for kodingen min gikk da jeg lærte hvordan jeg skrev ekstremt enkle programmer på en grafisk kalkulator. Men det var først på universitetet jeg begynte med skikkelig programmering.

På universitet trodde jeg at jeg var mer interessert i datamaskiner på et overordnet plan, og begynte på utdannelsen for å bli dataingeniør. Jeg forsto raskt at jeg egentlig interesserte meg for programvaredesign i mye større grad enn bare datamaskinen. Så da byttet jeg til en ren programmeringsgrad, og det er jeg supertakknemlig for.

Hva jobber du med akkurat nå? 🛠️

Jeg er på på teamet som jobber med søk innenfor SharePoint Online. Vi bruker mest C#, men også noe PowerSell, og forskjellige Azure-verktøy.

På mitt open source-prosjekt bruker jeg Java, men også Javascript, C# og Azure på de perifere funksjonene som for eksempel installers, nettsiden og CI/CD-pipelines.

Den ryddige pulten til Cailin Smith i Microsoft : 📸 Privat
Den ryddige pulten til Cailin Smith i Microsoft : 📸 Privat Vis mer

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Det første jeg gjør når jeg kommer på jobb er å sørge for at de tidligere funksjonene vi har deployet fungerer som de skal og kjører uten problemer.

Vi har også daglige standup-møter og ukentlig sprint-planlegging, men vi holder oss egentlig unna møter og konsentrerer oss om konkrete oppgaver.

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

Jeg har Linux/Java-bakgrunn, så flytting over til Microsoft har vært en stor omveltning. Jeg har imidlertid blitt veldig imponert over Microsofts utvikling på produkt- og verktøyfronten.

Azure er en skikkelig kul plattform og etter at jeg har lært mer om den, er jeg ekstremt gira på alle tjenestene den tilbyr, særlig Azure pipelines (gratis for åpen kildekode-prosjekter!) som tilrettelegger for doumentasjons-deployment for CommandHelper/MethodScript.

Jeg jobber også med en integrering av Cognitive Services-verktøyet. Den gir maskinell oversetting av engelsk til lokal tilpasset dokumentasjon. Verktøyet vil trolig ha dokumentasjon på norsk snart.

En del av reiseruta til Cailin når hun skal på jobb i Microsoft. 📸Privat
En del av reiseruta til Cailin når hun skal på jobb i Microsoft. 📸Privat Vis mer

Hva er du mest stolt av å ha laget? 🏆

Definitivt CommandHelper/MethodScript. Jeg startet for ni år siden med en enkel plugin for Minecraft som jeg døpte CommandHelper. Nå er det et reelt programmeringsspråk som står på egne bein ved navn MethodScript.

Jeg spiller ikke Minecraft lenger, men jeg har fortsatt store planer for MethodScript. Målet er å lage et generelt programmeringsspråk som kan konkurrere med Python eller TypeScript. På sikt kanskje til og med Java og C#. Å lage et programmeringsspråk er selvfølgelig en svær oppgave, og selv om jeg har jobbet med dette i ni år, har det fortsatt en del mangler.

Når det er sagt, blir språket brukt verden over. CommandHelper har blitt nedlastet rundt 50.000 ganger, og blir brukt av flere hundre utviklere hver dag.

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

Jeg prøver så godt jeg kan å følge SOLID-prinsippene om god programmeringsskikk. Noen ganger er det kjedelig å bruke mye tid i forkant for å forsikre meg om at jeg lager håndterbare programmeringsspråk.

Likevel er jeg en forkjemper for å følge denne metoden. Å følge dem har lønnet seg og muliggjort at jeg kan utvikle programmeringsspråk som raskt kan tilpasse seg nye forhold. Den vanskeligste delen av programvedlikehold pleier å være endring av eldre deler av koden. Jeg har jo tross alt lært en del i løpet av åra, og eldre kode pleier ikke være så godt skrevet.

Microsofts Oslokontor i Barcode. 📸Privat
Microsofts Oslokontor i Barcode. 📸Privat Vis mer

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

Utvikling er en holistisk prosess. Jeg ser at mange blir tynget ned av detaljer, som selvfølgelig er viktige, men før du skriver din første linje med kode synes jeg det er nyttig å sette seg ned og tenke gjennom hva du ønsker å oppnå med prosjektet.

«Jeg mener også at folk ofte tar snarveier selv om ‘omveien’ ikke innebærer mer arbeid.» Cailin Smith

Min erfaring er at det kan spare deg for mye tankevirksomhet senere. Startup-kulturen krever at du er på alerten og jobber raskt, så der er det andre hensyn. Men det tar faktisk ikke så mye tid å sette seg ned, tenke ut hvordan du i fremtiden kvalitetssikrer programvaren din slik at den er lettere å redigere senere. Jeg mener også at folk ofte tar snarveier selv om "omveien" ikke innebærer mer arbeid. De velger snarveien fremfor "omveien" for å spare tid, men på grunn av dårlig design lager det trøbbel for dem lenger ut i prosessen.

Dette kunne vært unngått hvis man tenkte mer langsiktig. Noen ganger er "omveien" faktisk mye lenger, og byttehandelen nødvendig, og derfor den smarteste løsningen på grunn av produktbehovene. Men den avgjørelsen bør tas bevisst etter kritisk gjennomgang. Jeg mener at utgangspunktet alltid bør være hvordan man utvikler på den korrekte måten fra begynnelsen.

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

Jeg jobber en del med MethodScript på fritiden, men når jeg ikke programmerer liker jeg å spille videospill, lese, høre på musikk og skigåing om vinteren. Jeg liker også å reise så ofte jeg kan.

(Cailin har svart på engelsk, og svarene har blitt oversatt av kode24.)