Om forholdet mellom test og matematikk

Brukt riktig, kan en matematiker spille en verdifull rolle i IT-prosjekter.

Itera har de siste par årene gjort en strategisk satsning ved å ansette matematikere til test av programvare. Jeg er en av dem. Jeg vil gjerne forsøke å forklare hvordan en matematikers kompetanse kan være verdifull i et prosjektteam, og samtidig vise frem en spennende karrieremulighet for nåværende matematikkstudenter.

 

Vegard Fjellbo.jpg

Vegard Fjellbo, tester i Itera og Ph.D. i matematikk.

 

USA leder an

Min egen motivasjon for å bli IT-konsulent er dels relatert til Ayasdi, et IT-selskap i USA som ble etablert i 2008. Selskapet har lansert en maskinlæringsplattform som etter hvert er blitt meget innflytelsesrik. Det nye med denne plattformen er at den supplerer tradisjonelle statistiske metoder med geometrisk innsikt. Teknologiene Ayasdis plattform bygger på går gjerne under samlebetegnelsen topologisk dataanalyse, eller - på engelsk - Topological Data Analysis (TDA). Som ekspert på geometri og topologi synes jeg dette er en spennende utvikling, som jeg tror vi vil merke følgene av i Norge i tiårene som er foran oss. Jeg har lyst til å være med på denne ferden, men med IT-sektoren som farkost.

Eksempler på bidrag fra TDA er visualiseringsmetoder, analysemetoder som er robuste overfor støy i datamengdene og et nytt rammeverk for klyngeanalyse – på engelsk kjent som clustering. På kundelisten til Ayasdi står organisasjoner som for eksempel Homeland Security. Ikke minst har læringsplattformen vist seg nyttig i helsesektoren og når det gjelder analyse av finansielle transaksjoner.

 

En uventet telefon fra Itera

På tidspunktet da jeg satt og jeg vurderte opponentenes kritikk av min doktorgradsavhandling i geometri og topologi, tok Itera kontakt for å høre om jeg kunne være interessert i bygge en karriere innen test av programvare. Den umiddelbare responsen min var at jeg tvilte på om kompetansen min var riktig for denne typen rolle. Imidlertid fant jeg at problemene man står overfor i testrollen kan minne om hverdagen som matematiker, så jeg bestemte meg for å takke ja til et intervju. Siden endte jeg opp med å skrive kontrakt og starte i mai 2018.

 

Hvordan man kan sammenlikne matematikk og test?

En matematiker har både skapende og kritiserende roller i ulike faser av sitt (og andres) arbeid. En slik kritikerrolle er nokså direkte overførbar fra matematikk til IT-sektoren, men med en vesentlig forskjell. I matematikk er det nemlig ikke rom for feil, mens man i et IT-prosjekt kan beslutte at noe er «godt nok».

En eventuell feil i matematikk er gjerne i form av et moteksempel, noe som eventuelt vil være et hinder for å etablere et resultat. Moteksempelet skal da gjøres møysommelig rede for, noe som er analogt til hvordan man i testrollen rapporterer om en feil på en måte som gjør at feilen kan reproduseres. Til forskjell fra matematikk, beviser man altså vanligvis ikke at programvare er feilfri, men man foretar i stedet avveininger og prioriteringer i arbeidet med å avdekke feil og rapportere om dem. En likhet er at man går systematisk frem for å finne feil i programvare, noe som likner en del på matematikeres hverdag.

For spesielt interesserte kan jeg nevne at det finnes en presis måte å skrive kravspesifikasjoner tilhørende IT-prosjekter som kalles TLA+, og som er forfattet av Leslie Lamport. I den grad et prosjekt har nedskrevne krav og man ønsker å verifisere korrekthet av programvaren, ville en presis kravspesifikasjon være første steg på veien. Språket TLA+ brukes for eksempel hos Amazon.

 

Slik er det å være IT-konsulent med matematikkbakgrunn

Det er mange fordeler ved å ha matematikkbakgrunn som IT-konsulent, utover treningen i å bedrive kritikk av eget eller andres arbeid. For eksempel har matematikere erfaring i å bruke teknikker for å forstå data, samt modellere dem. Videre er vi vant til å bygge opp ny arkitektur eller eventuelt tilpasse eksisterende arkitekturer med henblikk på å løse et problem. Slik tankegang ligger også til grunn for utviklingen av for eksempel programmeringsspråket Scala, hvor mulighetene er svært gode for å abstrahere til et nivå hvor problemet man jobber med kan løses ved hjelp av oversiktlig og gjenbrukbar kode.

Personlig har jeg for eksempel mange års prosjekterfaring i bruk av kategoriteori, et matematisk rammeverk som dukker opp i Scala. Sammenlikninger og analogier beskrevet i rammeverket gir opphav til meget oversiktlige beskrivelser av problemer, og gjør det lett å sette fingeren på kjernen i dem.

Skal man utvide programvare slik at den blir et mer sofistikert verktøy for brukerne, vil man gjerne ta stilling til i hvilken grad eksisterende kode kan gjenbrukes. Et eksempel kan være at Finans Norge har vedtatt nye krav til medlemsbankenes avkastningsprognoser. Spørsmålet er da om koden som presenterer avkastningsprognosen for kunden kan brukes til å lage en ny og formodentlig mer pålitelig avkastningsprognose som tilfredsstiller avtalen. Med andre ord ønsker man å vurdere hvorvidt metodene man har brukt kan generaliseres. Slike vurderinger er en del av hverdagen til matematikere.

 

Læringskurve med høy derivert

Jeg har også opplevd noen utfordringer ved å begynne som tester og ha en (nokså) ren matematikkutdanning. På matematikkutdanningen ved UiO lærer vi naturligvis å programmere, men det å jobbe i en virksomhet som utvikler programvare innebærer også å forholde seg til infrastruktur, rammeverk, verktøy og arbeidsmetodikker, noe utviklere har med seg fra skolebenken. Slikt har jeg måttet lære gjennom jobben.

Et mål for meg er å kunne ta i bruk kunnskap og ferdigheter fra geometri til å behandle data, for eksempel med henblikk på analyse av resultater fra testkjøringer. For å komme dit har jeg hittil fokusert på en kombinasjon av kurs innen maskinlæring og sertifisering på skyplattformer. Jeg kan nevne at bakgrunnen min synes å passe veldig godt til å forstå IT-arkitekturer som fasiliterer data pipelines, noe jeg erfarte da jeg tok eksamen på Google Cloud. Fordi behandlingskraft nå for tiden vokser horisontalt mer enn vertikalt, i den forstand at det for eksempel blir flere prosessorkjerner i større grad enn at kjernene hver for seg blir raskere, har jeg også hatt et fokus på distribuert programmering ved bruk av Scala og Apache Spark.

Hos Itera har jeg hittil jobbet med programvare som berører kreditt, avkastningsprognoser og hvitvasking. Videre er jeg engasjert i de spennende fagmiljøene internt hos Itera, for gjennom tidligere karriere og domenekunnskap har jeg noen kvalifiserte meninger om trender vi kan stå overfor.

Jeg vil anbefale alle som jobber i IT-prosjekter å vurdere hvorvidt problemene man står overfor i sitt prosjekt kanskje kan løses på en god måte av en matematiker. I tillegg vil jeg anbefale IT-sektoren, og spesielt testrollen, for matematikkstudenter. Som tester med matematikkutdanning vil du sannsynligvis også utvikle forståelse for arkitektur, som i sin tur vil virke fremmende på karrieren.

Les mer om testledelse og våre testtjenester her!