utvikling
Slik blir Cobol og Java til «clean code» på stormaskinen
Teknisk gjeld er et «fact of life» og både Java- og Cobol-utviklere har godt av å få forbedret håndverket sitt.
Over tid vil det alltid oppstå teknisk gjeld. Det er et «fact of life».
Det mener Thomas Højmark Grønbæk, avdelingsleder i danske Bankdata, som utvikler programvare for bankverdenen.
Her dominerer stormaskiner (mainframes), Cobol og IBM selve bankvirksomheten. Og koden går mange tiår tilbake.
– Du skriver noe kode så godt du kan, men tiden løper fra den. Den blir bygd på, og da oppstår teknisk gjeld over tid, sier Thomas Højmark Grønbæk.
– Vår tilnærming er at hvis det er en forutsetning for å lage IT, så ønsker vi å investere i clean code-tankegangen for å skrive kode på riktig måte: Lettlest, lett å vedlikeholde og etter gode prinsipper, som vi er enige om – slik at vi bremser mengden av teknisk gjeld over tid.
Clean Code er en bok av Robert C. Martin, også kjent som «Onkel Bob», som har besøkt den danske utviklerkonferansen Goto mange ganger overfor en lojal fanskare. Boken gir råd om hvordan kvaliteten på koden kan forbedres.
Det er ikke fordi bokens råd er overraskende – et av dem handler om gode navn på funksjoner – men det er ikke så banalt likevel, sier seniorutvikler og sivilingeniør Rune Christiansen.
– Det forfatteren beskriver er håndverket. Men jeg har fremdeles ikke møtt en ingeniør- eller informatikkutdannet som har hatt et «clean code»-kurs. Vi lærer alt mulig annet.
Man underviser ikke i pen kode
Det det undervises i er for eksempel kompleksitetsanalyse, som Rune Christiansen har brukt i sitt arbeid, og ikke ville vært foruten i sin utdannelse.
– Man underviser ikke i hvordan man skriver kode som er pen og til å vedlikeholde. Det er ikke fokus på utdannelsen.
Noen argumenterer for at de studerende selv skal oppsøke den delen av faget, sier Rune Christiansen. Men det er mer å si om den saken.
– Vi blir nødt til å sammenligne oss med andre håndverkere, for mye av det vi gjør er håndverk. Jeg har en fornemmelse av at vi akkurat nå utdanner folk uten å fortelle dem hvordan man rent faktisk skriver kode. For meg tilsvarer det å utdanne murere uten å fortelle dem hvordan de skal legge mursteinene.
Men det var ikke fordi Bankdatas kode var dårlig før i tiden, mener Højmark Grønbæk.
– Alle virksomheter utvikler seg over tid. Man kan alltid forbedre sine evner innenfor håndverket. Det er en tro på livslang læring.
Fra hullkort til smidige metoder
Bankdata har eksistert siden 1966. Det startet med hullkort, og så kom online-systemene.
– Våre kjerne-banksystemer er bygget i Cobol, og så er vi i gang med en transformasjon der vi bygger mye av forretningslogikken i Java i Dag, og har en stor Java-plattform, forklarer Højmark Grønbæk.
– Så vi har gått fra at Cobol er dominerende til at det i dag er mer sidestilt. Men fordi det er levert så mange årsverk i Cobol, har vi en større mengde der.
Rune Christiansen vil ikke ut med hvor mange Cobol-linjer Bankdata har, men vil gjerne fortelle at virksomheten har 100 ganger så mye Cobol som Java.
I forbindelse med en omstilling til smidig (agile) utvikling, som Bankdata begynte på for fire-fem år siden, gikk det opp for virksomheten at man måtte adressere behovet for ren kode – eller «clean code».
– Så tenkte jeg: Hvis vi skal ha en virksomhet som er konkurransedyktig om 10 år, hva skal jeg så dytte på nå?
Og tanker om clean code boblet allerede flere steder i Bankdata, forteller Højmark Grønbæk.
– Flere hadde begynt å lese boken i mindre lesegrupper, og vi kunne se at de teamene som hadde lest boken og implementerte prinsippene fikk en moden tankegang om hvordan de skrev bedre kode med mindre tekniske gjeld. Vi besluttet å skalere det, og får implementert denne tankegangen blant både Cobol- og Java-utviklere.
Ren kode handler også om at utviklere leser minst 10 ganger så mye kode som de skriver, og ofte skal man sette seg inn i andres kode for å lage ny funksjonalitet, lyder synspunktet.
Stormaskinen ligner en sky
Noen utviklere går kanskje rundt og tenker at Cobol kan være litt «støvete». Slik er det ikke for Rune Christiansen.
– For meg har det aldri vært et problem, fordi jeg er ikke utdannet til å bli dyktig i ett språk – men å bli dyktig i det språket jeg skal jobbe med. For meg er språket bare det som jeg skal utfolde meg i og få verden til å virke i. Man kan si mange gode ting om både Java og Cobol, og Cobol er helt fantastisk deilig enkelt. Alle kan lese Cobol, fordi det er som det er.
Kunsten er å få dette relativt enkle språket til å kunne gjøre alle mulige ting.
– Et språk som Java har mange pakker som deles på nettet, hvor man kan hente diverse datastrukturer og så videre. Hvis man vil gjøre det i Cobol, så må man begynne forfra, for det finnes ikke fra før.
Det er ikke noe sted hvor man offentlig tilbyr moduler for å lage en lenket liste eller en hashtabell i Cobol. Og det er fordi Cobol er til forretningsbruk, i den strengeste forstand.
– I forretningsverdenen har du ikke store behov for hashtabeller eller lenkede lister. Man har behov for å flytte og beregne verdier. Det gjelder for bankverdenen, forsikringsverdenen, supermarkeder, flyselskaper og så videre.
Når det handler om grafiske brukergrensesnitt får man mer bruk for dynamikk, mener Christiansen. Java er bedre til den slags.
– Det er et plattformvalg, det vi skal utvikle nå, hvor vi kan gjøre det mest effektiv, og hvilket språk som passer best til oppgaven.
Java halter i kjøringen
Enkelte utviklere har fordommer mot Cobol, og mener det er et lite produktivt språk, spekulerer Version2s journalist. Men det er ikke korrekt, mener Christiansen.
– Hvis vi skulle skrive den samme kodesnutten i Bankdata, som beregner en renteprosent på et beløp, så vil jeg påstå at det er like raskt å skrive i begge språk. Og at Cobol er raskere til å kjøre det, for språket er designet til å raskt kjøre den slags transaksjoner og minnehåndteringen er annerledes enn i Java. Så Cobol har noen styrker i kjøringen, der Java halter.
Og støvete er altså ikke miljøet.
– Den moderne stormaskinen kan du sammenligne med en skytjeneste. Vi kan avvikle REST- og SOAP-tjenester og Java, og IBM har nettopp lagt til Node.js. Hvis vi ville kunne vi tatt alle våre Linux- og Windows-servere og kassert dem, og kjørt det hele på stormaskinen.
Bankdata bruker også automatiserte tester i Cobol og på stormaskinen, som foreskrevet innenfor smidig utvikling.
Rune Christiansen er skeptisk overfor de mange popularitetsmålinger av språk. De bygger nemlig på offentlig tilgjengelig kode, og her kan ikke Cobol være med.
– Man skal huske på at disse listene blir generert ut fra tilgjengelige databaser med kode, som for eksempel Github. Det er ikke ensbetydende med at det er de språkene som blir brukt i virksomheter. Det er en kjempestor mengde «sorte data» man ikke kjenner til. Jeg kunne godt tenkt meg at IBM hadde prøvd å samle opp informasjon hos sine kunder om hvor mye Cobol man har. Jeg er ganske sikker på at hvis du gjerne vil være Cobol-utvikler, så er du sikret jobb for resten av livet.
Denne saken ble først publisert på danske Version2, og gjøres tilgjengelig på norsk gjennom vår samarbeidsavtale med Teknologiens mediehus/Ingeniøren.