Dług technologiczny na celowniku: jak skutecznie sobie z nim poradzić?
Dług technologiczny to powszechny problem, z którym boryka się wiele zespołów deweloperskich. Mimo że pojawia się bardzo często, zazwyczaj zaciągany jest nieświadomie i w dłuższej perspektywie czasowej może przynieść dość poważne konsekwencje biznesowe.
Na szczęście istnieją sposoby, aby nie dopuścić do takiej sytuacji, a także krok po kroku uregulować zaciągnięty dług. Aby to zrobić dobrze, w pierwszej kolejności należy poznać dług technologiczny od podszewki i zrozumieć jego definicję. Czym dokładnie jest dług, jak wpływa na Twój biznes i jakie sposoby pozwolą Ci na poradzenie sobie z nim? Czytaj dalej, aby poznać szczegóły.
Spis treści
Dług technologiczny – co to właściwie jest?
Pojęcie to zostało po raz pierwszy użyte przez popularnego amerykańskiego programistę, Warda Cunninghama, który przedstawił dług technologiczny w postaci trafnej metafory. Porównał on wspomniany problem do długu finansowego i zaciągnięcia kredytu, który niespłacany, będzie generował odsetki; co w ogólnym rozrachunku przyczyni się do wyższych kosztów projektu. Im większy dług zaciągniesz, tym większe odsetki będą do zapłacenia.
Dług technologiczny to nic innego jak tworzenie kodu w nieprzemyślany sposób, często aby w jak najkrótszym czasie dowieźć nowe funkcjonalności, bez dbania o jakość całego rozwiązania i wykorzystywanie najlepszych metod. Często okazuje się, że wybierając z pozoru najtańszą i najszybszą opcję tworzenia oprogramowania, utrudniasz sobie rozwój projektu w przyszłości. Z pewnością przyjdzie moment, gdy będziesz chciał wprowadzić do projektu zmiany lub poprawki, a to może wtedy okazać się problematyczne i kosztowne. Problemy wynikające z pracy z legacy code opisaliśmy w jednym z naszych artykułów. Czas przyjrzeć się dokładniej najczęstszym powodom powstania długu.
Dług technologiczny – najczęstsze przyczyny
Świadomość przyczyn długu technologicznego jest niezwykle istotna. Jeśli dokładnie je poznasz, łatwiej Ci będzie zapobiec pojawieniu się problemu w przyszłości. W przypadku, gdy już zidentyfikowałeś dług technologiczny, pamiętaj, że im szybciej zaczniesz pracować nad jego spłaceniem, tym sprawniej sobie z nim poradzisz.
Niektóre z powodów powstawania długu technologicznego:
- Presja czasu. Dług technologiczny często pojawia się na skutek presji wytworzenia oprogramowania jak najszybciej, nawet kosztem wyboru gorszego rozwiązania. Błędne wyznaczenie deadline’u na realizację projektu i pośpiech mogą skutkować brakiem koncentracji na jakości danego rozwiązania.
- Brak szerokiego spojrzenia na rozwój aplikacji. Przygotowując projekt, należy wziąć pod uwagę zarówno jego dalszy rozwój, jak i wdrażanie koniecznych poprawek w trakcie jego trwania. Częstym błędem jest brak analizy całościowej projektu i koncentracja wyłącznie na nowych funkcjonalnościach i spełnianiu ich założeń, co prowadzi do wyboru mało elastycznych rozwiązań.
-
Nastawienie wyłącznie na nowe inwestycje. Gdy na przykład dział sprzedaży kładzie głównie nacisk dostarczanie nowych rozwiązań, a starsze funkcjonalności nie są w żaden sposób optymalizowane, jest to prosta droga do powstania długu technologicznego. W dłuższej perspektywie czasu późniejsza refaktoryzacja kodu (design debt) bywa bardziej uciążliwa i czasochłonna.
- Wybór wyłącznie najprostszych i najtańszych rozwiązań. Na samym początku projektu można popaść w pułapkę wyboru prostych i tanich rozwiązań, które nie sprawdzą się, gdy myślisz w przyszłości o skalowaniu aplikacji (trudniej będzie rozszerzyć bądź zmienić istniejące funkcjonalności ze względu na zbyt hermetyczne rozwiązania).
- Brak kompetencji osób tworzących oprogramowanie. Gdy zespół nie ma wystarczających kompetencji, aby dbać o dobre praktyki programowania i stosuje niewłaściwe metody, a także nie dba o skalowalność, zwiększa ryzyko pojawienia się problemów.
-
Brak refaktoryzacji na początkowych etapach projektu. Kolejne próby refaktoryzacji kodu mogą sprawiać więcej problemu.
Skutki posiadania długu technicznego
Głównym skutkiem długu technologicznego jest wzrost liczby błędów, wolniejsze tempo rozwoju projektu i problemy z działaniem aplikacji,
Jaki wpływ może mieć dług technologiczny na inne operacje w firmie?
Może na przykład:
- zmniejszyć Twoją zdolność do innowacji i realizacji nowych pomysłów. Trudno jest spróbować czegoś nowego, gdy inwestujesz w naprawę czegoś starego.
- utrudnić reagowanie na zagrożenia konkurencji. Twój dług techniczny ogranicza Twoją zdolność do szybkiego dostosowywania się i zmiany, aby konkurować.
- prowadzić do problemów operacyjnych, takich jak awarie, nieprawidłowe obliczenia, utrata produktywności z powodu spadku wydajności, naruszenia bezpieczeństwa, a ostatecznie wstrzymać projekt.
- zwiększyć problemy kadrowe. Znalezienie programistów chętnych do pracy ze starszymi technologiami może być trudne, jeśli mogą oni pracować z najnowocześniejszymi technologiami dla konkurencji.
Przestarzałe procesy i systemy mogą zwiększyć koszty realizacji i produkcji, co skutkuje zmniejszeniem zysków. Starsza technologia może również zwiększyć frustrację pracowników i ostatecznie doprowadzić do niedoborów kadrowych, a co gorsze — wywołać niezadowolenie klientów.
Radzenie sobie z długiem technologicznym wymaga dużych nakładów czasowych i finansowych, dlatego lepiej pomyśleć o tym zawczasu, jak nie wpaść w taką pułapkę.
Jak nie dopuścić do pojawienia się długu technologicznego?
Przede wszystkim musisz mieć świadomość takiego problemu już na samym początku. Znając konsekwencje, do jakich prowadzi dług kodowy, warto odpowiednio zaplanować projekt, aby uniknąć nagromadzenia błędów. Co zatem możesz zrobić?
- Zadbaj o dobry jakościowo kod i sensowną architekturę, a także wykorzystywanie sprawdzonych rozwiązań (niekoniecznie najszybszych, ale elastycznych, które umożliwią skalowanie aplikacji w przyszłości).
- Testuj produkt. Warto regularnie testować aplikację i na bieżąco poprawiać pojawiające się błędy. Regularne code review powinno być podstawą tworzenia jakiegokolwiek oprogramowania.
- Odpowiednio zaplanuj projekt. Właściwe zaplanowanie tworzenia oprogramowania już w początkowych fazach powinno uwzględniać zarówno czas na testowanie aplikacji i wprowadzanie bieżących poprawek, jak i dostarczanie nowych funkcjonalności. Koncentracja wyłącznie na drugim aspekcie prowadzi do pojawienia się długu technologicznego.
- Przekonaj biznesową stronę o zaletach eliminacji długu technologicznego. Choć z perspektywy biznesowej tego typu działania nie przynoszą widocznych rezultatów (np. w postaci nowych funkcjonalności), zapewni dobrą jakość i wydajność produktu w przyszłości.
Jak poradzić sobie, gdy masz do czynienia z długiem?
W przypadku pojawienia się długu w zdecydowanej większości przypadków nie jest konieczne przepisywanie całej aplikacji od samego początku. Jeżeli jednak zależy Ci na takim rozwiązaniu, warto dokładnie to przemyśleć, biorąc pod uwagę koszty i czas konieczny do jego realizacji. W początkowym etapie najlepiej jednak przeanalizować problem i sprawdzić, gdzie pojawia się najwięcej błędów. W tym momencie bardzo przydatny może być wspomniany code review, który umożliwi kompleksowy audyt napisanego kodu i pozwoli wskazać najbardziej problematyczne obszary.
Dobrym pomysłem może być podział aplikacji na mniejsze, logiczne części, które będą oddzielnie refaktoryzowane. Po ich wyodrębnieniu warto przeanalizować możliwości poprawy zaistniałej sytuacji. W zależności od projektu poprawa jakości kodu w aplikacji będzie wymagała przepisania go, a w innych wdrożenia niezbędnych poprawek w strategicznych miejscach.
Podsumowując, odpowiednia praca zespołu i świadomość konsekwencji długu technologicznego, pozwala skutecznie walczyć z tym problemem, a także minimalizować powstały dług. Zwykle wymaga to odpowiednich nakładów czasowych i przygotowania właściwego planu, ale korzyści płynące z pozbycia się długu będą niezwykle wartościowe dla Twojego biznesu.
Jeśli potrzebujesz konsultacji w sprawie długu technologicznego i chcesz wyprowadzić swój projekt na prostą, skontaktuj się z nami – doradzimy w wyborze najlepszych rozwiązań.