Nikt z nas nie lubi mieć długów, to pewne. Ale branża IT wznosi to pojęcie na wyższy poziom. Dług techniczny – to on sprawia, że rzeczy nie działają tak jak powinny, a zarządzanie procesem tworzenia aplikacji staje się coraz bardziej skomplikowane. Ale czy na pewno każdy dług jest zły?
Zaciąga go większość programistów – czasem zmusza ich tempo pracy w firmie, czasem dług okazuje się najlepszym rozwiązaniem dla danego projektu. Dług technologiczny prowadzi do wielu niebezpieczeństw, ale jednocześnie jest praktyką, z którą spotkał się prawie każdy w branży IT. Dług techniczny może negatywnie wpłynąć na działalność całego przedsiębiorstwa, ale może też być sposobem na wyjście z kłopotów. Co to jest dług techniczny i jak sobie z nim radzić?
Co to jest dług techniczny?
Dług techniczny, technologiczny, projektowy lub kodowy (te pojęcia stosuje się zamiennie) to wybór rozwiązania nieadekwatnego do potrzeb. To może być wybór nieodpowiedniego języka, rezygnacja z frameworku, ignorowanie dobrych praktyk programistyczny. Z pozoru wybór ten zawsze jest uzasadniony. Rozwiązanie jest tańsze, szybsze bądź łatwiejsze. Niestety, długoterminowo prowadzi do gorszej jakości. Charakterystyczne dla długu technologicznego jest to, że im później zespół decyduje się na eliminację długu, tym wymaga to większych środków. Jednocześnie kontynuowanie pracy niezgodnie ze standardem prowadzi do gorszych efektów, wzrostu kosztów lub – paradoksalnie – zwiększenia pracochłonności.
Dług technologiczny – wyjaśnienie
Dług technologiczny to swego rodzaju droga na skróty przez las, która wydaje się prowadzić prosto do celu, ale gdy już przebijemy się przez pierwsze chaszcze, okazuje się, że drzewa rosną coraz gęściej, gałęzie kują nas w twarz, a światło ledwo przebija się przez liście. I tylko upór sprawia, że idziemy dalej, zamiast zawrócić.
Skąd się bierze dług techniczny?
Złe oszacowanie kosztów, zbytni optymizm, wąskie spojrzenie na zadanie czy pośpiech wynikający z braku czasów – to tylko część z powodów, przez które twórcy aplikacji zaciągają dług techniczny. Czasem wynika on ze zbyt skomplikowanego zadania, które nie przystaje do aktualnych umiejętności rozwoju. Kiedy indziej to szefowie naciskają na nierealne terminy. Bywa, że zespół decyduje się na technologię, którą słabo zna (lub zostaje mu ona narzucona), a czasem po prostu rodzi się z jednego prostego błędu, który zamiast być porządnie naprawionym, jest nieustannie łatanym, bo czas goni. Dług techniczny może wynikać także z nieprecyzyjnych wymagań, które zostały źle spisane lub które ewoluują w trakcie prac programistycznych. Czasami dług nie rodzi się na samym początku projektu, tylko zostaje zaciągany w trakcie jego trwania, gdy programiści pracując w pośpiechu zapominają o dwóch istotnych etapach tworzenia kodu: refaktoryzacji i pisaniu testów.
Więcej powodów zaciągania długów technologicznych
Powodów rodzących dług techniczny jest bardzo wiele i wszystko zależy od specyfiki danego zespołu, a także zlecenia. Dług techniczny dotyka wtedy całej organizacji, sprawiając nagły i nieoczekiwany wzrost kosztów, co w skrajnych przypadkach może prowadzić do bankructwa firmy. Bywa, że aplikacja zostaje wypuszczona przed czasem z wieloma błędami i wtedy także zostaje zaciągnięty dług technologiczny. A nowy hit, który miał podbić rynek, zbiera wyłącznie słabe recenzje, więc jest naprawiany niedokładnie i w pośpiechu.
Czy dług techniczny zawsze jest zły?
Choć o długu technicznym mówi się zwykle jako o problemie, który trzeba możliwie szybko naprawić, czasem dług techniczny wynika z podejmowania świadomych decyzji. Tak, dług technologiczny może być celowy, zamierzony i wprowadzony w projekt z pełną premedytacją (i wcale nie dlatego, że ktoś postanowił zniszczyć znienawidzonego pracodawcę).
Dlaczego programiści celowo zaciągają dług technologiczny?
Jednym z powodów, dla którego celowo zaciąga się dług techniczny, jest możliwość otrzymania feedbacku od potencjalnych użytkowników. Niektóre firmy decydują się wypuścić aplikację z błędami, niedokończonymi funkcjonalnościami lub o ograniczonej wydajności, by sprawdzić, jak pomysł odnajdzie się na rynku.
Bywa, że zespół deweloperów świadomie zaciąga dług technologiczny, gdy wie, że dana aplikacja powstała tylko „na chwilę”, jest formą prototypu, rozwiązania wypuszczonego na rynek nim docelowa wersja aplikacji zostanie utworzona.
Dług technologiczny może też być zaciągnięty wtedy, gdy klient stawia nierealne wymagania dotyczące czasu lub zostaje podpisana umowa z datą ukończenia uniemożliwiającą stworzenie aplikacji zgodnie z dobrymi praktykami. Taka sytuacja jednak jest bardzo niebezpieczna i warto mimo wszystko próbować rozmawiać z klientem lub managerem i zmienić ustalenia.
Jak usunąć dług techniczny?
Istnieje szereg strategii usuwania długu technicznego. Wybrane rozwiązanie zawsze należy dostosować do specyfiki projektu – nie istnieje jedna uniwersalna metoda usuwania długu technicznego, ponieważ każdy projekt jest inny. W wyborze strategii usuwania długu technologicznego ważna jest nie tylko używana technologia i praktyki panujące w zespole, ale też poziom zaawansowania projektu i długu.
Usuwanie długu technologicznego w metodykach agile
Wiele projektów programistycznych zarządzanych jest zgodnie z metodykami zwinnymi (ang. Agile). Najpopularniejsze: Scrum i Agile Manifesto z uwagi na swój charakter mogą prowokować do zaciągania długu technologicznego. Jednak wystarczy o tym pamiętać, zarządzając projektem w metodyce zwinnej i od początku przeciwdziałać powstawaniu długu.
Na przykład zarządzając projektem w metodyce zwinnej można wyznaczyć dzień, który zespół programistów powinien przeznaczyć na refaktoryzację. Od początku na liście zadań powinny pojawiać się nie tylko zadania dodające funkcjonalności, ale też związane z projektowaniem kodu, dbaniem o niego i testami. Stosując metodykę Scrum możemy poświęcić jeden cały sprint na usuwanie długu technicznego. Najważniejsze jednak, by klient rozumiał, że te zadania są istotne dla powstania wartościowej, jakościowej aplikacji i nie sabotował ich narzuceniem nierealnych terminów.
Mam dług techniczny! I co dalej?
Dług techniczny nie zawsze jest tragedią, ale istotne jest, byśmy byli świadomi jego istnienia. Dopiero wiedząc czym jest dług technologiczny i jakie są jego wady oraz zalety możemy ocenić, czy warto kontynuować rozwój prac, czy należy skupić się na jak najszybszej eliminacji problemu. Zwykle najlepsze jest rozwiązanie hybrydowe, ale czasem zaciągnięcie długu technologicznego może być rozsądnym rozwiązaniem. Ważne, by wszelkie decyzje związane z długiem technicznym podejmować świadomie.
Brak komentarzy