all
Business
data science
design
development
our journey
Strategy Pattern
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Anjali Ariscran

Februar 21, 2024

Min Read

Hvad er teknisk gæld, og hvordan kan du håndtere det?

God forvaltning af teknisk gæld gør forskellen mellem et vellykket og mislykket softwareprojekt. At ignorere eller undlade at anerkende teknisk gæld kan føre til højere udviklingsomkostninger og lave økonomiske afkast. Så i betragtning af indsatsen, forståelse og håndtering af teknisk gæld bør være en prioritet til softwareingeniører og beslutningstagere på højt niveau.

Teknisk gæld eller kodegæld er ikke nødvendigvis negativ - nogle gange kan det være strategisk løftestang til dit projekt i det lange løb. Så hvis du vælger at have teknisk gæld, er der normalt en strategi, hensigt og begrundelse bag det. Og selvom det er risikabelt, kan det være meget gavnligt. Næsten hver virksomhed har en vis grad af teknisk gæld - tricket er at vide, hvordan man identificerer og styrer det. Dette blogindlæg hjælper dig med at gøre netop det, så lad os se på, hvad teknisk gæld er, hvilken slags teknisk gæld der er, hvordan de påvirker din udviklingsproces, og hvordan du kan styre det.

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo

Hvad er teknisk gæld?

Teknisk gæld, teknisk gæld, eller kode gæld er begrebet forsinkelse eller udeladelse af arbejde for at gennemføre et projekt eller nå et mål hurtigere, men som også medfører mere omarbejdning senere i projektets livsfase. Vi kan sammenligne det med at bygge et hus uden et komplet sæt tegninger - byggeriet afsluttes muligvis hurtigere, men huset vil have betydelige strukturelle problemer, som vil tage mere tid og flere penge at løse senere.

I softwareudviklingsområdet er det almindeligt at levere en funktion med det samme for at forstå, hvordan den vil skaleres. Når den er skaleret markant, kan vi tilpasse den til den dimension, den har nået. Men hold dig opdateret, da vi vil dække alle former for teknisk gæld senere.

Alt i alt kan teknisk gæld henvise til enhver del af web- eller appudvikling, men det er normalt rettet mod programmering, især kode refactoring. Og ligesom finansiel gæld, kode eller teknisk gæld påløber renter - Jo længere gælden eller efterslæbet af ignorerede problemer opbygges, jo dyrere bliver det at rette op på.

I en McKinsey-undersøgelse gennemført i 2020, CIO'er rapporterede, at 10 til 20% af teknologien budgettere allokeret til ny software omdirigeres til at løse problemer relateret til Teknisk gæld. Endnu mere bekymrende anslog CIO'er, at teknologigæld beløber sig til 20 til 40% af værdien af hele deres teknologiejendom før afskrivning. Dette betyder hundreder af millioner af dollars ubetalt gæld til større virksomheder.

Typer af teknisk gæld

Teknisk gæld er et naturligt resultat af softwareudvikling, og når det kommer til at identificere det, er de fleste eksperter enige om to bredere kategorier:

  • Forsætlig teknisk gæld (bevidst eller aktiv gæld) - sker, når teams bevidst giver plads til kodeforbedring senere i udviklingsfasen.
  • Utilsigtet teknisk gæld (utilsigtet eller passiv gæld) - opstår, når kodekvaliteten kræver forbedring på grund af dårlig produktion.

Bevidst teknisk gæld

Bevidst teknisk gæld eller aktiv gæld opstår, når hold bevidst ønsker en hurtig, men ufuldkommen implementering til 1) etablere en tilstedeværelse på et hurtigt udviklende marked eller 2) at indsamle kundefeedback. Bevidst teknisk gæld anvendes ofte, når der udvikles minimum levedygtige produkter (MVP), som løbende vil blive videreudviklet og fastlagt i henhold til feedback fra kunder og kunder.

Men teams har sjældent tid til at gå tilbage og redesigne, hvordan de oprindeligt planlagde, så det er altid bedst at samarbejde med et team, der har projektet ordentligt kortlagt for hver livsfase. For eksempel, hos Imaginary Cloud, går udviklere tilbage til at optimere og forbedre koden til appen eller softwaren, når den er live.

Et godt og simpelt eksempel på bevidst teknisk gæld er, hvordan Airbnb ikke gider at rette deres websteds yndlingsknap. Der var et øjeblik, hvor knappen til yndlingshuse eller værelser ikke fungerede. Da Airbnb's fokus var hurtig vækst på det tidspunkt, havde de ikke noget imod at springe dette problem over. Holdet løste først problemet, da virksomheden begyndte at nyde mere popularitet og nåede en mere moden fase i sin livscyklus.

Utilsigtet teknisk gæld

Utilsigtet teknisk gæld sker ved et uheld og opstår normalt, når udviklere Forstår ikke markedets krav eller hvordan man designer en arkitektur for at imødekomme markedets krav.

For eksempel, når et team designer et softwaresystem, forsøger et team at balancere ved at tænke fremad og fremtidssikre deres plan med enkelhed og levering. Efterhånden som systemet udvikler sig, og kravene ændres, kan de indse, at deres strategi er mangelfuld, eller at den nye funktionalitet er blevet vanskelig og langsom at implementere.

Code Audit

Martin Fowlers tekniske gældskvadrant

Teknisk gæld har også specifikke typer, der hver især inkluderer det specifikke problem inden for titlen:

  • Kodegæld - Normalt relateret til dårlig eller hurtig kodning eller ikke at have anvendt passende designmønstre.
  • Manglende gæld - Eksisterende fejl, problemer og defekter i produktet.
  • Designgæld - Det er alle de gode designkoncepter eller løsninger, der blev sprunget over for at nå et korttidsmål hurtigere.
  • Krav gæld - Afholdt under identifikation, formalisering og implementering af krav.
  • Test Automation gæld - Henviser til alle de enkle og komplekse processer, der formodes at være automatiserede, men ikke er det.
  • Test gæld - Dette sker, når teamet begynder at bruge mere tid på testvedligeholdelse og mindre på at oprette tests for at sikre, at softwaren er fejlfri.
  • Arkitekturgæld - Nogle arkitektoniske skitsebeslutninger medfører teknisk gæld, hvilket kan påvirke kvaliteten af et softwareprojekt negativt.
  • Dokumentationsgæld - Denne type teknisk gæld beskriver problemer i dokumentation såsom manglende, utilstrækkelige eller ufuldstændige papirer.
  • Behandle gæld - Genereres normalt, når processer er dårlige eller mangler helt til at håndtere fejl, dokumentation eller endda tests.

Selvom disse typer er meget specifikke, er den mest populære Martin Fowlers tekniske gældskvadrant som beskriver de former for gæld (bevidst og utilsigtet) og valget af at påtage sig gæld (hensynsløs eller forsigtig).

Vi kan identificere hver kvadrant ved at tildele den en farve, der svarer til dens ønskværdighed: rød og orange (øverst og nederst til venstre) angiver advarsel; grøn og blå (øverst og nederst til højre) angiver ønskværdighed.

Martin Fowler's Technical Debt Quadrant

Lad os tage hver kvadrant efter tur og overveje rollen som et udviklingsteam i styringen af risikoen.

Bevidst og hensynsløs

Denne form for gæld opstår, når Teamet har den rette viden til at gennemføre opgaven endnu beslutter bevidst at gå med en hurtig og dårlig kvalitetsløsning, normalt til fordel for hurtig implementering. Dette er nogle af de spørgsmål, du skal stille, før du vælger denne metode:

  • Hvad er den langsigtede virkning af denne beslutning?
  • Følger du det tekniske gældsniveau, som det opstår?
  • Har du en plan (og fremtidigt budget) for at betale det?
  • Gør du noget for at begrænse konsekvenserne, hvis dette er en episk fiasko?

At ikke styre aspekter som det ovennævnte er det, der tipper bevidst teknisk gæld ind i det hensynsløse område.

Det betyder at starte noget nyt i et langsomt tempo, for at sikre, at du og alle andre, der arbejder med dig, ved præcis, hvad du skal gøre, og hvilke procedurer du skal følge.

Bevidst og forsigtig

Bevidst og forsigtig tech-gæld handler om træffe informerede beslutninger og dermed overveje, om udbetalingen for en tidligere udgivelse er større end omkostningerne ved at betale den af. Den teamet anerkender problemet og dets konsekvenser men skal leverer i øjeblikket funktionaliteten til tiden. I dette tilfælde planlægger teamet også, hvordan man håndterer virkningerne under hensyntagen til ethvert værst tilfælde.

Utilsigtet og hensynsløs

Uforvarende og hensynsløs er Den mindst ønskelige form for gæld du vil have - det kaldes normalt software entropi som vi forklarer i næste kapitel. Holdene forventes at forstå det grundlæggende af de teknologier, de bruger, og ignorering af dem vil resultere i en buggy applikation med uventet applikationsadfærd eller dårlig vedligeholdelse. Et veluddannet team med opdateret branchekendskab og bedste praksis bør være i stand til at undgå denne type teknisk gæld.

Utilsigtet & Forsigtig

Dette er uforsætlig slags gæld - det kan ske på trods af en omhyggelig tilgang til projektets arkitektur og kode. Ofte er det først efter at en funktionalitet er implementeret eller projektet er afsluttet, at teamet indser, at hvis de havde designet de enkelte komponenter i applikationen anderledes, ville de sandsynligvis ende med en bedre løsning. Så målet er at maksimere læringsmuligheden, så du kan gå fra „utilsigtet“ til „forsigtig“ for mere af din tekniske gæld.

blue arrow to the left
Imaginary Cloud logo

Hvilken type teknisk gæld skal jeg undgå?

Bitrot eller softwareentropi er den slags teknisk gæld, du vil undgå, som vi har nævnt ovenfor. Det sker over tid, når en komponent eller et system langsomt udvikler sig til unødvendig kompleksitet gennem mange trinvise ændringer, ofte når der arbejdes på af flere udviklere, der måske ikke fuldt ud forstår den originale arkitektur. Denne mangel på dygtighed er en utilsigtet og hensynsløs form for gæld tilskrives dårlig logik og kodningspraksis.

Du vil undgå softwareentropi, fordi:

  • Det største problem med hensyn til gæld er, at de små ændringer faktisk bidrager til det samlede gældsbeløb, og det meste af tiden ved holdene ikke engang det;
  • Disse små ændringer kan påvirke hele softwaren.

Vi anbefaler, at du kigger efter hold, der har en dedikeret projektleder, der kan holde deres udviklere ansvarlige ved at sikre, at udviklingsprocessen ikke giver plads til bitrot.

Læs også:

Hovedårsagerne til teknisk gæld

Ifølge en Undersøgelse udført af Stepsize, 61% af ingeniørteams hævder, at det meste af den tekniske gæld kommer fra backendSpecifikt i webserverslutpunkter. Virksomhedsapps og websteder og generel infrastruktur er også dele af kodebasen, der akkumulerer en stor mængde teknisk gæld. Resultaterne tyder på, at Virksomheder kan øge deres produktivitet dramatisk ved at betale ned teknisk gæld i disse områder af deres kodebase.

Andre hovedfaktorer, der bidrager til teknisk gæld, omfatter:

  • Kompleks teknisk design
  • Dårlig ledelse
  • Manglende dygtighed
  • Utilstrækkelig test
  • Suboptimal kode
  • Forsinket refactoring
  • Overdreven fokus på hurtig fortjeneste
  • Manglende tilpasning til standarder og god praksis i de indledende faser

Disse spørgsmål kan akkumuleres over tid, hvis det ikke overvågesDette resulterer i tekniske problemer, der skal løses i fremtiden. Det vil være bedst at samarbejde med et kompetent team eller partner med de rigtige processer, planer og tidsplaner. Dette team skal gøre objekterne synlige ved at registrere poster i softwarens backlog, hvor problemerne vil blive vurderet og prioriteret til løsning.

Tag eksemplet med Twitters berømte Fail Whale-sag. Platformen plejede at gå ned flere gange og gå i „nødvedligeholdelsestilstand“, hvilket skadede virksomheden. Udseendet af den fredfyldte, optimistiske beluga blev en stigende bekymring, da Twitter udvidede sig til et bredere publikum. Derfor besluttede Twitter at integrere et udviklingsteam, der instrumenterede hele systemet og begyndte at genopbygge hver del, der var ved at bryde, ved at flytte deres backend-processer til en række programmeringssprog, der var mere kompatible med Java Virtual Machine-rammen.

Når disse ændringer var implementeret, var Twitters team i stand til at bruge mindre tid på fejlfinding af afbrydelser og mere tid på at udvikle nye funktioner, reducere teknisk gæld, slippe af med teknisk ineffektivitet og endelig give en bedre brugeroplevelse.

„Slibning er ikke særlig tilfredsstillende. Det er svært at stå op foran alle og sige, „vi vil ordne tingene her lidt efter lidt med en masse hårdt arbejde.“ Store prangende bevægelser er lettere at sælge det meste af tiden. Men de fungerer ikke næsten lige så godt og er tilbøjelige til fuldstændig og forfærdelig fiasko.

Det er vigtigt at nævne det Teknisk gæld kommer ikke altid fra udviklingshold. Ansættelsesfirmaer eller kunder vil ofte pålægge begrænsninger førende udviklere uden andet valg end at pådrage sig dem. Disse er normalt:

  • Tidslinje eller budgetbegrænsninger
  • Strategiske beslutninger for at teste en markedstilpasning
  • Manglende forretningsbeslutninger
  • Utilstrækkeligt valg af softwarearkitektur eller værktøjer

Læs også:

blue arrow to the left
Imaginary Cloud logo

Kan jeg håndtere teknisk gæld?

Når det er bevidst:

Udviklingsteams kan håndtere forsætlig teknisk gæld ved Sporing af efterslæbet når man bevidst udsætter arbejde, der skal afsluttes. Hvis et team ikke kan holde trit med deres løfte om at gå tilbage for at gennemgå koden, eller det ikke har midlerne til at gøre det, er det usandsynligt, at det bliver tilbagebetalt og vil blive til utilsigtet designgæld over tid.

Denne gæld opstår normalt fra forretningsbeslutninger; derfor interessenter og produktejere bør holdes ansvarlige for periodiseringen.

Når det er tilfældigt:

At refaktorere et system med succes er en enorm opgave, men dette bør gøres nu og da, når systemet er i en stabil tilstand. Ellers kan teamet overkonstruere systemet og pådrage sig unødvendige afmatninger.

I dette tilfælde tech-leads og produktejere bør være ansvarlige for at sikre, at der afsættes tid til at løse denne form for teknisk gæld som følge af designbeslutninger og hyppigt skiftende krav.

Læs også:

Teknisk gæld er ikke altid en byrde - den kan mange gange være en strategisk løftestang for succes, hvis den styres godt. Hos Imaginary Cloud kan vi samarbejde med dig i det nødvendige udviklingsstadium for at kvitte dig for unødvendig gæld, både teknisk og designmæssig. Uanset om det er at bringe din idé til live gennem udvikling af web- og app-software eller at udjævne dit teams færdigheder gennem teamudvidelse, sørger vi for, at din tech-gæld håndteres godt hvert trin på vejen.

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Anjali Ariscran
Anjali Ariscran

Alsidig og datadrevet vækstmarkedsfører med dybdegående forretningskendskab, opdateret med den seneste udvikling i det digitale marketinglandskab.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon