Cum să evaluați, să gestionați și să evitați datoriile tehnice

Publicat: 2020-05-26

Dacă datoria tehnică sună ca ceva ridicat dintr-un manual de finanțare, este pentru că termenul este legat de finanțare. Cu toate acestea, în sensul real al acesteia, datoria tehnică este legată de programare. Este ideea că, în timpul dezvoltării unui proiect software, anumiți pași necesari sunt săriți sau pur și simplu abandonați cu totul în încercarea de a respecta un termen limită.

În încercarea de a dezvolta aplicația sau software-ul perfect, dezvoltatorii sunt adesea lipsiți de timp - la fel ca orice persoană aleatoare care îndeplinește orice sarcină arbitrară. Astfel, de obicei are sens să existe un fel de compromis între livrarea unui produs perfect cu cod perfect și maximizarea timpului.

Întrebarea este atunci: există o limită pentru aceste compromisuri? Există daune inerente care ar putea rezulta din acest compromis? În cele din urmă, dezvoltatorul este într-adevăr mai bine pe termen lung? În acest articol despre datorii tehnice, voi încerca să răspund la toate aceste întrebări.

Ce este datoria tehnică?

What Is Technical Debt

În definirea datoriei tehnice, va trebui să ne referim la omul creditat că a generat termenul în primul rând: Ward Cunningham. Potrivit lui Cunningham, datoria tehnică se referă la munca suplimentară de dezvoltare care trebuie să fie implicată în programarea unui cod pentru a compensa deficitul rezultat din programarea acestuia într-o perioadă scurtă.

Pentru a o face mai grafică, imaginați-vă că aveți sarcina de a curăța o cameră dezordonată și că întârziați la o clasă. În încercarea de a vă asigura că urmați instrucțiunile și, de asemenea, că sunteți la timp pentru cursul dvs., faceți o curățare rapidă, măturând majoritatea resturilor de sub canapea. Rezultatul este că, în cele din urmă, va trebui să vă faceți timp pentru a sorta mizeria. Pentru dezvoltarea de software, atunci când treceți peste pașii necesari și urmați un traseu mai ușor, cu coduri „nu atât de curate”, va deveni mai greu să curățați codul mai târziu în viitor. Există mai multe faze întâlnite în domino-ul proiectului software și, cu cât ignorați mai mult o problemă existentă, cu atât este nevoie de mai mult pentru a fi rezolvată.

Tipuri de datorii tehnice

Datoriile tehnice sunt de diferite tipuri, printre care:

Datorii tehnice planificate

Acest lucru se întâmplă în situațiile în care organizațiile decid în mod deliberat să intre în datorii tehnice. Acest lucru, după cum sa discutat mai devreme, este de obicei pentru a depăși termenele stabilite și pentru a ajunge la un obiectiv specific. Atunci când se angajează în datorii tehnice planificate, organizația trebuie să fie clară la ce este dispusă să renunțe și la ce nu poate. Trebuie să păstrați înregistrări exacte, ținând cont că în cele din urmă va trebui să reveniți și să corectați erorile pe care le-ați sărit la început.

Datorii tehnice neintenționate

Acest tip de datorie tehnică este direct opus primei. Apare atunci când o organizație nu prevede sau nu planifică pentru datoria tehnică. Motivul pentru aceasta este de obicei o întrerupere a comunicării între diferitele unități din organizație sau practici de lucru proaste între unități.

Datorii tehnice inevitabile

Acesta este genul de datorie tehnică pe care nicio acțiune din partea organizației nu ar fi putut-o preveni. De exemplu, odată cu schimbările rapide experimentate în tehnologie, este logic ca unele coduri scrise în trecut să nu respecte standardele actuale proiectate.

De asemenea, acest tip de datorie tehnică poate apărea atunci când se solicită modificări atunci când codul este deja scris. Dacă la jumătatea procesului de proiectare a software-ului, sunt introduse anumite modificări, s-ar putea încurca dinamica, făcând vechiul cod învechit sau inutil.

Cauzele datoriilor tehnice

Causes of Technical Debt

Unele dintre motivele datoriei tehnice au fost discutate mai sus, dar le voi alege unul după altul pentru a le clarifica.

Grabă

Cea mai frecventă cauză a datoriei tehnice este graba. Dezvoltatorii au adesea termene limită stricte, dintre care unele includ termene limită pentru lansarea anumitor software. Este adesea de înțeles (și de așteptat) în astfel de situații ca dezvoltatorul să poată face datorii tehnice pe parcurs. Acest tip de datorie tehnică este adesea intenționat și poate duce la probleme care ar putea varia de la apariția erorilor în cod sau apariția codurilor spaghetti.

Supraveghere/Greșeală

Uneori, programatorii doar scriu coduri proaste, care în cele din urmă duc la datorii tehnice. Indiferent dacă codul prost există ca urmare a greșelii codificatorului sau nu, adevărul este că greșelile duc la datorii tehnice și, pentru că nu sunt scalabile, vor trebui în cele din urmă să fie reparate.

Lipsa de conștientizare a efectelor

Uneori, datorii tehnice apar deoarece codificatorul nu reușește să realizeze sau să recunoască cât de dăunătoare sunt datoriile tehnice pe termen lung. Acest lucru ar putea proveni dintr-o ignorare legitimă a efectelor dăunătoare ale comenzilor rapide în timpul programării sau ar putea fi o nerespectare intenționată a consecințelor.

Intenție

Datoriile tehnice pot apărea intenționat din acțiunile deliberate ale codificatorului sau ale organizației.

Lipsa de modularitate

Acest lucru apare în principal pentru că un cod poate servi în același timp unei logici de afaceri diferite. Acest tip de situație face gestionarea software-ului mult mai dificilă. Cu fiecare cod pe care îl scrie un dezvoltator, cu atât sunt mai multe șanse ca aceștia să întâmpine provocări legate de modularitate.

Evaluarea datoriei tehnice

Evaluation of Technical Debt

Datoriile tehnice nu ar trebui să fie niciodată calculate manual, deoarece ar fi destul de dificil. Ar însemna nevoia de a introduce manual codul pentru a determina problemele actuale și posibilele viitoare. În afară de cât de pierdere de timp este procesul manual, există posibilitatea ca codurile să-și fi schimbat forma la sfârșitul procesului manual.

O modalitate de a efectua evaluarea este prin efectuarea unei analize statice folosind unele instrumente care o susțin. Unele dintre instrumentele care pot fi utilizate includ Coverity, SonarQube, Check Style și Closure Compiler.

În general, există două moduri de calculare a datoriilor tehnice. În prima abordare, aceasta ar putea fi obținută prin calcularea ratei datoriei tehnice după raportul de cod. Aici, estimarea inițială sau timpul total necesar dezvoltării aplicației ar fi folosit pentru a determina timpul necesar pentru a repara datoria tehnică.

În a doua abordare, puteți utiliza în mod direct estimările oferite de diferitele instrumente, cum ar fi SonarQube. Aceasta va fi combinată cu listele de datorii tehnice, precum și cu codurile de referință ale acestora. Din instrumente, puteți obține o estimare precisă a duratei de timp necesară pentru a o remedia.

Evaluarea datoriei tehnice vă va oferi o idee despre câte zile va dura pentru a repara datoria tehnică. Cu cât sunt mai multe datorii, cu atât îți va dura mai mult să o rezolvi.

Rezolvarea datoriilor tehnice

Ce se întâmplă dacă au apărut datorii tehnice și nu știți ce să faceți? Există anumiți pași pe care îi puteți face pentru a gestiona datoriile tehnice.

În primul rând, trebuie să recunoașteți că există datorii tehnice și să comunicați la fel echipei dumneavoastră. În comunicare, ar trebui să fiți clar ce s-a întâmplat și ce trebuie făcut pentru a le corecta. Ar trebui să vă asigurați că comunicați în mod clar necesitatea de a vă ocupa de datoria tehnică cât mai curând posibil.

După ce ți-ai informat echipa cu privire la datoriile tehnice, există trei abordări pe care le poți lua. În prima abordare, puteți decide să continuați cu sistemul așa cum este. În acest scenariu, aplicația va fi utilizată așa cum este.

Alternativ, puteți decide să refactorizați aplicația. Refactorizarea se face cu scopul de a reduce complexitatea aplicației, precum și de a curăța structura aplicației. Cu refactorizarea, comportamentul software-ului nu va fi schimbat; singura parte afectată va fi structura internă.

În cele din urmă, dacă cele două opțiuni discutate mai sus nu funcționează, va trebui să înlocuiți codul în întregime. O problemă cu aceasta este că ar putea duce la noi datorii tehnice, dar acesta ar putea fi un compromis mai bun pe termen lung.

Evitarea datoriilor tehnice în viitor

Avoiding Technical Debts

Desigur, este o idee deloc că evitarea datoriilor tehnice este cu siguranță mai inteligentă decât încercarea de a le remedia atunci când apar. Pe langa faptul ca iti economiseste atat timp cat si stres, se asigura si ca consecintele reziduale care vin din a avea de la inceput datorii tehnice sunt absente.

S-ar putea argumenta că datoriile tehnice, în sine, nu sunt rele. Sunt problematice în general, deoarece sunt datorii care trebuie plătite înapoi, iar oamenii nu sunt cea mai responsabilă specie de pe pământ. Alegerea constantă a unei opțiuni mai slabe va slăbi, în general, puterea software-ului dvs. și va face mai dificilă îmbunătățirea funcționalităților mai târziu. În general, evitarea datoriilor tehnice este cel mai bun pariu pentru oricine.

Deci, cum preveniți apariția datoriilor tehnice:

Creați un Backlog de proiect

Ideea aici este de a menține pe toată lumea la curent cu procesul și de a-i aduce la curent cu cerințele pentru orice sarcină care este efectuată. Crearea unui întârziere permite tuturor să vadă sarcinile rămase nerealizate și căile de urmat pentru a le îndeplini.

Prioritizează calitatea în detrimentul vitezei

Dacă sunteți programator, trebuie să învățați să acordați prioritate lucrărilor de calitate în detrimentul multor lucrări. Asigurați-vă că codurile dvs. sunt curate și că aplicațiile sau alt software sunt dezvoltate la perfecțiune. Înțelegeți că tentația de a lua comenzi rapide nu va merita pentru că, în cele din urmă, va trebui să îndepliniți sarcinile pe care le-ați abandonat.

Dacă conduceți o echipă, trebuie să comunicați aceleași valori membrilor echipei. Membrii ar trebui să fie învățați să creeze soluții orientate spre rezultate și să evite comenzile rapide.

Crează constientizare

În general, o cunoaștere aprofundată a ce este datoria tehnică și a modului de evitare a acesteia poate fi utilă pentru a preveni apariția lor în primul rând. Când vă înarmați dezvoltatorii cu cunoștințele necesare, aceștia vor evita mai bine capcanele pe care le reprezintă datoriile tehnice.

Introduceți bunele practici de codificare

Unele practici de codificare fac mai probabil ca tu să cazi în datorii tehnice. Astfel, ar fi grozav să evitați cuplarea strânsă, să folosiți abstractizarea și refactorizarea.

Introduceți o tehnologie actualizată

Actualizările regulate ale tehnologiei pot fi un mijloc excelent de prevenire a datoriilor tehnice. La actualizare, trebuie să vă asigurați că ceea ce este utilizat este cel mai recent cadru, baze de date și aplicații software.

Concluzie

Datoriile tehnice, în marea majoritate a cazurilor, sunt inevitabile atâta timp cât continuați să dezvoltați programe și să scrieți coduri. Cu toate acestea, șansele apariției lor pot fi mult reduse atunci când sunt respectați pașii enumerați mai sus. De asemenea, în eventualitatea unor datorii tehnice, nu se pierde orice speranță. Rămâi calm, fii încrezător, acționează în consecință.