01 Repository — kodens hjem
Al kode til et projekt bor i et repository — en mappe med versionskontrol. Et repository gemmer ikke bare de aktuelle filer, men hele historikken: hvem ændrede hvad, hvornår og med hvilken begrundelse.
Du kan tænke på det som et Dropbox-drev til kode — men med en komplet historik der aldrig slettes. Vil du se hvad koden så ud for seks måneder siden? Et enkelt kommando henter den frem. Nogen har lavet en fejl? Find hvornår, hvad og hvem.
De fleste repositories hoster på GitHub eller GitLab — platforme der giver teams mulighed for at samarbejde, kommentere hinandens kode og spore fejl.
02 Git og commits
Git er det program der driver versionskontrol i næsten alle moderne projekter. Når en udvikler er færdig med en ændring, laver de et commit — et snapshot af koden på det tidspunkt, med en kort beskrivelse af hvad der er ændret og hvorfor.
Commits er som checkpoints i et videospil. Går noget galt, kan du gå tilbage til et tidligere checkpoint. Vil du se hvem der lavede en bestemt linje kode og hvornår? Git kan fortælle dig det.
Når et team arbejder på det samme projekt, bruger de branches — parallelle kopier af koden, som de arbejder på uafhængigt. Når en feature er færdig, fletter de branchen ind i den primære kode via et pull request — en formel anmodning som kollegerne kan gennemgå og kommentere inden det slås sammen.
03 Deployment — fra computer til brugere
Kode på en lokal computer kan ingen andre bruge. Deployment er processen med at gøre koden tilgængelig på en server — så rigtige brugere kan tilgå den via nettet.
I gamle dage betød deployment at en udvikler manuelt kopierede filer til en server via FTP og krydsede fingre. I dag sker det automatisk: hvert commit der lander i main-branchen udløser en pipeline der tester koden, bygger den og deployer til serveren — alt uden menneskehånd.
Det er det CI/CD dækker over: automatiserede pipelines der sørger for at ny kode altid testes og deployes konsistent. Fejler en test, stoppes deploymentet og teamet notificeres.
04 Bugs — fejl der ikke burde eksistere
Ingen kode er fejlfri. En bug er en fejl der får programmet til at opføre sig anderledes end forventet — fra et forkert tal i en beregning til en app der crasher under bestemte betingelser.
Nogle bugs er indlysende (appen starter slet ikke). Andre er subtile og dukker kun op i bestemte situationer som udviklerne ikke forudså. Det er det der gør debugging — processen med at finde og rette fejl — til en af udviklernes mest tidskrævende opgaver.
Moderne kodeprojekter bruger automatiske tests der kører ved hvert commit og fanger kendte fejl inden de når brugerne. Men tests fanger kun det udviklerne har tænkt på at teste for — ukendte fejl slipper igennem.