Hur man utvärderar, hanterar och undviker tekniska skulder
Om teknisk skuld låter som något lyft från en handbok om ekonomi, är det för att termen är relaterad till ekonomi. Men i den verkliga meningen är teknisk skuld relaterad till programmering. Det är tanken att under utvecklingen av ett mjukvaruprojekt hoppar man över vissa nödvändiga steg, eller helt enkelt slängs bort i ett försök att hålla en deadline.
I ett försök att utveckla den perfekta appen eller mjukvaran är utvecklarna ofta tidsbundna – precis som alla slumpmässiga personer som ändå utför en godtycklig uppgift. Därför är det vanligtvis vettigt att ha någon form av avvägning mellan att leverera en perfekt produkt med perfekt kod och att maximera tiden.
Frågan är då: finns det en gräns för dessa avvägningar? Finns det inneboende skador som kan bli följden av denna avvägning? Slutligen, är utvecklaren verkligen bättre i det långa loppet? I det här stycket om tekniska skulder kommer jag att försöka svara på alla dessa frågor.
Vad är teknisk skuld?
När vi definierar teknisk skuld måste vi hänvisa till mannen som krediteras för att ha genererat termen i första hand: Ward Cunningham. Enligt Cunningham avser teknisk skuld det extra utvecklingsarbete som måste gå till programmering av en kod för att kompensera för underskottet som uppstår vid programmering inom en kort period.
För att göra det mer grafiskt, föreställ dig att du har i uppdrag att städa upp i ett rörigt rum och att du kommer för sent till en lektion. I ett försök att se till att du genomför instruktionen och även komma i tid till din klass, gör du en snabb städning och sopar det mesta av skräpet under soffan. Följden av detta är att du så småningom måste ta dig tid att sortera igenom röran. För mjukvaruutveckling, när du hoppar igenom de nödvändiga stegen och följer en enklare väg, med ”inte så rena” koder, kommer det att bli svårare att rensa upp koden senare i framtiden. Det finns flera faser i mjukvaruprojektets domino, och ju längre du ignorerar ett befintligt problem, desto längre tid tar det att lösa.
Typer av tekniska skulder
Tekniska skulder är av olika slag, inklusive:
Planerade tekniska skulder
Detta inträffar i situationer där organisationer medvetet beslutar sig för att gå in i tekniska skulder. Detta, som tidigare diskuterats, är vanligtvis för att slå angivna deadlines och komma fram till ett specifikt mål. När man engagerar sig i planerade tekniska skulder måste organisationen vara tydlig med vad de är villiga att ge upp och vad de inte kan. Du måste föra korrekta register, med tanke på att du så småningom måste återvända och rätta till de fel du hoppade över i början.
Oavsiktliga tekniska skulder
Denna typ av tekniska skulder är en rak motsats till den första. Det uppstår när en organisation inte förutser eller planerar för tekniska skulder. Orsaken till detta är typiskt sett ett sammanbrott i kommunikationen mellan de olika enheterna i organisationen, eller usla arbetssätt mellan enheterna.
Oundvikliga tekniska skulder
Detta är den typ av teknisk skuld som ingen åtgärd från organisationens sida kunde ha förhindrat. Till exempel, med de snabba förändringar som upplevs inom tekniken, är det vettigt att vissa koder som skrivits i det förflutna kommer att inte överensstämma med de nuvarande standarderna som förväntas.
Denna typ av teknisk skuld kan också uppstå när ändringar begärs när koden redan skrivs. Om vissa ändringar införs halvvägs i utformningen av programvaran, kan det förstöra dynamiken, vilket gör den gamla koden föråldrad eller onödig.
Orsaker till teknisk skuld
Några av orsakerna till tekniska skulder har diskuterats ovan, men jag ska bara plocka ut dem en efter en för att göra dem tydligare.
Brådska
Den vanligaste orsaken till tekniska skulder är brådska. Utvecklare har ofta stränga deadlines, av vilka några inkluderar deadlines för att lansera viss programvara. Det är ofta förståeligt (och förväntat) i den här typen av situationer att utvecklaren kan ådra sig tekniska skulder på vägen. Denna typ av teknisk skuld är ofta avsiktlig och kan resultera i problem som kan sträcka sig från att ha buggar i koden eller att spagettikoder uppstår.
Förbiseende/misstag
Ibland skriver programmerare bara dåliga koder, vilket så småningom leder till tekniska skulder. Oavsett om den dåliga koden existerar som ett resultat av kodarens misstag eller inte, är faktum att misstag leder till tekniska skulder, och eftersom de inte är skalbara måste de så småningom åtgärdas.
Brist på medvetenhet om effekterna
Ibland uppstår tekniska skulder för att kodaren inte inser eller erkänner hur skadliga tekniska skulder är på lång sikt. Detta kan bero på en legitim okunnighet om de skadliga effekterna av att ta genvägar under programmering, eller så kan det vara en medveten ignorering av konsekvenserna.
Avsikt
Tekniska skulder kan uppstå avsiktligt av kodarens eller organisationens avsiktliga handlingar.
Brist på modularitet
Detta beror mest på att en kod kan tjäna olika affärslogik samtidigt. Denna typ av situation gör det mycket svårare att hantera programvara. Med varje kod en utvecklare skriver, desto större chans är det att de skulle uppleva utmaningar med modularitet.
Utvärdering av teknisk skuld
Tekniska skulder bör aldrig beräknas manuellt eftersom det skulle vara ganska besvärligt. Det skulle innebära att man måste ange koden manuellt för att fastställa de aktuella problemen och möjliga framtida. Förutom hur tidsödande den manuella processen är, finns det möjlighet att koderna skulle ha ändrat form i slutet av den manuella processen.
Ett sätt att genomföra utvärderingen är genom att utföra en statisk analys med hjälp av några verktyg som stödjer den. Några av verktygen som kan användas inkluderar Coverity, SonarQube, Check Style och Closure Compiler.
Generellt finns det två sätt att beräkna tekniska skulder. I det första tillvägagångssättet kunde det erhållas genom att beräkna den tekniska skuldens kvot efter kodkvot. Här skulle den initiala uppskattningen eller den totala tiden som behövs för att utveckla appen användas för att fastställa den tid som krävs för att fixa den tekniska skulden.
I det andra tillvägagångssättet kan du direkt använda de uppskattningar som ges av de olika verktygen såsom SonarQube. Detta kommer att kombineras med listorna över de tekniska skulderna samt deras referenskoder. Från verktygen kunde du få en exakt uppskattning av hur lång tid det tar att fixa det.
Att utvärdera den tekniska skulden kommer att ge dig en känsla av hur många dagar det kommer att ta att fixa den tekniska skulden. Ju fler skulder det finns, desto längre tid tar det att fixa det.
Lösning av tekniska skulder
Vad händer om tekniska skulder har uppstått och du är osäker på vad du ska göra? Det finns vissa steg du kan vidta för att hantera de tekniska skulderna.
För det första bör du erkänna att de tekniska skulderna finns och kommunicera detsamma till ditt team. När du kommunicerar bör du vara tydlig med vad som har hänt och vad som behöver göras för att rätta till det. Du bör se till att du tydligt kommunicerar behovet av att ta hand om den tekniska skulden så snart som möjligt.
Efter att ha informerat ditt team om de tekniska skulderna finns det tre tillvägagångssätt du kan ta. I det första tillvägagångssättet kan du välja att fortsätta med systemet som det är. I det här scenariot kommer applikationen att användas som den är.
Alternativt kan du besluta att omfaktorisera applikationen. Refaktorering görs med syftet att minska komplexiteten i appen samt att rensa upp i appens struktur. Med refactoring kommer inte programvarans beteende att ändras; den enda påverkade delen kommer att vara den interna strukturen.
Slutligen, om de två alternativen som diskuterats ovan inte fungerar, måste du ersätta koden helt. Ett problem med detta är att det kan leda till nya tekniska skulder, men det kan vara en bättre avvägning på sikt.
Undvik tekniska skulder i framtiden
Naturligtvis är det enkelt att undvika tekniska skulder definitivt är smartare än att försöka fixa dem när de uppstår. Förutom att det sparar dig både tid och stress, ser det också till att de restkonsekvenser som kommer av att ha tekniska skulder från början uteblir.
Man kan hävda att tekniska skulder i sig inte är dåliga. De är generellt problematiska eftersom de är skulder som måste betalas tillbaka, och människor är inte den mest ansvarsfulla arten på jorden. Att konsekvent välja ett svagare alternativ kommer i allmänhet att försvaga styrkan hos din programvara och göra det svårare att förbättra funktionerna senare. Sammantaget är det bästa valet för alla att undvika tekniska skulder.
Så, hur förhindrar du att tekniska skulder uppstår:
Skapa en projekteftersläpning
Tanken här är att hålla alla uppdaterade om processen och få dem att uppdateras med kraven för vilken uppgift som helst som utförs. Genom att skapa en eftersläpning kan alla se de uppgifter som lämnats ogjorda och vägarna att ta för att uppnå dem.
Prioritera kvalitet framför hastighet
Om du själv är programmerare måste du lära dig att prioritera att lägga ut kvalitetsarbete framför mycket arbete. Se till att dina koder är rena och att dina appar eller annan programvara är utvecklad till perfektion. Förstå att frestelsen att ta genvägar inte kommer att vara värt det eftersom du så småningom fortfarande måste utföra de uppgifter du lämnade.
Om du leder ett team måste du kommunicera samma värderingar till teammedlemmarna. Medlemmar bör läras att skapa resultatorienterade lösningar och undvika genvägar.
Skapa medvetenhet
Generellt sett kan en fördjupad kunskap om vad teknisk skuld är och hur man undviker den vara användbar för att förhindra att de uppstår i första hand. När du beväpnar dina utvecklare med den kunskap som krävs, kommer de bättre att undvika de fällor som tekniska skulder utgör.
Introducera god kodningspraxis
Vissa kodningsmetoder gör det mer troligt än inte att du hamnar i tekniska skulder. Därför skulle det vara bra att undvika tät koppling, använda abstraktion och refactoring.
Introducera uppdaterad teknik
Regelbundna uppdateringar av teknik kan vara ett utmärkt sätt att förebygga tekniska skulder. Vid uppdatering måste du se till att det som används är det senaste ramverket, databaserna och applikationsmjukvaran.
Slutsats
Tekniska skulder är i de allra flesta fall oundvikliga så länge du fortsätter att utveckla program och skriva koder. Däremot kan risken för att de inträffar minskas avsevärt när stegen som anges ovan följs. Dessutom, i händelse av tekniska skulder, är inte allt hopp förlorat. Håll dig lugn, var självsäker, agera därefter.