Principper for softwareudvikling

principper for softwareudvikling

Hvorfor principper for softwareudvikling?

Vi har samlet vores principper for softwareudvikling. Fordi vi gennem mange år har forfinet vores processer omkring arbejdet, vores måde at se på software på og vores forståelse af softwarens rolle i virksomhederne. Vores principper er en måde at eliminere dårlige vaner og sikre at de ikke kommer tilbage.

Dårlige vaner kommer snigende ind på os, og før vi ved af det, er de blevet en del af vores måde at arbejde på. Stort set alle vi arbejder med får en brat opvågning. Fordi vi – i modsætning til mange andre – kontinuerligt arbejder med vores faste principper. Og fordi vi er mange, der konstant holder hinanden op på de principper.

Det er vores løfte til hinanden, til vores kunder og til kommende kollegaer. En udvikler fra Copenhagen Software har styr på nogle basale, men meget vigtige principper. Hos os kommer du til at blive rigtig, rigtig skarp på de her principper (og en masse andet).

Men mindst ligeså vigtigt – det er vores løfte til os selv. En række principper, der formaliserer nogle af de tiltag vi mener kan gøre den største forskel. Både som oplæring til juniorer, men også som opfriskning til erfarne udviklere.

Code reviews

Code reviews er hjørnestenen i vores måde at opkvalificere vores udviklere på. Det er gennem systematisk gennemgang af hinandens arbejde, at vi deler viden, diskuterer løsningsmetoder og kvalitetssikrer. Du kan læse meget mere om, hvorfor vi ser code reviewet som et ekstremt vigtigt element for et kvalitetsbevidst udviklerteam i denne artikel.

I code reviewet sikrer vi, at koden lever op til nummer to af vores principper for softwareudvikling, men vi går meget længere end det. Vores reviews er et forum for læring – ikke en test med rød kuglepen og sure miner. Det er tid dedikeret til, at tale om hvordan vi kan gøre vores kode mere robust, mere læsbar, og mere koncis.

Et code review kan ses som et redaktionsmøde på en avis. Det handler ikke så meget om at finde kommafejl, men om at sikre at alle på redaktionen arbejder i samme retning og bruger sproget på samme måde.

C#-principper for god, robust kode

Stort set alle vi møder, der skriver objektorienteret kode, fastholder at deres kode er SOLID. Går man dem lidt på klingen, kan mange nævne, hvad principperne står for. Lidt færre kan uddybe de enkelte principper, mens ganske få reelt kan forklare principperne.

Vi tager den rejse et skridt videre og arbejder konstant med udfordre hinanden. Ikke på forståelse af principperne, men koncepterne, der ligger til grund for dem. Men vi stopper ikke ved mestring af SOLID. Vi har tilføjet vores egne principper for softwareudvikling (i C#). Vi søger konstant:

  • At simplificere vores kode, og begrænse kodens kompleksitet – i størrelse eller i form – så kodeopgaver altid er overskuelige
  • At etablere konventioner for koden, så alle udviklere hurtigt og nemt kan forstå dele af projektet
  • At undgå at bruge null  – det virker måske som en detalje, men det er virkelig noget, der giver mange problemer hos vores kunder

Målet er (naturligvis) at skrive kode der:

  • Gør det, den er designet til
  • Ikke stopper uventet
  • Har en fornuftig performance i forhold til behovet
  • Er nem og billig at ændre

Automatiserede tests

En vigtig del af en automatiseret proces omkring udvikling og frigivelse af software er kvalitetssikring, så du ikke frigiver software med fejl i. Code reviews er en meget vigtig del af den proces, men automatiseret test er også absolut essentielt.

Det er meget effektivt at automatisere repetitive testopgaver i en struktureret testproces. Derfor er det et af de vigtigere af vores principper for softwareudvikling. Vi arbejder med automatiserede tests, der sikrer at blandt andet vores API’er opfører sig, som vi forventer under stress. Målet er ikke at erstatte manuel QA og manuelle tests, men snarere at komplimentere, så vi får den sikrest mulige pipeline.

Automatiserede tests er, ligesom code reviews, et meget vigtigt princip for os. Det er de, fordi de ikke bare har værdi i sig selv. De er også en byggesten for fundamentet til det næste princip for softwareudvikling – continuous delivery.

Continuous delivery

CD er operationalisering af LEAN-tankegangen – det er agile “på steroider”. Vi bygger software i mindre bidder, der kan deployes stort set kontinuerligt. På den måde sikrer vi, at der ikke på noget tidspunkt ligger ”død” kode på arbejdsbordet. Vores kode kommer ud at arbejde for os, så hurtigt som overhovedet muligt.

CD bygger videre på nogle af de andre principper. Uden code reviews, automatiserede tests og processer til hurtigt og nemt at rulle ændringer tilbage, er CD en racerbil uden rat og bremser. Det går måske stærkt lige nu, men er ikke nogen langtidsholdbar løsning.

CD er det sidste trin af en automatiseringsproces, der gør os i stand til at bygge, gennemgå, justere og frigive ændringer i softwaren løbende. Hos en del kunder har vi hjulpet dem over i en microservice arkitektur, der øger fleksibiliteten og farten i udviklingsprocessen yderligere.

Principper for softwareudvikling generelt

”God” software og ”dårlig” software er en lidt besværlig kategorisering at arbejde med uden nærmere definerede kriterier. Derfor arbejder vi med vores principper for softwareudvikling. Vi fokuserer på dem i vores arbejde, vores mentoring og vores oplæring. Principperne er ikke udtømmende – vi kan af gode grunde ikke fokusere på alt. Men de sikrer en høj kvalitet i arbejdet.

Og det er essensen af høj kvalitet for os – konstant at udfordre os selv til at bygge løsninger, der er bedre og mere holdbare. Kontinuerligt at skubbe til rammerne for effektiv deployment, så vi kan skrive og deploye software endnu hurtigere.

Sådan styrker vi vores kunders konkurrenceevne endnu mere.