Software i sig selv er sjældent målet. Det skulle da lige være for en softwareproducent eller en softwarekonsulent. Selv der er software for det meste et middel til at opnå noget. Det giver mening at se på software som facilitator. Et værktøj.
Et fantastisk avanceret og spændende værktøj, men ikke desto mindre et værktøj.
Vi har specialiseret os i at bygge de absolut bedste værktøjer på .NET-platformen – ofte i en form for microservice arkitektur. Det gør vi fordi microservices giver nye muligheder for at bygge software, der passer til kundens behov. Vi kan bygge mindre, uafhængige moduler tilpasset virksomhedens forretningsgange. Det synes vi giver mere mening end en stor samlet løsning, hvor alle afdelinger smelter sammen i en softwareapplikation.
Det betyder, at de enkelte moduler kan være ”specialister” på deres felt og kan skaleres uafhængigt. Det svarer lidt til klassisk organisationsstruktur i en virksomhed. I en mindre virksomhed vil alle typisk arbejde sammen og have overlappende ansvarsområder. I takt med at virksomheden vokser, vil der blive etableret afdelinger med interne service level agreements. Det betyder i bund og grund at alle afdelingers ansvarsområder er klart defineret, og at der er klare regler for, hvordan afdelingerne kommunikerer indbyrdes.
På samme måde organiserer vi software omkring forretningsbehov og specialistkompetencer. Software opbygget til at udfylde et specifikt behov i forretningen og designet, så den nemt kan kommunikere med resten af forretningen.
Software som facilitator – fokus på forretningen
Som udviklere har vi altid forsøgt at bygge software, der passer til vores forretning. Men i takt med at software er blevet mere og mere vigtig for stort set alle typer virksomheder, er kravene til manøvredygtighed, udviklingshastighed og tilpasning steget eksponentielt. For bare 10-15 år siden var det store sager, hvis et økonomi- og et CRM-system kunne kommunikere nogenlunde effektivt med hinanden. I dag bygger vi komplicerede løsninger til musikstreaming, produktionsstyring og e-handelssystemer, der integrerer med økonomi og lagerstyring.
På grund af den tredje industrielle revolution er software blevet en vigtigere og vigtigere del af praktisk taget alle forretninger. Hvad enten det er 100% digitale forretninger, der sælger digitale ydelser digitalt, traditionelle offlinevirksomheder, der bevæger sig mod en online fremtid eller virksomheder, der driver al forretning offline, så er der masser af værdi at hente i god software.
I takt med at internettet spreder sig til alt fra elpærer til atomreaktorer og flere og flere industrier bliver ramt af digitalisering, vil det kun blive mere og mere relevant med software der på den ene side fungerer uafhængigt, men samtidig integrerer fuldstændig sømløst med resten af forretningens software.
Det er her der hviler et tungt ansvar på os som udviklere og arkitekter. Det er os, der forstår hvordan vi bedst muligt bruger software som facilitator, der kan understøtte forretningen – derfor er det vigtigt, at vi holder fast i vores principper og sørger for at holde et højt niveau på vores kode og arkitektur.
Håndværket skal være i orden
Som markedet ser ud lige nu, er der mangel på dygtige udviklere i Danmark og virksomhederne begynder derfor at kigge udenfor landets grænser. Det er der ikke som udgangspunkt noget problem i, men vi oplever alligevel at kvaliteten ikke lever op til de standarder, vi sætter for god software.
Lavkvalitets kode kan sagtens virke. Men dårlig kode vil over tid være en så stor modspiller for forretningen, at det i sidste ende kan tvinge virksomheden i knæ. Men hvordan er det, at god kode kan give din forretning de optimale betingelser? Er det ikke bare meningen at software skal virke hurtigst muligt og til den laveste pris?
Hurtig leveringstid og lav pris er selvfølgelig vigtige elementer for enhver virksomhed, men der er også andre essentielle elementer i en softwareløsning. Software kan på mange måder sammenlignes med en bygning – problemet med software er bare, at det kræver en høj teknisk forståelse at kunne vurdere kvaliteten.
Hvad får forretningen ud af en bedre kodebase? Vi har samlet 6 punkter:
God software er nemmere at bygge videre på
En god softwareapplikation er ikke bare bygget til at håndtere de nuværende behov. Den er bygget, så den kan udvides, modificeres og skaleres uden at skulle skrives om. Det betyder ikke at vi altid bygger et fundament, der passer til et palads, men det betyder at vi sikrer os, at der er plads i arkitekturen og teknologien til at forretningen kan vokse. På den måde sikrer vi at softwaren altid bliver facilitator frem for bremseklods.
God kode er nem at læse
Det er et af de vigtigste fokusområder for en udvikler – at koden skal være nem at læse. Det betyder, at det er hurtigere og lettere for fremtidige udviklere at læse din kode. Hvad er nemt at læse? En konsistent stil med mellemrum, indrykninger og betegnelser, der giver mening.
En tommelfingerregel lyder ”kode bliver skrevet en gang, men læst hundredevis af gange” – derfor er det så vigtigt at koden er læsbar. Både, som nævnt ovenfor i formateringen, men også at kommentarerne til koden forklarer hvorfor koden gør det, den gør.
God kode er simpel
God kode er grundlæggende simpel. Simplere kode er lettere at læse og vil generelt have færre bugs end kompliceret kode. Det er en af grundene til at vi er glade for F#, men princippet gælder på tværs af sprog. Simpel kode er lettere at læse, overskue, vedligeholde og modificere.
God software er fleksibel
Fleksibilitet er ikke bare i koden, men også i arkitekturen som heldhed. Fleksibilitet er en af grundene til, at microservice-arkitektur er så populær. Men på kodeniveau er det også vigtigt at sikre, at der kan justeres, udbygges og genbruges elementer, efterhånden som behovene ændrer sig. Fleksibilitet er den ultimative facilitator.
Nem at vedligeholde
Langt størstedelen af al kode indeholder bugs – derfor er det vigtigt at det er tydeligt, hvorfor du har skrevet et givent stykke kode. Simpel kode med gode kommentarer er også nemmere at rette i. Det er her, at de virkelig dygtige udviklere stikker af fra feltet – ved at skrive kode, der scorer højt på ”maintainability” – hvor nem den er at vedligeholde.
Den virker
Det giver måske lidt sig selv, men kode skal helt grundlæggende virke. Koden skal løse de problemer, den er skrevet til at løse efter hensigten.
Softwarens arkitektur er ligeså vigtig som koden
Men det stopper ikke der – det er som tidligere nævnt ikke kun koden, der skal være simpel, overskuelig, fleksibel og nem at vedligeholde. Det samme gælder for arkitekturen. Og så er vi tilbage ved microservices. Den modulære struktur i microservices gør det til en tilgang til arkitekturen, der er så fremtidssikret, som man kan være, når vi nu ikke kender fremtiden.
Microservice-arkitekturen er bygget, så de enkelte moduler i softwaren kan opgraderes, modificeres og udskiftes uafhængigt. Og de kan bygges op på forskellige teknologier. Det betyder også, at alle moduler kan omskrives, fjernes eller skiftes ud, hvis behovet opstår. Det er netop fleksibiliteten der gør microservices til en superfleksibel arkitektur.
Men det er ikke kun i forhold til fremtidssikring at microservices har sin berettigelse. Hvis du skal bruge din software som facilitator, er det vigtigt at den understøtter forretningen så godt som overhovedet muligt. Så er det smart at de enkelte dele af softwaren kan opgraderes og modificeres uafhængigt.
Det betyder at alle afdelinger i virksomheden teoretisk set kan styre hvordan, hvornår og hvorfor deres software skal opdateres – dog med forbehold for, at den samlede mængde udvikling skal passe til størrelsen på teamet selvfølgelig.
Microservice-arkitektur giver mulighed for skræddersyet serverkapacitet
Det giver også mulighed for at skalere de enkelte moduler gennem en Microsoft Azure eller en Amazon Web Services-løsning. Hvor forretningens software tidligere kørte på en fysisk maskine enten i virksomheden eller hos en leverandør, kan den i dag køre fra cloudtjenester. Det giver mulighed for at købe præcis den kapacitet, du har brug for, når du har brug for den. Hvis du driver en sæsonbetonet virksomhed, kan du have brug for måske to, tre eller ti gange mere kapacitet i peakperioder.
Med cloud-baserede microservices kan hver enkelt modul i forretningen få allokeret den kapacitet den har brug for. Så behøver i ikke have en hel serverpark stående fordi dit behov stiger voldsomt i december måned. Du kan betale for den kapacitet, du bruger – når du bruger den.
Igen handler det om at teknologien er tilpasset forretningens behov – ikke omvendt.
Hvorfor nu? Hvad har ændret sig?
Det er egentlig relativt simpelt – processorkraft, cloudteknologi og ændrede behov. De mange uafhængige komponenter har brug for mere hukommelse og CPU. Det er ikke længere et problem – vi har så meget processorkraft og båndbredde til rådighed, at vi til dels kan flytte fokus fra performance til andre ting.
Det samme gælder for cloudteknologien, der først for alvor er blevet foldet ud i takt med at den globale digitale infrastruktur er blevet bedre.
Og det er i kombinationen af de to teknologier at magien for alvor opstår. Det er når vi bygger software, skræddersyet til forretningens behov. Det er en ny verden, men det er absolut essentielt for at være succesfuld med en digital transformation. Der skal du kunne parre forretningensbehov med de digitale muligheder og bruge software som facilitator.
Digital transformation er et nøgleord fordi den stiller øgede krav til integrationen mellem og funktionaliteten i vores software. I den verden er vandfaldsmodellen og monolitten i højere og højere grad for langsom.
Er du interesseret i at læse mere om microservices, kan du gøre det her.
Join the discussion One Comment