Site icon Wiesław Kukiełka – Oprogramowanie

Remont czy wyburzenie? Zasady budownictwa w świecie kodu

remont czy wyburzenie

Przez lata pracy z oprogramowaniem zauważyłem, że prawa rządzące budownictwem i programowaniem są zaskakująco podobne. Stary dom i stary system informatyczny starzeją się niemal w ten sam sposób. Najpierw pojawiają się drobne poprawki, potem prowizoryczne naprawy, następnie kolejne dobudówki, aż w końcu nadchodzi moment, w którym ktoś zadaje pytanie:

„Remontować czy wyburzyć i budować od nowa?”

W świecie IT to pytanie wraca regularnie.

Fundamenty mają znaczenie

Każdy program kiedyś był nowoczesny. Tak samo jak każdy budynek był kiedyś nowy. Problem pojawia się po latach:

Program, który w 2010 roku był idealny, w 2026 może przypominać kamienicę z popękanymi instalacjami i dobudowanymi przez lata prowizorkami.

Największy problem polega na tym, że wiele systemów rozwija się bez planu architektonicznego. Kolejne funkcje są „doklejane”, poprawki robione „na szybko”, a tymczasowe rozwiązania zostają na lata.

W pewnym momencie koszt utrzymania zaczyna przewyższać koszt stworzenia czegoś nowego.

Dług technologiczny jak zagrzybienie ścian

W budownictwie można przez lata malować ściany, ale jeśli fundamenty są wilgotne, problem będzie wracał. W programowaniu podobnie działa dług technologiczny.

Objawia się on między innymi:

Na pierwszy rzut oka system może działać poprawnie. Ale każda zmiana staje się coraz droższa i bardziej ryzykowna. Programiści zaczynają bać się dotykać pewnych fragmentów kodu. Tak jak ekipa remontowa boi się ruszyć ścianę, bo nie wiadomo, co się zawali.

Czy zawsze warto burzyć?

W świecie IT często pojawia się pokusa:
„napiszmy wszystko od nowa”.

Brzmi atrakcyjnie. Nowa technologia, nowy interfejs, świeża architektura. Problem w tym, że przepisywanie systemu od zera bardzo często kończy się katastrofą.

Dlaczego?

Bo stary system przez lata zgromadził ogromną ilość wiedzy biznesowej:

Część tej wiedzy istnieje wyłącznie w kodzie.

To trochę jak ze starym budynkiem. Na papierze wygląda źle, ale po dokładnych oględzinach okazuje się, że fundamenty są solidne, a część konstrukcji można uratować.

Kod ma przewagę nad betonem

I tutaj pojawia się największa różnica między budownictwem a oprogramowaniem.

Budynek trudno rozebrać fragmentami bez wpływu na całość. Kod daje znacznie większe możliwości.

Można:

Dobrze prowadzona modernizacja przypomina generalny remont prowadzony bez zamykania całego obiektu.

To często najlepsza droga dla systemów biznesowych, które muszą działać każdego dnia.

Najdroższy jest chaos

Nie każdy stary system jest zły. Widziałem aplikacje napisane kilkanaście lat temu, które nadal działają stabilnie i są łatwe w utrzymaniu. Widziałem też nowe projekty, które po dwóch latach nadawały się do przebudowy.

Wiek systemu nie jest największym problemem.

Największym problemem jest brak architektury i brak konsekwencji.

Jeżeli przez lata:

to nawet stary system może być wartościowy.

Nie wszystko trzeba zaczynać od zera

W branży IT często zachwycamy się nowością. Nowe frameworki, nowe języki, nowe architektury. Tymczasem wiele firm działa dzięki systemom rozwijanym od dekady lub dłużej.

I bardzo często bardziej opłaca się mądry remont niż spektakularne wyburzenie.

Bo prawdziwą wartością systemu nie jest sam kod. Wartością jest wiedza biznesowa, którą ten kod zawiera.

Dlatego przed decyzją o napisaniu wszystkiego od nowa warto zadać sobie pytanie:

Czy naprawdę nie ma tu ściany nośnej, którą warto zachować?

Exit mobile version