To af Dikutals reportere har været på besøg i virksomheden SimCorp, på deres hovedkontor ved Islands Brygge og har lavet et interview med udvikler, mellemleder og DIKU-kontakt Niels Hallenberg. SimCorp er medlem af DIKUs Business Club, erhvervspartner i forskningsprojektet HIPERFIT og udvikler software til den finansiellesektor.

Dette er første del af en serie af artikler om danske IT-virksomheder.

Vi var forbi SimCorp i deres frokostpause og fik derfor også lejlighed til at afprøve deres kantine. Deres kantine ligger i stueetagen i et stort overdækket atrium og der serveres et stort udvalg af salater, varme retter og der er også mulighed for at smøre traditionelt smørrebrød. Det svarer nok meget godt til udvalget hos Biocenteret.

Herunder følger selve interviewet med Niels.

Hvorfor er jeres projektor så stor?

Der er et lærred ovre på den anden side [af det overdækkede atrium hvor de har deres kantine]. Historien er at man jo har generalforsamling en gang om året og det koster én eller anden mængde penge at afholde et andet sted og ved at holde det her, kunne man efter to gange finansiere hele det udstyr her.

Den er også så stor fordi at det er HD kvalitet på den store afstand og den er kraftig nok til at kunne klare dagslys.

Bruger I tabs eller spaces?

Det er jo sjovt. Så skal vi lige definere programmeringssproget først.

Gad vide om man overhovedet indenterer APL, det kode jeg har set har altid været en linje

Vi kan godt tage det. Jeg er ret sikker på vi bruger spaces i C#. I APL der mener jeg ikke at indentering er så relevant, det der er relevant i APL er at det læses fra højre mod venstre. Hvis vi tager OCaml, der er det spaces. Hvis vi tager F#, så havde vi en lang diskussion om vi skulle køre i ML kompatibilitetsmode, så vi blev fri for at spaces har en semantisk virkning. Personligt synes jeg det er håbløst grimt, og jeg er ret sikker på at vi bruger ML kompatibilitetsmode.

Hvad er det egentlig SimCorp går og laver?

Vi laver software til den finansielle sektor. Helt præcist laver vi et asset management system, så hvis du er en pensionskasse og du har nogle milliarder kroner du skal administrere, så vil du købe aktier og obligationer og alle mulige andre former for værdipapirer, og det skal du have et stykke programmel som kan administrere. Og der er en masse lovkrav når man gør det; man skal være i stand til at foretage analyser, f.eks. hvis renten stiger lidt, hvad er så konsekvensen for pensionskassen.

Så det I laver er at producere og sælge programmer?

Vi har ét softwareprodukt, så på den måde er vi en softwarevirksomhed. Når man vælger vores produkt vælger man lige så meget vores virksomhed, altså den måde vi supporterer vores produkt, vores konsulentudelser og vores support. Produktet afhjælper jo et behov der er, men det er lige så meget hvordan vi som virksomhed supporterer det. Det er jo en dyr ting, så det er selvfølgelig større virksomheder der betaler for den sikkerhed og robusthed.

Hvor har I kunder?

Ikke kun i Danmark; vi er 30 lande med 1100 ansatte. 500 af dem er i København, hvoraf 100 af dem er udviklere. Udviklingen er distribueret, men alle arbejder på samme kodebase.

Hvad laver man når man er blevet ansat som datalog hos SimCorp?

Det er meget forskelligt. Man kan spørge anderledes: Hvad er baggrunden for de udviklere vi har? Der er stor variation: Der hvor jeg er har vi semantikere ansat, altså en meget typisk DIKU-profil. Vi har noget O'Caml til at modellere finansielle instrumenter, så der er vi lidt ovre i det semantiske hjørne. Derudover har vi også matematikere, fysikere og økonomer ansat. Det, der er vigtigt at forstå, er at hvis man skal bygge et system så har man brug for mange kompetencer. Kompetencemæssigt, så har vi dataloger der kan semantik, lidt C#, og så noget matematik, så vores udviklere har det hele, men det interessante er at du ikke kan blande disse kompetencer i et produkt med mindre du danner teams der rent faktisk har dem alle. Som datalog kan du ikke sidde og lave det her - og som matematiker kan du heller ikke. Du har brug for alle de forskellige vinkler.

Som datalog på DIKU, hvilke kompetencer bør man så satse på, hvis man skulle have job et sted som SimCorp?

Selvfølgelig er der brug for tekniske kompetencer omkring konstruktion af skalérbare systemer med lækre brugergrænseflader, men derudover er der også brug for databaseeksperter. Hvis man har en tabel med milliarder af rækker, hvordan håndterer man så dét? Hvis man skal opgradere databasen til en nyere udgave og kun har 24 timer til det, hvordan skal det så gøres? Der er også den semantiske tilgang til datalogien, så hvis blot man har en klassisk datalogisk uddannelse, så har man et godt fundament. Det der er meget vigtigt, det er at man ikke behøver at have forståelse for finansiering, men hvis man ikke engang har en interesse for det, så bliver det svært. Det handler i sidste ende om at handle med finansielle produkter, så hvis man ikke har interesse i forskellen på en American option og en Bermudan option, så skal man lade være. Man behøver altså ikke være ekspert i domænet, men man er nødt til at have en interesse for det.

Er der noget I godt kunne tænke jer man lærte på DIKU, som man ikke gør?

I mine øjne rammer DIKU meget godt plet, fordi man lærer nogle fundamentale emner indenfor datalogien. Det er en god all-round uddannelse hvor man får noget formalisme indenfor datalogien. Vi påtager os så ansvaret for at bygge ovenpå med det finansielle, samt f.eks. undervisning i specifikke programmeringssprog. Et eksempel er at vi bruger APL; det er ikke et sprog som DIKU bør undervise i, men det er noget vi bruger her, og selvfølgelig betaler vi så hvad det koster at undervise i det. Men hvis man skal pege på en ting der i fremtiden bliver mere vigtig, så er det parallelisering, f.eks. forståelsen for de forskellige programmeringsparadigmer, det være sig funktionelle sprog eller objektorienterede sprog, og hvad de betyder for parallelisering. Hvis vi skal snakke om den finansielle verden, så er det at ambitionerne om real-time beregninger bliver større og datamængderne bliver større, så vi vil aldrig nogensinde blive gode nok. Uanset hvor gode vi bliver, så vil kravene blot blive tilsvarende større.

Nu nævnte du APL - kan du ellers fortælle lidt om hvilke konkrete teknologier I benytter jer af, og hvorfor?

Vi har en masse værdi bundet op i APL, da vi har benyttet det de sidste tyve år. Det er et vektoriseret programmeringssprog der er meget gammelt, så hvis man kigger på det med moderne sprogøjne og semantisk forståelse, så ville man jo ikke drømme om at bygge sådan et sprog i dag. Derudover bruger vi C#, især til at bygge en moderne brugergrænseflade. Derudover bruger vi OCaml; vi har nogle små satellitter i systemet hvor det har nogle egenskaber som vi godt kan lide til den specifikke opgave. Som database bruger vi kun Oracle, hvilket hænger sammen med at datamængderne er så store at vi går efter noget som vi ved fungerer, og har ekspertise i at få til at fungere. Igen, det vigtige er ikke at man kommer til at kode i APL eller C#, da vi har et stort framework som er i stand til at gøre nogle avancerede ting, så udfordringen er at få det til at virke godt.

Omkring vektorsprog som APL, så er det jo en programmeringsstilart som man ikke nødvendigvis lærer på DIKU. Ville det give mening for DIKU at undervise i den type sprog?

Selvom du skal kode i et vektoriseret sprog, så er det jo stadigvæk vigtigt ikke at gå på kompromis med fundamentet på den matematiske side. Vi er i et felt hvor den matematiske formalisme er vigtig, og hvis man har den, så kan man også nemt trylle rundt med matricer i APL, så det handler ikke så meget om hvorvidt man lærer et vektoriseret sprog, men om at man har forståelse for formalisme og ikke lider af symbolskræk.

Vil du mene at det matematiske fundament er særligt karakteristisk for en DIKU-uddannelse?

Man kan jo godt komme igennem DIKU uden at have et særligt stort matematisk fundament. Jeg synes at en af styrkerne ved DIKU er at uanset om du vælger et matematisk fundament eller ej, så bliver du alligevel undervist i grundlæggende koncepter, som hvordan en maskine eller operativsystem fungerer. Den grundlæggende forståelse er enormt vigtig, selvom man aldrig skal bygge et operativsystem, selvom vi naturligvis foretrækker kandidater med matematisk forståelse, fordi det jo er vores hovedområde.

I er med i Hiperfit. Hvad regner I med at få ud af det projekt?

Vi regner med at forskerne på Hiperfit kan lave nogle projekter og løsninger som vi givetvis vil kunne tage og tilpasse og tage idéer fra til nye salgsprodukter. F.eks. kunne man lave et modelsprog for prismodeller. For mange finansielle instrumenter har man ikke en deterministisk formel for prissætning, og det vil vi gerne have et højniveausprog til at udtrykke, hvor en oversætter kan deducere parallelismen. Hvis man kan løse dét problem, så vil det være relevant for SimCorp, fordi vi så kan bygge videre på de idéer og få dem integreret i vores eget system.

I er også med i DIKUs Business Club, er det I får noget ud af?

Man kan sige at Simcorp er så stor en virksomhed, at uanset hvordan man vender og drejer det, er det svært for f.eks. Business Clubben at komme ind i SimCorp og sige hvor er det vi kan noget og hvor er det vi ikke kan.

Jeg kan kigge personligt på det og spørge: hvad får jeg ud af det? Der er den her række møder om året, og der kan det være at jeg møder op til ét eller to møder, og det er så fordi jeg vælger de ting som jeg synes er interessante eller som jeg kan bidrage med på et eller andet plan.

Det der er kunsten for Business Clubben er jo selvfølgelig - og det tager tid - at komme ind andre steder i SimCorp, så både SimCorp og Business Clubben får noget ud af det. Og konkret har vi da forankret det på en sådan facon, at det tror jeg vil ske, men det går bare ikke særlig hurtigt.

Det skal både DIKU og det skal SimCorp bare acceptere, at det tager tid, men der er super interessante emner og selvfølgelig er det interessant at komme og høre forskere komme og fortælle om forskellige emner som de arbejder med, men der er man selvfølgelig meget selektiv.

Der er også det aspekt med at møde nogle af de andre virksomheder og netværke

Ja, og der kan man så sige. For mig lige nu, der fokuserer jeg selvfølgelig på HIPERFIT. Det er sådan lige spot on hvad jeg er bedst til. Og vi er i processen med at den klub bliver mere og mere bredt ud i SimCorp, så flere grupper eller afdelinger får indsigt i mulighederne der, men det tager tid sådan noget.

Hvis vi nu skal gå lidt mere over i noget som arbejdsmiljø, I er jo en softwareudviklingsvirksomhed, så jeg går ud fra at ledelsen har teknisk forståelse for kvaliteterne omkring udvikling. Dvs. at de ved hvad det kræver at udvikle programmer - jeres primære domæne.

Det er meget sjovt det du siger, for jeg vil jo sige, du antager at det primære domæne er det tekniske.

Okay, men jeres produkt er jo support og udvikling af programmer

Ja, men det der er interessant ved SimCorp i min optik, det er at, jeg tror ikke vi har ét primært domæne. Vi har et matematisk domæne, et financielt domæne og vi har et datalogisk domæne.

Hvis vi prøver sammenligne med en virksomhed der laver et Content Management System, der må det primære domæne være det datalogiske domæne fordi at, man kan sige at det kan godt være det er svært at bygge sådan et system der er godt, men det er stadig væk det datalogiske der er det primære. Selve opgaven, kravene og så videre, som det system skal kunne er relativt overkommelige at forstå, selv om man ikke har en eller anden PhD inden for content-management styring.

Det der er problemet her er, at man bliver nødt til at være på et højt niveau på alle de her tre domæner, så det der i min optik er en god ledelse for SimCorp, det er en ledelse der er sammensat således at man har de der aspekter også. Teknik er en del af det, men de andre ting er altså også vigtige. Og det ser man også på den måde vi sætter vores teams sammen. Vi har teams hvor der sidder fysikere, hvor der sidder finansielle folk, hvor der sidder dataloger og laver de samme ting. Og det er simpelthen fordi de kan ikke lave det alene. Og det skulle helst også være reflekteret oppe i ledelsen, og er i bund og grund reflekteret oppe i ledelsen.

Der er SimCorp nok en smule anderledes end i andre software virksomheder, hvor man domæne mæssigt konkurrerer på områder som ikke er så dybe forståelsesmæssigt. Det er der jo ikke noget ondt i. Det er lidt det samme som Terma, der er man jo også nødt til at have sindsygt dybe kompetencer på mange områder for at kunne bidrage til rumindustrien, og der er det jo ikke kun datalogi der er vigtigt.

Ved du egentlig hvor mange trin der er fra dig, og op til topchefen?

Ja. Vi har en direktion bestående af 3 personer og den ene person er chef for udvikling.

Så der er faktisk kun èn mellem dig og top-ledelsen?

Ja, men man skal også se på gruppestrukturen. Vi har det vi kalder en 'unit' og udviklingsafdelingen har et antal 'units'. Hver unit har et antal 'grupper', som så har en gruppeleder, og hver af de 'grupper' kan have et eller flere 'teams', så det er vores struktur. Team-lederen er daglig leder og gruppelederen har ansvaret for det personalemæssige, men har også en indsigt i det faglige, men hvis vi snakker om de konkrete faglige beslutninger der skal tages, så er det faktisk en kompetence vi har sat hos team-lederen, da det bliver nødt til at være nogen som hver dag har fingeren på pulsen på det faglige.

Der tror jeg vi er en lille smule anderledes, med at have den her udtalte sondring.

Og hvor er du i dette hierarki?

Jeg er 'unit'-manager, jeg tror det er fuldstændig traditionelt. Der bliver nødt til at være en eller anden form for struktur når man er så mange mennesker. Her der er vi vel cirka 42 mennesker [i en unit]. Det er en lille unit, vi har også units på 120 mennesker. Et team er på alt fra 5 til 12.

Teamlederne har et ansvarområde, men også beslutsomhed omkring det faglige og det er ikke det samme som at sige at gruppemanageren ikke er faglige, for det er de. Vi er en virksomhed hvor det går ikke bare at være gruppemanager og det eneste man interesserer sig for er personaleledelse. Vi er allesammen meget, meget faglige på en eller anden led, men teamlederne har en meget stor kompetence hvad angår det tekniske.

Har medarbejderne sociale aktiviteter sammen?

Sociale aktiviteter kan være mange ting. Vi har en halvårlig udviklingscyklus, det vi kalder baseline. Vi har 6 måneder hvor vi udvikler, alle de her 450 mennesker og så lukker vi. Det gør vi her næste gang den 29. marts. Så er alle enige om at nu er vi færdige. Derefter laver man det man kalder et kick-off, for så starter den næste baseline. Det er et eksempel, hvor folk bliver fløjet ind fra Kiev eller hvor end man kommer fra, afhængigt af hvor mange forskellige personer rundt om i verden man har involveret i de forskellige grupper. Så mødes man og går den næste udviklingsperiode igennem og der er jo altid restaurantbesøg og andre sociale ting og sager. Så vi bruger meget tid på at socialisere på tværs af landegrænserne. For os er det en ting vi bruger penge på, fordi det er vigtigt at man har drukket en kop kaffe og mødt de personer man sammenligner med, på tværs af lande og tidszoner i forhold til hvad der opstår af problemer i hverdagen.

Så er der jo sociale klubber i et væld, alt fra badminton, løb, kajak og brætspil, og ja, der er en mega lang liste.

I Kajak-gruppen, SimKayak, kan man komme ud og få sig en kajak tur ude i vandet herude [Københavns havn]. Der er et kajaksted derude, lige over broen [Langebro] og det er bare som eksempel på en forening og der tror jeg nok at SimCorp har puttet lidt penge i, så der er det enormt billigt og starte, basalt set.

Der er massere af foreninger, men initiativet kommer fra medarbejderne. Så søger man om at man godt kunne tænke sig noget af det og det. Jeg tror der er 30 klubber eller et eller andet.

Vi har et motionsrum hvor vi sådan nogle cykler med sådan en skærm, og så kan man sidde og køre mod hinanden. Der er alt muligt.

Vi har det vi kalder "Flemming" [efter den tidligere adm. direktør Flemming Tamstorf], som er sådan en bar, hvor man kan komme op og der er videospil, bordtennis, billard og dart. Der mødes mange om fredagen og drikker en øl. Så jeg vil sige vi gør meget ud af det på forskellig vis.

 

Nu vender vi lige tilbage til et teknisk spørgsmål. Kunne du ikke lige opsummere igen, I hvor stor udstrækning benytter I jer af funktionsprogrammering?

Ikke stor. Altså, man kan sige at i "Financiel Instruments" bruger vi det i én gruppe. Så vi har ét område hvor det er helt oplagt at vi gør det.

Desuden har APL funktionelle aspekter i sig. Eksempelvis, så kan du tage at map'pe hen over en vektor eller matrix og anvende en operation. Du kan faktisk tilegne dig en funktionel kodestil i APL, men du kan også lade være.

Har APL overhovedet sideeffekter? Normalt ser man bare en matrix der bliver kørt igennem en række operationer.

Du kan jo tilgå databaser og skrive på skærmen, så jo. Men jeg tror APL er mange ting, for den APL vi bruger har også mange sekventielle, imperative features, med if-then-else og for-løkker.

Men APL bruger I mange steder?

Ja.

Du karakteriserede C# som værende brugt til brugergrænsefladerne og binde det hele sammen. Var det korrekt?

Ja, det er sådan lidt forsimplet.

Kan du give en overordnet beskrivelse af hvad det er i bruger APL til? Er det selve forretningslogikken?

Ja, det er jo det der ligger nedenunder. Vores bogføringsmaskine, de financielle beregninger, osv., og det er jo fordi at der er tyve års oparbejdet værdi i det produkt. APL er ikke så skidt til det, men det er klart at det er et gammelt sprog og man ville ikke bygge sådan et sprog i dag. Det er af historiske årsager at der der er så meget værdi i det.

Og så da vi kom til at skulle lave en mere moderne brugergrænseflade, der kan man sige at de største dele af vores system havde en APL grænseflade, som ligner Winforms, med de grå knapper og så videre. For at få en lidt mere moderne udgave af det, og for at være i stand til at lave mere avancerede brugergrænseflader, så valgte vi så at køre C# ind. I dag bruges C# også til andre ting, men der er ligesom de der to lag. Det er meget på de brugergrænseflade-tunge dele af systemet at der bliver brugt C#.

Hvad bruger i funktionsprogrammering til, der hvor I bruger det?

Der er to eksempler, og jeg tror ikke der er andre. Vi prøver at lave et lille internt DSL til at udtrykke automatiske tests, og det gør vi fordi vi gerne vil have lidt syntaks, og det er enormt nemt at definere de her små funktioner til at sætte ting sammen og det bliver en meget meget præcis semantik for de forskellige elementer vi har brug for. Du har typeinferens og alle de der ting, som gør at du simpelthen kan udtrykke rigtig meget, rimelig kompakt. Det er enormt godt til at udtrykke data meget eksplicit, du har lister, records, par og tupler, og hvad ved jeg, brugen af data typer osv. Det er helt oplagt til det område.

Et andet område, der skal vi tilbage til ICFP i 2000, der kom Simon Peyton-Jones og en der hedder Jean-Marc med en artikel om hvordan man kan lave en model for at udtrykke financielle kontrakter vha. af et kombinator bibliotek (http://research.microsoft.com/en-us/um/people/simonpj/papers/financial-c...).

Jean-Marc har bygget et firma på baggrund af den artikel, i Frankrig, som hedder LexiFi [en anden HIPERFIT samarbejdspartner] og vi samarbejder med dem. De har så taget OCaml oversætteren og udvidet den med type-classes og andre features som var nødvendige for at realisere den her drøm om sådan et bibliotek. Det er et klassisk eksempel på hvordan man tager en forskningsartikel og bygger en virksomhed. Den fik vist også flere priser tror jeg.

Jeg tror ikke vi bruger det så mange andre steder, så vi er lidt specielle i financial instruments.

Hvis du skulle opsummere den bedste grund til at arbejde hos SimCorp, som DIKU uddannet, hvad skulle det så være?

Forudsat at man synes, eller tror, at det financielle domæne kunne være interessant, så tror jeg at man skal vælge SimCorp fordi der er højt til loftet, ambitionerne er store og man får nogle komplekse problemstillinger at arbejde med, og man gør det sammen med andre.

Hvis man ikke synes det er sjovt, så skal man lade være.

Næste gang tager vi på besøg hos Jobindex, så hold øje med Dikutal!