Masz na myśli dług techniczny .
Wszyscy naliczamy dług techniczny od produktów, które opracowujemy z czasem; refaktoryzacja jest jednym z bardzo powszechnych i skutecznych sposobów zmniejszenia tego zadłużenia technicznego, chociaż wiele firm nigdy nie spłaca zadłużenia technicznego. Firmy te często uważają, że ich oprogramowanie jest wyjątkowo niestabilne, a dług techniczny staje się tak okropny, że nie można go spłacać stopniowo, ponieważ spłacanie go w ten sposób trwałoby zbyt długo.
Dług techniczny ma termin, ponieważ wynika z tych samych zachowań długu. Dostajesz dług i dopóki będziesz go wydawać (tworzyć funkcje) i nie spłacać tego długu, będzie on tylko rósł. Podobnie jak dług, gdy staje się zbyt duży, dochodzisz do punktów, w których możesz chcieć całkowicie go przelać za pomocą niebezpiecznych zadań, takich jak pełne przepisywanie. Podobnie jak prawdziwy dług, ponieważ narasta do pewnego momentu, utrudnia całkowicie wydawanie (tworzenie funkcji).
Po prostu wrzucając do miksu inny termin, spójność odnosi się do tego, jak dobrze system, mikro do poziomu linii lub makro do poziomu systemu, pasują do siebie. Bardzo spójny system sprawi, że wszystkie jego elementy będą bardzo dobrze do siebie pasować i będą wyglądać, jakby napisał je jeden inżynier. Twoje powyższe odniesienie do kogoś, kto po prostu przyklei kod do końca, naruszałoby spójność tego systemu.
Zarządzanie długiem technicznym
Istnieje wiele sposobów zarządzania długiem technicznym, chociaż tak jak w przypadku długu rzeczywistego najlepszym podejściem jest spłacanie go często. Niestety, tak jak w przypadku prawdziwego długu, czasem lepiej jest zgromadzić więcej na krótki okres, w którym na przykład czas na wprowadzenie na rynek funkcji może podwoić lub potroić przychody. Trudna część polega na wyważeniu tych konkurencyjnych priorytetów, a także ustaleniu, kiedy ROI zadłużenia nie jest tego warte dla danej funkcji, a kiedy jest.
Czasami więc warto naliczać dług na krótki okres, ale rzadko tak jest, i jak w przypadku wszystkich długów, im krótszy okres, tym lepiej. Więc w końcu (najlepiej szybko ) po narosnięciu długu technicznego musisz go spłacić, są to powszechne podejścia:
- Refaktoryzacja
- Pozwala to pobrać fragmenty kodu, które zostały uświadomione, że zostały zgubione w trakcie lub po zakończeniu implementacji, i umieścić je we właściwym miejscu (lub bardziej poprawnym).
- Przepisać
- To jest jak bankructwo. Czyści tabliczkę, ale zaczynasz od niczego i masz możliwość popełnienia tych samych lub nawet większych błędów. Podejście techniczne o wysokim ryzyku i wysokim wynagrodzeniu, ale czasami jest to jedyna opcja. Chociaż tak jest rzadziej, niż wielu ci to powie.
- Przegląd architektury
- Jest to bardziej aktywne podejście do spłaty długu technicznego. Odbywa się to poprzez zatrudnienie kogoś, kto ma władzę nad szczegółami technicznymi, aby zatrzymać wdrażanie niezależnie od planów i harmonogramów projektu, aby zapewnić, że narosnie mniej długu technicznego.
- Zamrożenie kodu
- Zamrożenie kodu zmian może pozwolić ci odetchnąć, gdzie twój dług nie rośnie ani nie maleje. Daje to czas na zaplanowanie podejścia do zmniejszenia zadłużenia technicznego z nadzieją uzyskania najwyższego zwrotu z inwestycji.
- Modularyzacja
- To jest jak podejście poziomu 2 dostępne tylko wtedy, gdy zastosujesz albo Omówienie architektury, aby mieć już system modułowy, albo Refaktoryzację, aby przejść do jednego. Gdy masz system modułowy, możesz spłacać dług w całych częściach systemu w sposób izolowany. Pozwala to na częściowe ponowne zapisywanie, częściowe refaktoryzowanie, a także minimalizację naliczania długu technicznego, ponieważ izolacja utrzymuje dług tylko w tych obszarach, w których pojawiły się funkcje, w przeciwieństwie do rozprzestrzeniania się po całym systemie.
- Zautomatyzowane testy
- Zautomatyzowane testy mogą pomóc w zarządzaniu zadłużeniem technicznym, ponieważ mogą pomóc w zidentyfikowaniu miejsc problemów w systemie, miejmy nadzieję, że zanim zadłużenie w tych obszarach wzrosnie bardzo duże, ale nawet po tym, jak nadal mogą uświadomić inżynierom te niebezpieczne obszary, które być może jeszcze nie zdawałem sobie sprawy. Co więcej, po przeprowadzeniu automatycznych testów możesz bardziej swobodnie refaktoryzować rzeczy bez obawy o zbyt duże uszkodzenie. Nie dlatego, że programiści nic nie zepsują, ale dlatego, że dowiedzą się, kiedy coś zepsują , poleganie na ręcznych testerach w wysoce zadłużonych systemach zwykle ma słabe wyniki w wykrywaniu problemów.