Narzędzia i Procesy

Jak dokumentować decyzje techniczne

Jak dokumentować decyzje techniczne

Dokumentowanie decyzji technicznych to jak prowadzenie dziennika pokładowego w statku kosmicznym – jeśli nie zapiszesz, dlaczego skręciliśie w lewo zamiast w prawo, za pół roku będziesz się zastanawiać, czy to był genialny manewr, czy zwykłe otępienie po nieprzespanej nocy. W skrócie: dokumentuj każdą istotną decyzję, używając spójnego formatu, opisując kontekst, rozważane opcje i ostateczny wybór, aby za rok nie musieć tłumaczyć się przed własnym zespołem z decyzji, które wydawały się wtedy oczywiste.

Dlaczego dokumentowanie decyzji technicznych to nie fanaberia, a konieczność

Pamiętasz tę scenę z filmów akcji, gdzie bohater znajduje tajemniczą notatkę sprzed lat i nagle wszystko zaczyna mieć sens? W świecie tech jest podobnie, tylko zamiast map skarbów mamy ADR-y (Architectural Decision Records). Oto dlaczego warto je tworzyć:

Jak dokumentować decyzje techniczne

  • Pamięć organizacyjna – Ludzie odchodzą, joinują się nowi, a dokumentacja zostaje. Bez niej każdy nowy developer musi odkrywać Amerykę na nowo.
  • Unikanie błędnego koła dyskusji – Ile razy wracaliście do tej samej dyskusji o wyborze bazy danych? Dokumentacja to wasz „been there, done that”.
  • Onboarding na sterydach – Nowy senior dev w zespole? Zamiast tygodni wyjaśnień, daj mu paczkę ADR-ów do przeczytania.
  • Odpowiedzialność – Czarno na białym widać, kto podjął jaką decyzję i dlaczego. Żadnego „to nie ja”.

Jak wygląda dobra dokumentacja decyzji technicznych?

Wyobraź sobie, że piszesz list do przyszłego siebie (tego zmęczonego, zapominalskiego wersji). Co powinien wiedzieć? Oto szkielet, który się sprawdza:

Element Opis Przykład
Tytuł Krótkie, konkretne określenie decyzji „Wybór React zamiast Angular do frontendu”
Status Czy decyzja jest aktualna, przestarzała, zastąpiona? „Active”, „Deprecated”
Kontekst Dlaczego w ogóle podejmujemy tę decyzję? „Obecny stack technologiczny nie pozwala na…”
Rozważane opcje Jakie alternatywy braliśmy pod uwagę? 1. Zostajemy przy obecnym rozwiązaniu 2. Migrujemy do…
Decyzja Co wybraliśmy i dlaczego? „Wybieramy X, ponieważ…”
Konsekwencje Jakie skutki ma ta decyzja? „Będziemy musieli przeszkolić zespół”, „Wzrost kosztów o…”

Narzędzia, które nie przyprawią cię o ból głowy

Nie musisz od razu wdrażać kosmicznie skomplikowanych systemów. Oto kilka opcji dla każdego rozmiaru firmy:

  • Zwykłe pliki markdown w repozytorium – Proste, skuteczne, wersjonowane. Dla małych zespołów często wystarczy.
  • Confluence/Notion – Jeśli i tak z nich korzystacie, dodajcie sekcję z ADR-ami.
  • Dedykowane narzędzia jak ADR Tools – Dla fanów automatyzacji i porządku.
  • Kompromisowe rozwiązanie – Pliki w repozytorium + indeks w Confluence.

Typowe błędy, czyli jak nie dokumentować

Prowadziłem kiedyś projekt, gdzie dokumentacja techniczna wyglądała jak notatki szalonego naukowca – pełne skrótów myślowych, odniesień do nieistniejących już wersji i komentarzy w stylu „oczywiste”. Oto czego unikać:

  • Za mało kontekstu – „Wybraliśmy MongoDB” to nie decyzja, to stwierdzenie faktu. Dlaczego? W jakich okolicznościach?
  • Za dużo szczegółów – 20-stronicowy elaborat o benchmarkach też nie jest rozwiązaniem.
  • Brak aktualizacji statusu – Dokumentacja, która nie mówi, czy decyzja jest jeszcze aktualna, to jak mapa bez legendy.
  • Dokumentowanie wszystkiego – Nie każda decyzja zasługuje na ADR. Wybieraj te strategiczne.

Jak wdrożyć kulturę dokumentowania w zespole?

Większość developerów woli pisać kod niż dokumentację. Oto jak ich do tego przekonać bez grożenia palcem:

  • Zacznij od liderów – Jeśli tech leadzi dokumentują swoje decyzje, reszta pójdzie za przykładem.
  • Wprowadź proste standardy – Jednostronicowy template ADR zwiększy adopcję o 300% (dane z mojego doświadczenia).
  • Włącz w proces code review – Brak ADR dla większych zmian? Blokuj merge do momentu uzupełnienia.
  • Pokazuj korzyści – Gdy ktoś przy wdrożeniu skorzysta z ADR, głośno to pochwal.

Prawdziwa historia z mojego podwórka

W 2019 roku podjęliśmy decyzję o migracji z AWS na GCP. Wszystkie argumenty były spisane w ADR. Dwa lata później nowy CTO zapytał: „A dlaczego nie Azure?”. Zamiast miesięcznej dyskusji, pokazaliśmy mu dokument. Przeczytał, skinął głową i poszliśmy dalej. Koszt zaoszczędzony: około 50 godzin pracy zespołu.

Kiedy dokumentowanie przeszkadza bardziej niż pomaga?

Jak ze wszystkim – można przesadzić. Oto czerwone flagi:

  • Spotkania o dokumentowaniu trwają dłużej niż samo dokumentowanie
  • Nowy developer potrzebuje tygodnia tylko na przeczytanie ADR-ów
  • Zespół spędza więcej czasu na aktualizowaniu statusów niż na kodowaniu
  • Dokumentujecie wybór kawy w biurze (tak, widziałem takie przypadki)

Pamiętaj: dokumentacja ma służyć, a nie rządzić. Jeśli staje się celem samym w sobie, czas na reset.

Podsumowanie: dokumentuj mądrze, nie dużo

Dobrze udokumentowane decyzje techniczne to jak dobra polisa ubezpieczeniowa – płacisz niewiele teraz, aby uniknąć ogromnych kosztów w przyszłości. Ale nikt nie każe ci ubezpieczać się na każdą możliwą okazję. Wybieraj strategiczne decyzje, pisz z myślą o przyszłych czytelnikach i pamiętaj – najlepsza dokumentacja to taka, która rzeczywiście jest czytana.

A na koniec mała zagadka: co jest gorsze niż brak dokumentacji? Dokumentacja, która wprowadza w błąd. Ale to już temat na inny artykuł.