Niewidzialny dług techniczny. Jak walczyć z przeciwnikiem, którego nie widać?
26 października 2021
Artykuł sponsorowany
Czy Twoja aplikacja teraz działa? Czy klienci są z niej zadowoleni? Jeśli musisz to sprawdzić, bo nie jesteś pewien, nie martw się, ten artykuł może chwilę poczekać. Zastanówmy się jednak, kiedy możemy powiedzieć, że system informatyczny działa. Wbrew pozorom nie jest to takie proste pytanie. Jeszcze trudniej określić, czy klienci korzystający z aplikacji są zadowoleni. W tym artykule postaram się zwrócić uwagę na aspekty procesu wytwarzania oprogramowania, o których nam wszystkim zdarza się zapominać.
Spis treści
Po co nam te aplikacje?
Czy zastanawialiście się kiedyś, dlaczego tworzymy tak wiele aplikacji? Oczywiście odpowiedź jest prosta – jeśli jest popyt, jest też podaż. Wymagania użytkowników rosną, coraz więcej chcemy załatwiać przez Internet, a najchętniej za pośrednictwem telefonu. Nowe potrzeby sprawiają, że powstaje coraz więcej sklepów internetowych, aplikacji mobilnych dla sklepów stacjonarnych, aplikacji bankowych, komunikatorów itp. W dzisiejszym świecie, każda firma powinna posiadać porządną stronę internetową oraz aplikację mobilną. Cyfrowa rewolucja to nie tylko sklepy.
W telefonie chcemy mieć dokumenty, bilety, certyfikaty, a nawet recepty. Wszystko chcielibyśmy robić szybko. Po co czekać na dostarczenie karty SIM, skoro elektroniczną kartę eSIM możemy mieć od razu w telefonie? Po co czekać na wyprodukowanie karty płatniczej, skoro w ciągu kilku sekund i tę kartę możemy mieć w telefonie? Wszystko to jest szczególnie dobre dla nas, czyli osób związanych z wytwarzaniem oprogramowania. Jednak duża liczba aplikacji, prowadzi do dużej konkurencji.
W naszym świecie, użytkownik niezadowolony z oprogramowania szybko zmieni je na inne. Ryzyko jest takie, że zmieniając oprogramowanie zmieni też swój bank, sklep, w którym codziennie robi zakupy, czy nawet lekarza – to jest właśnie sedno problemu. Skoro systemy informatyczne coraz częściej są nam potrzebne do życia, to zmiana systemu może zmienić nasze przyzwyczajenie. Jedna firma na tym straci, a inna zyska.
#TODO #FIXME, czyli dług techniczny
Tworząc aplikacje czasem zdarza się zostawiać coś na później. Wiele razy widziałem w kodzie (a nawet w konfiguracji) aplikacji popularne „TODO” oraz „FIXME”. Sam też wielokrotnie używałem tych skrótów, bo przeważnie nie jest to coś złego. Jesteśmy świadomi, że pewien fragment kodu wymaga poprawek, udoskonaleń lub innych modyfikacji, ale podejmujemy decyzję o odłożeniu ich na później. Przecież nie wszystko można zrobić natychmiast. Czasem w ten sposób oznaczamy brakujący test lub dokumentację. Wszystko to prowadzi do powstawania długu technicznego.
Dług ten to nie tylko „TODO” oraz „FIXME”, składa się na niego wiele innych rzeczy. Jedną z nich są przestarzałe wersje bibliotek. Przeciętny projekt zawiera wiele zewnętrznych zależności. Każda z nich żyje własnym życiem, a codziennie pojawiają się nowe wersje. Niestety śledzenie tych wszystkich zmian oraz poprawne dokonywanie aktualizacji wymagałoby zatrudnienia dodatkowej osoby zajmującej się właśnie tym zagadnieniem. Dlatego z reguły wersje bibliotek aktualizowane są tylko, gdy naprawdę jest taka potrzeba. Takie podejście może prowadzić do wykorzystywania kodu zawierającego podatności na ataki oraz błędy naprawione w nowszych wersjach. Dług techniczny to także kod, do którego nie zostały utworzone testy lub powstały niewłaściwe testy. W tej samej kategorii znajdziemy skomplikowany kod aplikacji, w którym łatwo o pomyłkę.
Cały ten dług ma jedną wspólną cechę. Najczęściej jesteśmy jego świadomi lub chociaż byliśmy jego świadomi w momencie, gdy został zaciągnięty. Jeśli nawet ta świadomość nie jest bezpośrednia, to istnieją narzędzia, które wskazują miejsca występowania długu technicznego w kodzie. Świadomość ta pozwala nam rozsądnie zarządzać ryzykiem i z czasem spłacać zaciągnięty kredyt poprzez poprawianie aplikacji. Jeśli nie uda nam się dokonać poprawki przed wystąpieniem usterki, czyli np. nie utworzymy testu przed realną awarią, to świadomość istnienia długu technicznego może przyspieszyć rozwiązywanie problemu.