Kuidas hinnata, hallata ja vältida tehnilisi võlgu
Kui tehniline võlg kõlab nagu rahanduse käsiraamatust eemaldatud, on see sellepärast, et see termin on seotud rahandusega. Tehniline võlg on selle tegelikus tähenduses aga seotud programmeerimisega. See on idee, et tarkvaraprojekti arendamise käigus jäetakse teatud vajalikud sammud vahele või lihtsalt loobutakse tähtaegadest kinnipidamise nimel.
Täiusliku rakenduse või tarkvara väljatöötamiseks on arendajatel sageli ajapuudus – täpselt nagu igal juhuslikul inimesel, kes teeb mis tahes suvalist ülesannet. Seega on tavaliselt mõistlik leida mingi kompromiss täiusliku koodiga täiusliku toote tarnimise ja aja maksimeerimise vahel.
Küsimus on siis: kas nendel kompromissidel on piir? Kas sellest kompromissist võib tuleneda kahju? Lõpuks, kas arendajal on pikas perspektiivis tõesti parem? Selles tehnilisi võlgu käsitlevas artiklis püüan vastata kõigile neile küsimustele.
Mis on tehniline võlg?
Tehnilise võla määratlemisel peame viitama mehele, keda peetakse selle termini loojaks: Ward Cunningham. Cunninghami sõnul viitab tehniline võlg täiendavale arendustööle, mis peab minema koodi programmeerimiseks, et korvata selle programmeerimisest tulenevat puudujääki lühikese aja jooksul.
Asja graafilisemaks muutmiseks kujutage ette, et teie ülesandeks on koristada räpane tuba ja jääte tundi hiljaks. Et tagada juhendite täitmine ja ka õigel ajal klassi jõudmine, teete kiire koristustöö, pühkides suurema osa prahist diivani alla. Selle tagajärjeks on see, et lõpuks peate võtma aega jama sorteerimiseks. Tarkvaraarenduse puhul, kui jätate vajalikud sammud vahele ja järgite lihtsamat teed „mitte nii puhaste” koodidega, muutub tulevikus koodi puhastamine raskemaks. Tarkvaraprojekti doominomängus esineb mitu etappi ja mida kauem te olemasolevat probleemi ignoreerite, seda kauem kulub selle lahendamiseks.
Tehniliste võlgade liigid
Tehnilisi võlgu on erinevat tüüpi, sealhulgas:
Planeeritud tehnilised võlad
See juhtub olukordades, kus organisatsioonid otsustavad teadlikult tehnilistesse võlgadesse minna. See, nagu varem arutatud, on tavaliselt määratud tähtaegade ületamine ja konkreetse eesmärgi saavutamine. Planeeritud tehniliste võlgnevuste tegemisel peab organisatsioon selgeks tegema, millest ollakse valmis loobuma ja millest mitte. Peate pidama täpset arvestust, pidades meeles, et lõpuks peate tagastama ja parandama alguses vahele jäänud vead.
Tahtmatud tehnilised võlad
Seda tüüpi tehniline võlg on otsene vastand esimesele. See tekib siis, kui organisatsioon ei näe ette ega plaani tehnilist võlga. Selle põhjuseks on tavaliselt organisatsiooni erinevate üksuste vahelise suhtluse katkemine või üksustevahelised halvad töötavad.
Vältimatud tehnilised võlad
See on selline tehniline võlg, mida ükski organisatsioonipoolne tegevus poleks saanud ära hoida. Näiteks tehnoloogias kogetud kiirete muutuste tõttu on mõistlik, et mõned varem kirjutatud koodid ei vasta praegustele prognoositud standarditele.
Samuti võib selline tehniline võlg tekkida siis, kui muudatusi taotletakse siis, kui koodi juba kirjutatakse. Kui tarkvara kujundamise poole peal tehakse teatud muudatusi, võib see dünaamikat segada, muutes vana koodi aegunuks või tarbetuks.
Tehniliste võlgade põhjused
Mõningaid tehniliste võlgade põhjuseid on eespool käsitletud, kuid ma valin need üksteise järel välja, et need oleksid selgemad.
Kiirustage
Tehniliste võlgade kõige sagedasem põhjus on kiirustamine. Arendajatel on sageli ranged tähtajad, millest mõned sisaldavad ka teatud tarkvara käivitamise tähtaegu. Sageli on sellistes olukordades arusaadav (ja ootuspärane), et arendajal võib tekkida tehnilisi võlgu. Seda tüüpi tehniline võlg on sageli tahtlik ja võib põhjustada probleeme, mis võivad ulatuda koodis esinevatest vigadest või spagettide koodidest.
Ebaõige/viga
Mõnikord kirjutavad programmeerijad lihtsalt halbu koode, mis lõpuks põhjustavad tehnilisi võlgu. Olenemata sellest, kas vigane kood on kodeerija vea tõttu olemas või mitte, on tõsiasi, et vead põhjustavad tehnilisi võlgu ja kuna need ei ole skaleeritavad, tuleb need lõpuks parandada.
Vähene teadlikkus mõjudest
Mõnikord tekivad tehnilised võlad seetõttu, et kodeerija ei mõista ega tunnista, kui kahjulikud on tehnilised võlad pikemas perspektiivis. See võib tuleneda õigustatud teadmatusest programmeerimise ajal otseteede kasutamise kahjulike mõjude kohta või võib olla tagajärgede tahtlik eiramine.
Kavatsus
Tehnilised võlad võivad tekkida tahtlikult kodeerija või organisatsiooni tahtliku tegevuse tõttu.
Modulaarsuse puudumine
See tekib peamiselt seetõttu, et üks kood võib korraga teenindada erinevat äriloogikat. Selline olukord muudab tarkvara käsitsemise palju raskemaks. Iga koodiga, mille arendaja kirjutab, on suurem tõenäosus, et nad kogevad modulaarsusega probleeme.
Tehnilise võla hindamine
Tehnilisi võlgu ei tohiks kunagi käsitsi arvutada, sest see oleks üsna vaevarikas. See tähendaks praeguste ja võimalike tulevaste probleemide kindlaksmääramiseks koodi käsitsi sisestamist. Peale selle, kui aega raiskab manuaalne protsess, on võimalik, et koodid on käsitsi protsessi lõpus oma kuju muutnud.
Üks viis hindamise läbiviimiseks on staatilise analüüsi läbiviimine, kasutades mõnda seda toetavat tööriista. Mõned tööriistad, mida saab kasutada, on Coverity, SonarQube, Check Style ja Closure Compiler.
Üldiselt on tehniliste võlgade arvutamiseks kaks võimalust. Esimesel lähenemisel võib selle saada tehnilise võla suhte arvutamisel koodisuhte järgi. Siin kasutatakse tehnilise võla parandamiseks kuluva aja määramiseks esialgset hinnangut või rakenduse arendamiseks vajalikku üldist aega.
Teise lähenemisviisi korral saate otse kasutada erinevate tööriistade (nt SonarQube) antud hinnanguid. See kombineeritakse tehniliste võlgade nimekirjade ja nende viitekoodidega. Tööriistade abil saate täpse hinnangu selle parandamiseks kuluva aja pikkuse kohta.
Tehnilise võla hindamine annab teile aimu, mitu päeva kulub tehnilise võla parandamiseks. Mida rohkem on võlgu, seda kauem võtab teil selle parandamine aega.
Tehniliste võlgade lahendamine
Mis saab siis, kui on tekkinud tehnilised võlad ja te ei tea, mida teha? Tehniliste võlgade haldamiseks saate astuda teatud samme.
Esiteks peaksite tunnistama tehniliste võlgade olemasolu ja edastama sama oma meeskonnale. Suhtlemisel peaksite olema selge, mis juhtus ja mida tuleb selle parandamiseks ette võtta. Peaksite veenduma, et teavitaksite selgelt vajadusest esimesel võimalusel tehnilise võla eest hoolitseda.
Pärast oma meeskonna teavitamist tehnilistest võlgadest on teil kolm võimalust. Esimesel juhul võite otsustada jätkata süsteemiga, nagu see on. Selle stsenaariumi korral kasutatakse rakendust sellisel kujul, nagu see on.
Teise võimalusena võite otsustada rakenduse ümber kujundada. Refactoring tehakse eesmärgiga vähendada rakenduse keerukust ja puhastada rakenduse struktuuri. Refaktoreerimisega tarkvara käitumist ei muudeta; ainus mõjutatud osa on sisemine struktuur.
Lõpuks, kui kaks ülalkirjeldatud võimalust ei tööta, peate koodi täielikult asendama. Selle üheks probleemiks on see, et see võib kaasa tuua uusi tehnilisi võlgu, kuid see võib olla pikemas perspektiivis parem kompromiss.
Tehniliste võlgade vältimine tulevikus
See on muidugi mõttetu, et tehniliste võlgade vältimine on kindlasti targem, kui püüda neid tekkides parandada. Lisaks sellele, et see säästab teie aega ja stressi, tagab see ka selle, et tehniliste võlgade algusest peale tekkinud jääktagajärjed puuduvad.
Võib väita, et tehnilised võlad pole iseenesest halvad. Need on üldiselt problemaatilised, kuna need on võlad, mis tuleb tagasi maksta, ja inimesed ei ole kõige vastutustundlikumad liigid maa peal. Nõrgema valiku järjekindel valimine nõrgendab üldiselt teie tarkvara tugevust ja muudab funktsioonide hilisema täiustamise raskemaks. Kokkuvõttes on tehniliste võlgade vältimine igaühe jaoks parim valik.
Niisiis, kuidas vältida tehniliste võlgade tekkimist:
Looge projekti mahajäämus
Mõte on siin hoida kõiki protsessiga kursis ja viia nad kiirusega vastavusse mis tahes ülesande täitmisega. Mahajäämise loomine võimaldab kõigil näha tegemata jäetud ülesandeid ja nende saavutamiseks vajalikke teid.
Eelista kvaliteeti kiirusele
Kui olete ise programmeerija, peate õppima kvaliteetse töö tegemist eelistama suurele tööle. Veenduge, et teie koodid on puhtad ja teie rakendused või muu tarkvara on täiuslikult välja töötatud. Mõistke, et kiusatus kasutada otseteid ei ole seda väärt, sest lõpuks peate ikkagi täitma ülesandeid, millest loobusite.
Kui juhite meeskonda, peate neid samu väärtusi meeskonnaliikmetele edastama. Liikmeid tuleks õpetada looma tulemusele orienteeritud lahendusi ja vältima otseteid.
Looge teadlikkus
Üldjuhul võivad põhjalikud teadmised selle kohta, mis on tehniline võlg ja kuidas seda vältida, olla kasulikud nende tekkimise ennetamisel. Kui varustate oma arendajaid vajalike teadmistega, väldivad nad paremini tehniliste võlgade lõkse.
Tutvustage häid kodeerimistavasid
Mõned kodeerimistavad muudavad tehnilistesse võlgadesse sattumise tõenäolisemaks. Seega oleks tore vältida tihedat sidumist, kasutada abstraktsiooni ja refaktoreerimist.
Tutvustage uuendatud tehnoloogiat
Tehnoloogia korrapärane uuendamine võib olla suurepärane vahend tehniliste võlgade ennetamiseks. Värskendamisel peate veenduma, et kasutatav on uusim raamistik, andmebaasid ja rakendustarkvara.
Järeldus
Tehnilised võlad on valdaval enamusel juhtudel vältimatud seni, kuni jätkate programmide arendamist ja koodide kirjutamist. Nende esinemise tõenäosust saab aga oluliselt vähendada, kui järgida ülaltoodud samme. Samuti ei ole tehniliste võlgade tekkimisel igasugune lootus kadunud. Jää rahulikuks, ole enesekindel, käitu vastavalt.