Inne · Programowanie

Dług techniczny a tetris

Kolejny wpis zainspirowany prezentacją Krzysztofa Kędzierskiego podczas konferencji BoilingFrogs 2018. Zacznę dość nietypowo od pytania:

Jaka jest jego wartość?

Zerowy dług techniczny jest wtedy, gdy nie ma żadnych bugów do poprawienia ani żadnych nowych funkcjonalności do napisania. Nic nie trzeba robić, nie ma długu.

Jeśli chcemy zrobić nawet najmniejszą zmianę w kodzie, to już wtedy dług techniczny ma jakąś wartość dodatnią.

Co to jest ten dług?

Jest to koszt pracy, jaką należy wykonać, aby do danego systemu dodać nową funkcjonalność w nieinwazyjny sposób.

Bardzo dobrze obrazującym przykładem może być tetris: celem jest, żeby ułożyć spadające z góry klocki tak, by nie doszły do górnej krawędzi ekranu. Klocki ułożone w rzędzie znikają, robiąc miejsce na nowe.

Jeśli ułożymy klocki byle jak,  bardzo trudno będzie nam układać klocki w rzędy i szybko zapełnimy całą planszę, przegrywając. Podobnie sprawy mają się w projekcie. Jeśli nie zwrócimy uwagi już na początku na odpowiednią jakość kodu czy architekturę, to utrzymanie i rozwój tego oprogramowania wraz z upływem czasu będą coraz trudniejsze.

Jak to może wyglądać na wykresie?

wykres

Spłacalny dług techniczny – czy jest coś takiego?

diagram

Powyższy wykres ma zobrazować różne podejścia do tworzenia projektów. Podejście lekkomyślne zwykle prowadzi do niemożliwej spłaty długu (strona lewa wykresu), a podejście ostrożne pozwala doprowadzić do możliwej spłaty długu (strona prawa wykresu).

Na spłacalny dług technologiczny składa się kilka rzeczy, np. czysty, ale również prosty kod,  wysoka jakość projektu (ograniczona, realna liczba bugów i nieskomplikowana możliwość dopisywania nowych funkcjonalności) oraz wzorce projektowe (oczywiście z umiarkowaniem, bez nadużyć).

Podsumowanie

Tworzenie projektu można porównać do gry w Tetris. Każdy, najmniejszy nawet klocek, ma istotne znaczenie i niepoprawnie użyty może prowadzić do zakończenia gry.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

w

Connecting to %s