Principper for softwareudvikling

principper for softwareudvikling

Hvorfor principper for softwareudvikling?

Vi har samlet vores principper for softwareudvikling. Fordi vi ser det alt for tit – nærmest hver gang. Hver gang vi ansætter en ny medarbejder, får et nyt teammedlem hos en kunde eller begynder at arbejde tættere sammen med en ny udvikler. Hvad er “det”? Dårlige vaner, manglende struktur… og sjusk.

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 nogle faste principper. Og fordi vi er mange, der konstant holder hinanden op på de principper.

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

Og mindst ligeså vigtigt – det er vores løfte til os selv. En række principper, der formaliserer nogle af de principper 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.

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 abstraktionerne, 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
  • Kode som 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 testing er også absolut essentielt.

Det er en meget effektiv måde at automatisere repetitive testopgaver i en struktureret testproces. 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, men også er en byggesten for det næste princip for softwareudvikling – continuous delivery.

Continuous delivery

CD er operationalisering af LEAN-tankegangen. 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 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.

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 sikrer en overordnet 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 bygge endnu mere kvalitet ind i den software, vi bygger.