Biznes na kredyt, czyli jak zarządzać długiem technicznym, kiedy Twoim priorytetem jest szybki wzrost
Czasami, chcąc jak najszybciej osiągnąć zaplanowany cel, decydujemy się pójść na skróty — zdarza się to również w przypadku budowy oprogramowania. Pragniemy jako pierwsi zaspokoić potrzebę rynkową lub zweryfikować postawioną hipotezę, dlatego sięgamy po nieoptymalne rozwiązania, które da się uruchomić w krótkim czasie i szybko zacząć na nich zarabiać. W ten sposób świadomie (lub co gorsza: bez świadomości) zaciągamy dług techniczny, który będziemy musieli spłacić. W przeciwnym wypadku rozwój naszej firmy zostanie zatrzymany, a realizacja kolejnych celów biznesowych zablokowana.
A skoro dla firm ukierunkowanych na szybki wzrost, w tym startupów, czas jest walutą równie istotną co pieniądze, te szczególnie narażone są na podjęcie decyzji, które w przyszłości wpędzą je w długi.
Do tej pory świat IT nie wypracował jednej, idealnej ścieżki, która pozwoliłaby bezbłędnie pracować nad tworzeniem i rozwojem oprogramowania. Istnieje jednak wiele metodyk i frameworków, których zadaniem jest ograniczyć błędy i ryzyko do minimum (w tym również nasze podejście „Software as a Journey”). Wciąż jednak każda zmiana w kodzie pociąga za sobą konsekwencje, które mogą wpływać na obniżenie jakości oprogramowania. Jeżeli od początku nie wprowadzimy odpowiedniego podejścia, pozwolimy na ich kumulację, a te z czasem zmienią się w tzw. dług techniczny.
Jest to naturalne zjawisko i da się z nim pracować. Gorzej, jeżeli zadłużenie wynika z naszych błędów, ograniczeń lub złych praktyk projektowych. Wtedy musimy liczyć się z tym, że prędzej czy później utoniemy w jego odsetkach.
„Im dłużej zwlekamy ze spłatą długu technicznego, tym staje się on coraz droższy. Z tego względu należy go albo unikać, albo nauczyć się nim zarządzać. A biorąc pod uwagę, że praktycznie nie da się całkowicie uniknąć chociażby minimalnego zadłużenia, każda osoba odpowiedzialna za tworzenie i rozwój oprogramowania powinna wiedzieć, skąd się on bierze i w jaki sposób oszacować związane z nim ryzyko.
Dług techniczny nie jest czymś abstrakcyjnym. Można go oszacować i zmierzyć, a następnie przedstawić konkretny plan, który krok po kroku doprowadzi do spłaty zadłużenia. Jeżeli dostrzegasz w swojej firmie objawy długu technicznego i nie wiesz co robić, zapraszam do kontaktu”.
Przemysław Górecki
Chief Technology Officer, Altkom Software & Consulting
Na jaki dług techniczny narażone są szybko rosnące firmy?
- Wybór nieoptymalnej technologii,
- Rozwój aplikacji w oparciu o niewydajny / przestarzały framework,
- Brak dbałości o czytelność i czystość kodu tworzonego rozwiązania,
- Nieuwzględnienie skalowalności projektu,
- Ignorowanie błędów i zgoda na niepełne funkcjonowanie aplikacji,
- Świadoma zgoda na obniżenie wydajności, niezawodności czy wytrzymałości końcowego oprogramowania.
Skąd bierze się dług techniczny?
Pomijając kwestie, kiedy firma świadomie decyduje się na zaciągnięcie długu (piszemy o tym poniżej), zazwyczaj dług techniczny wynika z braku świadomości osób decyzyjnych, chęci szybkiego zarobku lub presji nałożonej na zespół.
Startupy i firmy, dla których szybki rozwój jest priorytetem, niechciany dług techniczny najczęściej zaciągają w momencie, kiedy:
- Ulegają presji wydania oprogramowania w terminie wcześniejszym niż pierwotnie zakładał projekt (przez co na rynek trafia produkt niedokończony, okrojony lub zawierający błędy);
- Skupiają się na szybkim zysku, zamiast myśleć przyszłościowo (zarobić mniej na początku, ale później czerpać więcej korzyści);
- Nie potrafią precyzyjnie określić swoich wymagań na początku projektu (przez co powstaje oprogramowanie, które nie odpowiada na rzeczywiste potrzeby firmy i jego przyszłych użytkowników);
- Zbyt późno anonsują zmiany wymagań (na które nie ma czasu ani budżetu);
Wszystkie wyżej wymienione aspekty mogą powodować wrażenie, że za dług techniczny odpowiedzialne są osoby zarządzające biznesem, które nie znają się na technologii i patrzą na nią wyłącznie przez pryzmat zarobków. Nie jest to jednak prawda i za dług techniczny równie często odpowiadają osoby decyzyjne z zespołu IT. Wynika to z ich braku doświadczenia lub mało biznesowego podejścia do tworzenia oprogramowania. Efektem jest brak szerszego spojrzenia na projekt w perspektywie rozwoju firmy.
Najczęściej do zadłużenia z winy IT dochodzi ze względu na:
- Wybór zbyt sztywnych, ograniczonych rozwiązań (które w przyszłości uniemożliwiają dostosowanie oprogramowania do nowych potrzeb);
- Brak początkowego narzucenia standardów i dobrych praktyk stosowanych przy budowie systemów i aplikacji (przez co z czasem rozwiązanie staje się nieczytelne a wypracowanie takich standardów trudne);
- Ignorowanie potrzeby refaktoryzacji w początkowych fazach projektu;
- Brak kompetencji wśród osób zaangażowanych w projekt.
Czy dług techniczny zawsze jest zły?
Wydawać by się mogło, że zadłużenie w tak istotnym projekcie jak budowa oprogramowania z założenia jest czymś złym. Istnieją jednak uzasadnione przypadki, kiedy warto taki dług zaciągnąć i czerpać z niego korzyści.
Zalety długu technicznego:
- Wystartowanie z projektem nawet w przypadku, kiedy brakuje wiedzy, kompetencji czy pełnego zespołu do jego realizacji.
- Niższy początkowy koszt wytworzenia oprogramowania. Opłacalne w sytuacji, kiedy wiemy, że za jakiś czas powstanie jego nowa wersja, stworzona od podstaw.
- Szybkie wypuszczenie aplikacji i dopracowywanie jej „na żywo”, dzięki feedbackowi zebranemu od użytkowników.
Jak zarządzać długiem technicznym?
Świadome zarządzanie długiem technicznym to skomplikowany proces. Niewielkie zadłużenie (które dotyka prawie każdej firmy) spłaca się na bieżąco. Developerzy, podczas swojej codziennej pracy, czytają istniejący kod i stale go ulepszają (np. dokonują drobnej refaktoryzacji), wyłapując elementy, które mogą w przyszłości powodować zadłużenie. Takie małe prace nie wymagają większego planowania, ważne jednak, żeby każda osoba z zespołu poczuwała się do odpowiedzialności i dbała o jakość oraz czytelność kodu.
Zbudowanie w zespole poczucia, że każdy odpowiedzialny jest za spłatę długu technicznego, w połączeniu z dobrymi praktykami projektowymi (np. regularnym Code Review czy automatycznymi testami), pomagają utrzymać projekt w ryzach, eliminować zadłużenie u podstaw i nie dopuszczać do jego kumulacji.
Średnie zadłużenie wymaga już dokładniejszego planowania i pracowania nad nim w ramach sprintów. Należy zacząć od identyfikacji długu i określenia, jak wpływa on na pracę zespołu developerskiego oraz kluczowe inicjatywy firmy. Na tej podstawie można określić priorytet długu i wycenić jego koszt. Największą przeszkodą w spłacie niewielkiego lub średniego zadłużenia jest niechęć do marnowania godzin pracy developerów, którzy mogliby w tym samym czasie rozwijać oprogramowanie. Dlatego kluczem jest zrozumienie, że dług techniczny musi być traktowany jak każde inne działanie – zaplanowany w sprincie i regularnie spłacany. Nawet jeżeli opóźnia to wprowadzenie jakieś nowej funkcjonalności (w końcu zaciągając go, musimy liczyć się z odsetkami).
Praca nad długiem technicznym pozornie nie przynosi firmie wartości, dlatego często spychana jest na boczny tor. Priorytetem staje się implementacja funkcjonalności, które pociągną za sobą realne wartości (np. napływ nowych klientów). Oszacowanie i wycena długu technicznego pomagają zrozumieć, że spłata zadłużenia również przynosi wymierne korzyści i praca nad nim jest biznesowo uzasadniona.
Duże zadłużenie techniczne to już spory problemem. W idealnym świecie każda firma powinna całkowicie unikać takiej sytuacji, przeciwdziałając zadłużeniu już na poziomie strategicznym.
Należy zacząć od trzech podstawowych zasad:
- Strategia IT musi być tworzona w oparciu o strategię biznesową przedsiębiorstwa. Te dwa elementy nie mogą funkcjonować w oderwaniu od siebie. Każda inicjatywa IT powinnarealizować określony cel biznesowy.
- Prostota systemów, aplikacji i procesów sprawia, że zarządzanie długiem technicznym staje się łatwiejsze. Firmy, które posiadają bardzo złożone produkty i nieustandaryzowane procesy, często gubią się w swoich własnych rozwiązaniach, które przez lata mnożą się i powielają te same zadania.
- Technologia, podobnie jak pracownicy firmy, zyskuje na integracji. Systemy, które funkcjonują w zupełnym oderwaniu od siebie, generują wiele problemów, prowadząc m.in. do braku pełnego oglądu na dane. Wprowadzanie kolejnych rozwiązań, bez uwzględnienia integracji, to proszenie się o kłopoty.
Wiemy jednak, że rzeczywistość nie zawsze wygląda tak różowo i wiele firm mierzy się z poważnym zadłużeniem technicznym. Takiego długu nie da się rozwiązać doraźnym działaniem czy jednym sprintem. Potrzeba tutaj zaangażowania inżynierów oprogramowania, którzy wskażą najbardziej zadłużone obszary, a liderzy zespołów nadadzą działaniom priorytet i sprawnie wplotą spłatę długu technicznego w pracę nad produktem.
Przy poważnym zadłużeniu nie ma jednej skutecznej metody działania. Każdy przypadek wymaga indywidualnej oceny i podjęcia odmiennych czynności. Czasami w ramach codziennych prac, a czasami w ramach działań dodatkowych (np. zatrudnienia nowych osób). Niekiedy dług techniczny wymaga bardziej rewolucyjnego podejścia, choćby przepisania części systemu na nowo, rozbicia monolitycznej architektury rozwiązania czy wprowadzenia nowego systemu, który będzie odpowiadał za integrację poszczególnych procesów.
Pamiętaj, aby uniknąć poważnego zadłużenia technicznego:
- Nie zaciągaj długu w stosunku do kluczowych obszarów i procesów biznesowych. Jeżeli już musisz zaoszczędzić gdzieś czas i pieniądze, niech zadłużenie dotyczy wyłącznie pobocznych tematów i funkcjonalności.
- Przed zaciągnięciem długu technicznego oceń związane z nim ryzyko. Jak duży będzie i jak wpłynie na Twój biznes?
- Jeżeli zaciągasz dług, uzasadnij to biznesowo. Zaplanuj go podobnie, jak każde inne działanie: z góry ustal termin i sposób spłaty.
- Wypracuj w zespole poczucie, że za dług techniczny odpowiedzialni są wszyscy. O zadłużeniu i sposobie jego spłaty powinni wiedzieć nie tylko inżynierowie, architekci, programiści czy testerzy, ale również np. produkt ownerzy, analitycy, kierownicy projektów oraz scrum masterzy.
- Regularnie inwestuj w technologię. Bieżące aktualizacje oprogramowania, chociaż mogą wydawać się drogie i czasochłonne, to odłożone w czasie pociągają za sobą spory dług techniczny, którego spłata będzie dotkliwa.
Dobry proces projektowania, tworzenia, wdrażania i utrzymania oprogramowania na zamówienie, to najlepsza ochrona przed długiem technicznym. Dlatego jeżeli Twoja firma już wpadła w zadłużenie, to na którymś z etapów pracy nad produktem popełnione zostały poważne błędy.
Wszystkim, którzy planują rozpoczęcie pracy z Software Housem (niezależnie czy to Wasz pierwszy projekt, czy macie już doświadczenie) rekomendujemy zapoznanie się z naszym frameworkiem Software as a Journey. W końcu lepiej zapobiegać niż później wychodzić z długów, prawda?
Co stanie się z Twoją firmą, jeżeli będziesz słabo zarządzać długiem technicznym?
- Twoja konkurencyjność zostanie ograniczona,
- Budżety i terminy będą stale przekraczane,
- Wzrośnie liczba błędów,
- Zmniejszy się bezpieczeństwo produktu,
- Cała koncentracja IT skupi się wokół utrzymania systemu,
- Wdrażanie innowacji odejdzie w niepamięć,
- Prace zwolnią, a stres wzrośnie,
- Pracownicy zaczną odchodzić,
- Każda zmiana w kodzie stanie się kosztowna.
I być może z czasem okaże się, że prace nad produktem są zbyt kosztowne – do tego stopnia, że do tej pory prężnie rozwijający się biznes przestanie na siebie zarabiać.