Intencja: po co w ogóle myśleć o trunk based development?
Jeśli szukasz odpowiedzi, czy trunk based development ma sens w polskim zespole, zwykle chodzi o jedno z trzech: skrócenie czasu od commitu do produkcji, zmniejszenie bólu merge’ów albo lepsze wykorzystanie pipeline’ów CI/CD. Pytanie pomocnicze: jaki masz cel – szybciej dowozić, mniej psuć, czy lepiej ogarniać chaos gałęzi?
Dopiero gdy jasno określisz intencję, możesz uczciwie ocenić, czy trunk based development (TDB) jest szansą, czy tylko kolejnym buzzwordem. TDB nie jest magicznym przełącznikiem, który „naprawia procesy”, ale wymusza pewne praktyki, których i tak potrzebujesz przy DevOps i continuous integration.
Czym jest trunk based development – definicja, mitologia i realia
Trunk based development w jednym zdaniu
Trunk based development to strategia pracy z repozytorium, w której zdecydowana większość pracy odbywa się na jednym głównym branchu (trunk), a ewentualne gałęzie są bardzo krótkotrwałe – zwykle żyją godziny lub pojedyncze dni, a nie tygodnie.
Programiści integrują zmiany z trunkiem często, małymi porcjami, zamiast trzymać duże feature branche tygodniami. Continuous integration ma wtedy realne znaczenie: trunk jest stale budowany, testowany i z założenia utrzymywany w stanie nadającym się do releasu.
Trunk a „chaotyczny commit na mastera” – kluczowa różnica
W wielu zespołach hasło „commit na mastera” kojarzy się z chaosem: brak testów, brak review, niespodziewane regresje. TDB bywa niesłusznie wrzucane do tego samego worka. Różnica jest zasadnicza:
- Chaotyczny commit na mastera – każdy robi, co chce; brak zasad; brak automatycznych testów; build często jest czerwony; „naprawimy na produkcji”.
- Trunk based development – ścisłe reguły: małe zmiany, częste integrowanie, automatyczne testy w CI, reguła „trunk zawsze w stanie releasowalnym”, jasne zasady review i rollbacku.
Trunk based development to zdyscyplinowany sposób pracy z jednym głównym branchem, nie dowolność. Jeśli dziś commit na mastera jest u was synonimem „ryzyka”, TDB wymaga najpierw zbudowania zabezpieczeń: testów, pipeline’ów, code review.
Jak trunk based development wpisuje się w DevOps i continuous integration
DevOps zakłada, że zespół developmentu i operacji działa jak jedno ciało: szybkie, przewidywalne dowożenie wartości na produkcję, dużo automatyzacji, mało ręcznej koordynacji. Continuous integration (CI) z kolei mówi: integruj zmiany często, automatycznie je waliduj.
TDB jest bardzo spójny z tym podejściem:
- zmiany lądują w jednym miejscu – trunku – więc CI ma jasny punkt startowy,
- częste, małe commity pozwalają szybko wykryć, która zmiana coś zepsuła,
- brak długich feature branchy oznacza mniej konfliktów, mniej „niespodzianek” przy scalaniu,
- release’y można w dużej mierze zautomatyzować – trunk jest zawsze „blisko produkcji”.
Pytanie do ciebie: czy CI w twoim zespole faktycznie integruje kod często, czy tylko buduje rzadkie, ogromne branche? Jeśli to drugie, TDB może być naturalnym krokiem, żeby continuous integration stało się realne, a nie tylko z nazwy.
Czego TDB naprawdę chce – tempo, jakość czy mniejszy koszt merge’y?
Celem trunk based development jest połączenie trzech aspektów, które zwykle stoją ze sobą w konflikcie:
- Tempo – częste, małe releasy zamiast wielkich, ryzykownych wdrożeń raz na kwartał.
- Jakość – szybka detekcja błędów przez CI, feature toggles, krótkie cykle feedbacku.
- Niski koszt integracji – mniej bolesnych merge’y, mniej „code freezes”, mniej dni spędzonych na naprawie konfliktów.
W praktyce TDB wymusza pewien styl pracy: rozbijanie zadań na małe kroki, inwestycję w automatyzację i odwagę do częstych, ale bezpiecznych deployów. Nie chodzi o to, aby wszystko było „na produkcji na żywo” od razu, ale by kod w trunku zawsze nadawał się do wypuszczenia, nawet jeśli część funkcji jest ukryta za feature toggle.
Dlaczego temat trunk based development wraca w rozmowach o DevOps i CICD
Trunk based development a pipeline CI – co się zmienia?
Wiele polskich zespołów ma już pipeline’y CI/CD – Jenkins, GitLab CI, GitHub Actions, Azure Pipelines. Problem pojawia się, gdy pipeline’y służą głównie do budowania rozbudowanych feature branchy, które żyją tygodniami. Wtedy CI działa, ale nie rozwiązuje kluczowego problemu: późnej integracji.
Trunk based development zmienia perspektywę:
- CI buduje przede wszystkim trunk – centralny branch,
- feature branche są krótkotrwałe, więc pipeline’y dla branchy są prostsze,
- główne reguły jakości wiążą się z trunk – np. „merge tylko, jeśli build i testy zielone”.
Pipeline’y przestają być ozdobą, a stają się bramką jakości dla każdej zmiany. Zastanów się: ile czasu mija dziś między pushem a pełnym zestawem testów na CI? Jeśli to godziny, warto to skrócić; przy TDB zamknięcie pętli feedbacku do kilkunastu minut robi ogromną różnicę.
Trunk jako centralne źródło prawdy w systemie CICD
W wielu organizacjach prawdą jest nie tyle kod, ile „tablica w Jirze” albo „arkusz z wersjami”. W modelu TDB trunk staje się jednym źródłem prawdy o tym, co faktycznie jest gotowe i przetestowane. Release’y bazują na trunku, a nie na losowych branchach o niejasnym statusie.
To upraszcza:
- zarządzanie wersjami – wydajesz konkretny commit z trunku,
- debugowanie – jeśli coś działało w commit X, a przestało w Y, porównujesz tylko te dwa punkty,
- compliance – łatwiej pokazać audytorom historiię zmian w jednym, głównym branchu.
Centralność trunku w CICD wzmacnia też kulturę zespołu: wszyscy patrzą na ten sam wskaźnik – czy trunk jest zielony? Jeśli build się sypie, to problem całego zespołu, a nie jednego programisty „od feature’a”.
Prostsze release’y niż w rozbudowanym GitFlow
GitFlow przez lata był domyślną odpowiedzią na pytanie „jak pracować z Git?”. Dla wielu projektów stał się jednak barierą: dużo branchy, skomplikowana synchronizacja develop/release/hotfix, manualne cherry-picki. W kontekście DevOps i ciągłych wdrożeń ten model bywa zwyczajnie za ciężki.
Trunk based development pozwala znacznie uprościć proces wydawania:
- release zwykle powstaje jako tag (lub krótka release branch) z trunku,
- hotfix może być zwykłym commit’em do trunku wypuszczonym jako nowy tag,
- nie ma długotrwałych gałęzi release’owych utrzymywanych miesiącami.
Co jest dziś u ciebie standardem: release raz na sprint, raz na miesiąc, raz na kwartał? Jeśli musisz prowadzić skomplikowaną „ceremonię releasową”, TDB może zredukować liczbę kroków i ilość ręcznej koordynacji.
Jaki masz dziś cykl od commitu do produkcji?
Dobre pytanie diagnostyczne przed rozmową o TDB brzmi: ile średnio trwa droga od commitu do produkcji? Godziny, dni, tygodnie?
- Jeśli godziny – jesteś już blisko praktyk TDB, może używasz innego modelu branchy, ale styl pracy jest podobny.
- Jeśli dni – jest przestrzeń na skrócenie cyklu przez uproszczenie strategii gałęzi.
- Jeśli tygodnie lub więcej – trunk based development będzie dużą zmianą kulturową, ale właśnie w takich miejscach robi największą różnicę.
Sam TDB nie skróci cyklu, jeśli nie pójdzie za nim automatyzacja, feature toggles i zmiana sposobu dzielenia pracy. Ale bez TDB trudno jest zejść z releasami do dni czy godzin – długie, odseparowane branche zawsze będą z tym walczyć.

Trunk based development kontra popularne strategie gałęzi
GitFlow, GitHub Flow, release branches – krótkie przypomnienie
Żeby uczciwie ocenić trunk based development, dobrze mieć w głowie główne alternatywy:
- GitFlow – osobne branche: master/main (produkcja), develop (bieżący rozwój), feature/*, release/*, hotfix/*; dużo ceremonii, dobrze działało w modelu rzadkich wydań.
- GitHub Flow – prostszy: main + krótkie feature branche; merge przez PR; brak stałych release branches.
- Release branches – często w korporacjach: na każdą większą wersję tworzony jest branch; rozwój idzie dalej na develop/main, a fixy bywają cherry-pickowane.
Trunk based development jest bliski GitHub Flow, ale idzie krok dalej w kierunku jeszcze krótszego życia branchy i mocniejszego nacisku na jedno miejsce prawdy (trunk) i ciągłą releasowalność.
Kiedy GitFlow naprawdę pomaga, a kiedy głównie spowalnia
Są sytuacje, gdzie GitFlow broni się nadal:
- oprogramowanie dla klientów on-prem, gdzie release’y są rzadkie,
- projekty z długimi cyklami certyfikacji (np. hardware + embedded),
- systemy, gdzie trzeba przez długi czas utrzymywać wiele aktywnych gałęzi wersji.
Jednak w realiach częstych wdrożeń, SaaS, mikroserwisów i DevOps GitFlow potrafi mocno spowolnić:
- długa ścieżka: feature → develop → release → master,
- wysoka szansa konfliktów między release a develop,
- dużo manualnych merge’y i cherry-picków.
Pytanie: używacie dziś GitFlow, bo go potrzebujecie, czy „bo tak się nauczyliście”? Jeśli release’y są częste, a większość pracy i tak dzieje się na develop, to trunk based development może uprościć życie – trunk staje się „nowym developem”, ale bez permanentnej separacji od produkcji.
Jakie problemy TDB rozwiązuje: hotfixy, długie branche, regresje
Trunk based development celuje w trzy typowe bolączki:
- Długie feature branche – jeśli branch żyje tygodniami, zawsze kończy się bólem przy merge’u. TDB naciska: „scalaj codziennie, maks kilka dni”.
- Hotfixy – zamiast osobnych ścieżek, hotfix jest zwykle małym commitem do trunku + szybki release; kod jest zawsze świeży, więc ryzyko integracyjne mniejsze.
- Regresje – małe, częste zmiany ułatwiają wskazanie, który commit popsuł funkcję; krótkie cykle pozwalają szybko cofnąć konkretną zmianę.
W praktyce polskich zespołów duży zysk pojawia się tam, gdzie feature branche są „nieśmiertelne” – programiści trzymają je długo, bo boją się konfliktów. TDB odwraca logikę: zmień sposób pracy tak, żeby konfliktów prawie nie było, a nie naucz się lepiej je rozwiązywać.
Kiedy trunk based development ma największy sens
TDB szczególnie dobrze sprawdza się w typach projektów, gdzie:
- produkt jest rozwijany ciągle (SaaS, platformy B2B/B2C),
- zespół ma wpływ na częstotliwość wydań,
- jest ambicja, by wejść na poziom „deploy kilka razy w tygodniu lub dziennie”.
Dobrze dogaduje się z:
- mikroserwisami – każdy serwis może mieć własny trunk i własne tempo releasów,
- produktami mobilnymi z backendem – backend może wdrażać często, a klienta wypuszczać w rytmie sklepów.
Gorzej wygląda w sytuacjach:
- projekty jednorazowe, fixed price, gdzie i tak wydajesz rzadko,
- systemy z bardzo ciężkimi testami manualnymi wymaganymi przez regulacje (choć i tam można z TDB wycisnąć skrócenie cykli integracji).
Jak wygląda twój kontekst: produkt rozwijany latami, czy projekt na 6 miesięcy i koniec? Trunk based development ma najwięcej sensu przy długofalowej pracy nad jednym systemem.
Warunki brzegowe: kiedy polski zespół jest gotowy na trunk based development
Minimalne wymagania techniczne
TDB nie jest dla zespołu, który nie ma żadnych testów automatycznych i jednego wspólnego serwera „testowego”, na którym wszystko sprawdza manualnie QA. Żeby trunk based development miał sens, trzeba spełnić kilka warunków technicznych:
- Podstawowe testy automatyczne – jednostkowe i choć trochę integracyjnych; bez tego trudniej utrzymać trunk w stanie releasowalnym.
- Stabilny pipeline CI – przy każdym pushu (przynajmniej do trunku) uruchamiany jest build i zestaw testów.
Infrastruktura pod szybkie i częste wdrożenia
Nawet najlepsza dyscyplina developerska nie wystarczy, jeśli infrastruktura hamuje zmiany. Trunk based development pokazuje swoje plusy dopiero wtedy, gdy wdrożenie nie jest „wydarzeniem”, tylko normalną czynnością.
Sprawdź, jak jest u ciebie dzisiaj:
- czy produkcję da się wdrożyć w pełni automatycznie z pipeline’u, bez ręcznego klepania komend na serwerze,
- czy stage/test/uat są tworzone i odświeżane w powtarzalny sposób (np. jako infrastruktura jako kod),
- czy rollback jest szybki i przewidywalny (np. blue-green, canary, wersjonowane deploymenty).
Jeśli dziś deploy oznacza „telefon do admina” albo „wieczorne okienko w niedzielę”, trunk based development najpierw obnaży te problemy, a dopiero później je rozwiąże. Czasem to dobrze – pytanie, czy zespół i organizacja są na to gotowe.
Gotowość zespołu: samodzielność i odpowiedzialność za produkcję
Na poziomie ludzi TDB wymaga przesunięcia odpowiedzialności za jakość na zespół developerski, a nie tylko na QA czy zespół wdrożeniowy. Programiści muszą zaakceptować, że:
- ich zmiany mogą trafić na produkcję bardzo szybko,
- jeśli coś zepsują, sami biorą udział w naprawie,
- jakość to nie „głównie testy manualne”, tylko projektowanie pod testowalność.
Jak dziś wygląda twoje podejście: czy zespół boi się produkcji, czy ją zna i rozumie? Jeżeli każdy incydent kończy się „winą admina” albo „błędem testera”, trunk based development bez zmiany mentalności skończy się frustracją.
Wsparcie od biznesu i managementu
TDB to także decyzja organizacyjna. Menedżerowie muszą zgodzić się na kilka konsekwencji:
- priorytet dla automatyzacji i jakości nad „szybkim dorzuceniem featurów”,
- więcej mniejszych wydań zamiast wielkich „big bangów”,
- częstsze, ale mniejsze zmiany na produkcji – co oznacza też inną komunikację z klientami.
Zapytaj swojego product ownera: czy woli jedną dużą paczkę zmian raz w miesiącu, czy pięć małych w ciągu miesiąca? Od odpowiedzi często zależy, czy trunk based development znajdzie wsparcie, czy spotka się z oporem typu „za często coś zmieniacie, klienci się gubią”.
Jak wygląda dzień pracy w zespole stosującym TDB
Planowanie pracy na małe, releasowalne kroki
Podstawowa zmiana: feature nie musi być w 100% ukończony, żeby trafił do trunku. Ukończony musi być krok, który:
- nie psuje istniejącej funkcjonalności,
- może być ukryty za feature togglem, jeśli jest „w połowie”,
- dodaje jakąś jasno zdefiniowaną część wartości (np. tylko backend, tylko model danych, tylko UI bez podpięcia).
Na poziomie sprintu planowanie wygląda bardziej jak układanie „klocków Lego” niż dużych bloków. Zamiast jednego zadania „nowy koszyk zakupowy” masz kilka: model danych, endpointy API, podstawowe UI, dodatkowe walidacje itd. Każdy kawałek może żyć osobno w trunku.
Poranny start: aktualizacja, małe zadanie, szybki merge
Dzień w zespole TDB często zaczyna się od kilku prostych kroków:
- pobranie najnowszego trunku i szybkie odpalenie testów lokalnie,
- przegląd tablicy zadań pod kątem „co mogę skończyć i zmergować dziś”,
- wybranie jednego, konkretnego kroku zamiast rozgrzebywania trzech tematów naraz.
Zasadą staje się: „najpierw zamknij coś małego, dopiero potem bierz kolejne”. To zmienia dynamikę: mniej „work in progress”, więcej ukończonych commitów w trunku.
Praca z krótkimi branchami lub bez branchy
W praktyce w wielu polskich zespołach TDB oznacza:
- krótkie branche żyjące godziny lub maksymalnie 1–2 dni,
- często tylko jedną, dwie osoby na branchu,
- merge do trunku po przejściu testów i code review.
Niektórzy idą dalej i pracują bez branchy, komitując bezpośrednio do trunku z małymi krokami i pair programmingiem. To jednak zwykle kolejny etap dojrzewania, nie punkt startowy.
Code review jako stały rytm dnia
Przy krótkich branchach code review staje się szybkie: kilka–kilkanaście linijek, jedna konkretną zmiana. Dzięki temu:
- feedback dostajesz w ciągu godzin, a nie dni,
- łatwiej „wejść w kontekst” pull requestu, bo jest wąski,
- review może wykonać każdy z zespołu – nie trzeba eksperta „od wielkich refaktorów”.
Zapytaj swój zespół: ile dziś średnio czeka PR na review? If odpowiedź to „dwa dni”, TDB będzie wymagał przeorganizowania priorytetów – przeglądanie zmian innych osób staje się równie ważne jak pisanie swojego kodu.
Stała obserwowalność trunku
W ciągu dnia zespół regularnie patrzy na stan trunku:
- dashboard CI/CD pokazujący, czy build jest zielony,
- proste powiadomienia (Slack, Teams) o padniętych testach,
- progi jakości (np. coverage poniżej X blokuje merge).
Pojawia się nawyk: „czy mogę teraz bezpiecznie zmergować swoją zmianę, czy najpierw trzeba naprawić trunk?”. Jeśli pipeline jest czerwony, cała uwaga idzie w stronę naprawy, nawet kosztem indywidualnych zadań.

Kluczowe praktyki wspierające TDB: feature toggles, testy, CI i code review
Feature toggles jako podstawowy „bezpiecznik”
Bez feature toggli trunk based development bardzo szybko wchodzi na minę: nieukończone funkcje przeciekają na produkcję. Dlatego toggli używa się szeroko:
- do ukrywania większych zmian UI,
- do stopniowego włączania nowego algorytmu tylko dla wybranych klientów,
- do szybkiego wyłączenia funkcji bez rollbacku.
Jaki masz dziś stan: czy w kodzie występują jakiekolwiek feature flagi? Jeśli nie – zacznij od prostych, konfigurowalnych przełączników (np. bazujących na configach, bazie danych czy dedykowanym narzędziu typu LaunchDarkly/Unleash), zanim pełną parą wejdziesz w TDB.
Zarządzanie cyklem życia feature toggli
Feature toggle użyty raz i zostawiony na wieczność zamienia się w dług techniczny. Zespół TDB potrzebuje zasad:
- każdy toggle ma właściciela i cel (np. nazwa taska w Jirze),
- po ustabilizowaniu funkcji toggle jest usuwany z kodu,
- co sprint jest przegląd listy flag i decyzja: które sprzątamy.
Bez takiej higieny po kilku miesiącach w kodzie robi się „panel sterowania elektrowni jądrowej”, w którym nikt nie wie, co właściwie jest włączone. W polskich zespołach, zwłaszcza w korporacjach, jest to szczególnie bolesne przy rotacji ludzi.
Testy automatyczne: jakie minimum, żeby trunk był stabilny
Nie chodzi o 100% coverage, lecz o sensowną siatkę bezpieczeństwa. W praktyce:
- testy jednostkowe dla kluczowej logiki biznesowej,
- testy integracyjne obejmujące komunikację z bazą i innymi serwisami,
- kilka krytycznych scenariuszy end-to-end (login, zamówienie, płatność).
Jak dziś testujesz: czy błąd klienta zazwyczaj łapiesz dopiero na produkcji, czy wcześniej? Im więcej rzeczy wychodzi dopiero po deployu, tym trudniej będzie zaufać ciągłemu scalaniu do trunku.
CI jako „strażnik” jakości, nie tylko kompilator
Pipeline CI w TDB ma być szybki, przewidywalny i bezlitosny. Oznacza to kilka decyzji:
- build + fast tests muszą kończyć się w kilkunastu minutach,
- każdy merge do trunku wymaga zielonego pipeline’u (brak wyjątków),
- wszelkie „flake’i” i losowe fail’e są natychmiast eliminowane.
W wielu polskich firmach spotyka się pipeline’y, które „czasem się wywalają, ale wtedy odpalamy jeszcze raz”. W trunk based development takie podejście zabija zaufanie do zielonego trunku – inwestycja w stabilność CI to często pierwszy większy krok.
Code review w warunkach częstych merge’y
Przy TDB review musi być lekkie procesowo, inaczej stanie się wąskim gardłem. Kilka praktycznych trików:
- limit linii na PR (np. do 200–300),
- jasne check-listy (testy, logowanie, bezpieczeństwo),
- zasada: każdy w zespole jest w stanie zreviewować większość zmian, nie ma „monopolistów”.
Zapytaj sam siebie: czy w zespole są osoby, które boją się review cudzych zmian, bo „nie czują tego modułu”? TDB zachęca do poszerzania odpowiedzialności – inaczej trunk stanie się zakładnikiem kilku kluczowych ludzi.
Migracja z GitFlow (lub innego modelu) do trunk based development krok po kroku
Diagnoza stanu obecnego
Zanim cokolwiek zmienisz, warto uczciwie nazwać, jak jest:
- jak długo średnio żyje feature branch,
- ile trwa release od „kod gotowy” do „na produkcji”,
- jak często występują konflikty przy merge’u release/develop,
- jak wygląda stabilność produkcji po dużych wydaniach.
Bez tej diagnozy trudno ocenić, czy po pół roku z TDB coś się poprawiło, czy tylko zmieniły się nazwy gałęzi.
Etap 1: „odchudzenie GitFlow”
Dla wielu zespołów najbardziej realistyczny pierwszy krok to uproszczenie GitFlow, bez natychmiastowego przeskoku na „czysty” trunk. Może to oznaczać:
- rezygnację z długotrwałych gałęzi release,
- skrócenie życia feature branchy (max 3–5 dni),
- redukcję cherry-picków przez częstsze merge’e develop → release.
Celem jest zbliżenie developa do roli trunku: to on ma być zawsze w stanie releasowalnym, a master/main staje się tylko odzwierciedleniem produkcji (np. aktualizowanym tagami).
Etap 2: trunk jako nowy „develop”
Kiedy develop jest już stabilny i releasowalny, kolejnym krokiem bywa:
- przemianowanie developa na main/trunk,
- zrównanie go z linią produkcyjną (tagi z produkcji wskazują commity w trunku),
- porzucenie oddzielnej długotrwałej linii „produkcja vs. rozwój”.
W tym momencie zmienia się też mentalność: każdy commit do trunku potencjalnie może być wydany. Jeżeli jakaś zmiana nie jest gotowa, jest chroniona togglem lub trzymana na krótkim branchu do momentu, gdy ten warunek spełni.
Etap 3: skracanie cykli i eksperymenty z częstymi deployami
Gdy trunk już działa jako główny strumień zmian, pojawia się pytanie: jak często realnie wdrażać? W polskich firmach spotyka się różne scenariusze:
- release co tydzień – dobry kompromis na start,
- deploy co kilka dni – gdy automatyzacja jest mocniejsza,
- kilka deployów dziennie – przy mocnym zaufaniu do pipeline’u i toggli.
Zmiana tempa wdrożeń często wymaga też zmiany na poziomie komunikacji z biznesem i klientami: krótsze release notes, mniej „marketingu releasowego”, bardziej naturalny strumień drobnych usprawnień.
Bezpieczne eksperymentowanie: pilotaż na jednym zespole
W większych organizacjach sensowne jest podejście pilotażowe: jeden zespół eksperymentuje z TDB, reszta pracuje po staremu. Ten zespół:
- dogaduje się z ops/infra na temat częstszych release’ów,
- uzgadnia z biznesem sposób raportowania zmian,
- buduje zestaw dobrych praktyk, które potem można przeszczepić do innych ekip.
Zadaj sobie pytanie: który z twoich zespołów ma największą szansę „udźwignąć” pilotaż TDB? Często najlepszy kandydat to ekipa odpowiedzialna za pojedynczy serwis lub mniejszy produkt, gdzie zależności są ograniczone.
TDB w różnych typach polskich zespołów i organizacji
Software house’y i projekty dla klientów zewnętrznych
W polskich software house’ach często dominuje model: projekt fixed-price, release na końcu, dużo branchy. Trunk based development może tu działać, ale wymaga dopasowania do kontraktów:
Dopasowanie TDB do cyklu życia projektu klienckiego
Z zagranicznym klientem z Londynu czy Berlina często łatwiej rozmawia się o continuous delivery niż z dużym polskim bankiem. Mimo to nawet przy kontrakcie typu fixed-price można wprowadzić trunk based development, jeżeli zmienisz sposób prowadzenia projektu:
- umawiasz się na krótkie iteracje z demo działającego systemu,
- klient akceptuje, że każda iteracja to releasowalny build (nawet jeśli nie jest wdrażany na produkcję),
- commitujesz zmiany do trunku, a na potrzeby klienta wystawiasz oznaczone buildy (tagi, numerowane releasy).
Zadaj sobie pytanie: czy klient naprawdę potrzebuje jednej wielkiej „wersji 1.0 na koniec”, czy raczej poczucia kontroli i możliwości obejrzenia postępu? W software house’ach często problemem jest nie tyle model branchy, co oczekiwania kontraktowe i nawyki account managerów.
Ograniczanie ryzyka „zakładnika” po stronie klienta
Przy TDB klient coraz częściej widzi „żywy” system. To plus, ale daje też pokusę ciągłego dorzucania wymagań. Warto postawić kilka granic:
- feature toggles po stronie klienta – ustalcie wspólnie, które funkcje są widoczne na środowisku UAT, a które dopiero po formalnej akceptacji,
- stabilne punkty rozliczeniowe – co sprint lub milestone ustalasz, które z działających funkcji w trunku wchodzą w zakres fakturowania,
- jasne reguły „freeze” – np. tygodniowe okno przed planowanym go-live, w którym scope nie rośnie, tylko polerujesz to, co już jest.
Zastanów się: czy jesteś w stanie przedstawić TDB klientowi jako narzędzie do zmniejszenia ryzyka, a nie jako „widzimisię programistów”? Dobrze działa pokazanie, że częste małe releasy oznaczają mniej niespodzianek na końcu kontraktu.
Duże korporacje i działy IT z rozbudowaną kontrolą zmian
W polskich korporacjach, szczególnie regulowanych (banki, ubezpieczenia, telco), TDB ściera się z procesem change management: CAB, okna wdrożeniowe, mnóstwo akceptacji. Tutaj trudno „przeskoczyć” wszystko jednym ruchem, ale można zacząć od:
- częstych merge’y do trunku, ale rzadkich, planowanych releasów,
- rozróżnienia: „commit w trunku” ≠ „deploy na produkcję”,
- pilotażu na mniej krytycznych systemach lub wewnętrznych narzędziach.
Główne pytanie: na ile wasz proces change management jest dogmatem, a na ile da się go ominąć lub złagodzić dla mniej krytycznych usług? W wielu polskich organizacjach okazało się, że „nie da się częściej niż raz na miesiąc”, dopóki ktoś nie pokazał konkretnych metryk jakości przy częstszych deployach.
TDB a zespoły rozproszone między Polskę i zagranicę
Polskie zespoły często pracują razem z ekipami z Niemiec, Skandynawii czy USA. Jedni chcą trunk based, drudzy przyzwyczajeni są do GitFlow. W takim układzie problemem staje się nie samo TDB, lecz rozkład odpowiedzialności:
- czy wszyscy commitują do tego samego trunku,
- czy są wspólne zasady code review i feature toggli,
- kto odpowiada za deploy i co oznacza „gotowość do releasu”.
Jeśli dziś masz model „polski zespół od backendu, zagraniczny od frontu”, zapytaj: czy wasze cykle release’owe się zgrywają? TDB wymusza zsynchronizowanie rytmu: niewiele da się ugrać, jeśli backend jest releasowalny codziennie, a frontend co trzy tygodnie.
Zespoły produktowe budujące SaaS-y
W polskich firmach produktowych (SaaS B2B, platformy e-commerce, narzędzia dla developerów) trunk based development bywa naturalnym wyborem, szczególnie gdy:
- produkt jest hostowany centralnie (brak instalacji on-prem u klienta),
- zespół ma własny wpływ na roadmapę i nie jest tylko „fabryką ticketów”,
- kultura jest bliższa „startupowi” niż klasycznej korporacji.
W takich miejscach sprawdza się model: trunk + toggles + canary release. Każda większa funkcja trafia na produkcję wcześnie, ale widoczna jest tylko dla wybranych klientów czy nawet wewnętrznych użytkowników. Można wtedy spokojnie testować w prawdziwym środowisku, nie psując życia wszystkim naraz.
Jednoosobowe „zespoły” w dużym systemie
Częsta polska rzeczywistość: „u nas system X ma swojego człowieka i tylko on go ogarnia”. TDB w takim układzie wydaje się prosty („i tak tylko ja commituje do tego repo”), ale prawdziwy problem leży gdzie indziej:
- brak code review,
- brak dzielenia się wiedzą,
- zależność systemu od pojedynczej osoby.
Zastanów się: czy trunk based u singla to realny TDB, czy tylko dowolny commit na mainie? Jeśli chcesz iść w stronę TDB na poważnie, nawet w jednoosobowych zespołach warto zacząć od:
- krótkich branchy i PR-ów z asynchronicznym review (np. przez osobę z sąsiedniego modułu),
- dokumentowania istotnych decyzji architektonicznych przy merge’u,
- stopniowego włączania kolejnych osób w rozwój danego komponentu.
Poziom dojrzałości zespołu a szanse powodzenia TDB
Nie każdy zespół jest w stanie od razu przełknąć trunk based development. Jeśli dopiero uczysz ludzi Gita, merge’y często kończą się revertami, a testy piszesz „jak starczy czasu”, lepiej zrobić krok w tył i zadać kilka pytań:
- czy potraficie bez paniki zrobić rebase i rozwiązać konflikty,
- czy każdy w zespole rozumie, jak działa pipeline CI,
- czy jest minimum kultury testowej – przynajmniej podstawowe testy jednostkowe.
Możesz przyjąć prosty próg: jeśli większość PR-ów w waszym zespole jest gotowa do merge’u w ciągu jednego dnia roboczego, a testy odpalają się automatycznie przy każdym pushu, to fundament pod TDB już jest. Reszta to ewolucja procesu.
Gotowość organizacji: kto musi być „na pokładzie”
Wprowadzając TDB, łatwo skupić się wyłącznie na zespole developerskim i pominąć resztę organizacji. Tymczasem w polskich firmach ważne są jeszcze co najmniej trzy role:
- produkt / biznes – musi zaakceptować ideę częstszych, mniejszych releasów,
- QA – zamiast testowania wielkich release’ów raz na miesiąc, przechodzi na krótkie, powtarzalne sesje przy małych zmianach,
- ops / infrastruktura – wspiera automatyzację deployu i monitoringu.
Zadaj sobie pytanie: kto w twojej firmie jako pierwszy powie „TDB? Nie, bo…”? Zidentyfikowanie przeciwników na starcie pozwala zaprosić ich do projektowania procesu, zamiast stawiać przed faktem dokonanym.
Elementy kontraktu zespołowego przy TDB
Trunk based development działa dobrze tam, gdzie zespół ma nieformalny, ale jasny kontrakt na temat pracy z kodem. Taki kontrakt można spisać w kilku punktach, np. w repozytorium jako CONTRIBUTING.md. Co się w nim pojawia?
- maksymalna długość życia feature brancha (np. 2–3 dni),
- zasada „zielony trunk ważniejszy niż mój task”,
- oczekiwany czas reakcji na prośbę o review (np. w ciągu kilku godzin),
- minimalny poziom testów, który blokuje merge.
Zapytaj zespół: czy byłby w stanie podpisać się pod takim kontraktem? Jeśli odpowiedź jest niepewna („to zależy”), lepiej zacząć od miękkich eksperymentów niż ogłaszać od jutra „pełne TDB”.
Rozwiązywanie konfliktów interesów: szybkość vs. bezpieczeństwo
TDB często jest sprzedawany jako sposób na szybsze dostarczanie. W polskich realiach równie istotne jest jednak bezpieczeństwo: audyty, RODO, wymagania regulatora. Tu pojawia się naturalne napięcie między:
- chęcią szybkich commitów i częstych releasów,
- obawą przed błędami na produkcji i karami finansowymi.
Dobrym podejściem jest pokazanie, że TDB nie jest rezygnacją z bezpieczeństwa, tylko zmianą techniki jego osiągania. Zamiast wielkich, rzadkich releasów o nieprzewidywalnym ryzyku, oferujesz:
- małe paczki zmian łatwe do zrozumienia i przetestowania,
- łatwiejszy rollback lub wyłączenie funkcji przez toggle,
- większą obserwowalność tego, co dzieje się na produkcji.
Pytanie, które warto postawić menedżerom: czy wolicie rzadkie, ale potencjalnie katastrofalne releasy, czy częste i małe kroki, z których każdy jest łatwy do odwrócenia?
Najczęstsze obawy developerów w polskich zespołach
Sam zespół developerski też ma swoje lęki. W rozmowach z polskimi ekipami pojawiają się szczególnie trzy:
- „Będę musiał commitować niedokończony kod na produkcję” – tu wchodzi w grę mądrze użyty feature toggle i zasada: niewidoczna, nieaktywna funkcja może siedzieć w trunku, o ile nie psuje reszty.
- „Stracę komfort pracy na dużych gałęziach” – komfort dużych branchy jest pozorny; realny komfort daje brak wielkich konfliktów merge i szybszy feedback. Można zacząć od limitu: jedna większa gałąź na raz, ale z obowiązkowym codziennym rebase’em na trunk.
- „Będzie więcej awarii” – przy braku testów i monitoringu to możliwe. Dlatego TDB bez inwestycji w automatyzację i obserwowalność to proszenie się o kłopoty.
Zapytaj siebie i zespół: której z tych obaw najbardziej się boicie? Od niej sensownie zacząć rozmowę – często okazuje się, że można ją adresować konkretną praktyką (toggle, testy, lepszy monitoring), zamiast rezygnować z całego podejścia.
Obawy menedżerów i liderów technicznych
Menedżerowie i tech leadzi w Polsce obawiają się zwykle innych rzeczy niż developerzy. Padają pytania:
- „jak będę raportował postęp, jeśli wszystko płynie jednym strumieniem?”,
- „jak udowodnię, że rozwój jest pod kontrolą, a nie chaosem?”,
- „co powiem biznesowi, gdy usłyszę: kto zatwierdził tę zmianę?”.
W odpowiedzi dobrze mieć gotowe elementy:
- spójne tagowanie commitów i PR-ów numerami zadań (Jira, YouTrack) – łatwe śledzenie, co trafiło do którego releasu,
- prosty, przejrzysty changelog generowany automatycznie na podstawie commitów/PR-ów,
- metryki typu lead time, frequency of deployment, change fail rate – pokazujące, że częstsze releasy nie oznaczają większej liczby awarii.
Pomyśl: czy dziś jesteś w stanie w każdej chwili powiedzieć, co dokładnie jest na produkcji i w jakiej wersji? TDB przy dobrze poukładanych praktykach może to uprościć, zamiast komplikować.
Mity związane z TDB w polskich realiach
W rozmowach o trunk based development często pojawiają się powtarzające się hasła. Warto rozprawić się z kilkoma z nich:
- „TDB = brak branchy” – w praktyce zespoły stosujące TDB korzystają z krótkich branchy feature/bugfix. Różnica polega na ich długości życia i częstotliwości merge’y, a nie na ich całkowitym zakazie.
- „TDB działa tylko w małych startupach” – w Polsce rzeczywiście najłatwiej spotkać TDB w mniejszych produktach, ale nie jest to reguła. Ważniejszy jest poziom automatyzacji i kultury technicznej niż liczba osób w firmie.
- „TDB to tylko praktyka Gitowa” – w rzeczywistości mocno dotyka procesów biznesowych, QA, a nawet sposobu rozliczania pracy z klientem. Na samym poziomie Gita można co najwyżej zbliżyć się do TDB, ale pełny efekt przychodzi dopiero przy zmianie całego strumienia pracy.
- „U nas się nie da, bo mamy legacy” – w polskich firmach niemal każdy system to w jakimś stopniu legacy. TDB może być właśnie narzędziem stopniowej modernizacji: małe, częste zmiany są bezpieczniejsze w starym kodzie niż rzadkie, ogromne refaktoryzacje na bocznych gałęziach.
Zadaj końcowe pytanie diagnostyczne: czy twoje „u nas się nie da” wynika z realnych ograniczeń (regulator, brak automatyzacji, silne zależności), czy raczej z przyzwyczajeń i strachu przed zmianą? Od tej odpowiedzi zależy, czy TDB stanie się realną opcją, czy pozostanie tylko ciekawą teorią z konferencji.
Co warto zapamiętać
- Trunk based development ma sens tylko wtedy, gdy jasno wiesz, czego szukasz: szybszego dowożenia, mniejszej liczby konfliktów przy merge’ach czy lepszego wykorzystania CI/CD – jaki masz cel?
- TDB to praca głównie na jednym branchu (trunku) z bardzo krótkimi gałęziami, częstymi, małymi commitami i zasadą: „trunk zawsze nadaje się do releasu”, nawet jeśli część funkcji jest ukryta za feature togglami.
- Kluczowa różnica między „chaotycznym commitem na mastera” a TDB to dyscyplina: automatyczne testy, jasne zasady code review, szybki rollback i zero tolerancji na czerwony build – masz już takie zabezpieczenia, czy dopiero je budujesz?
- TDB spina się z DevOps i continuous integration, bo wymusza częstą integrację i automatyczną walidację małych zmian; dzięki temu szybciej wiesz, która konkretna zmiana coś zepsuła, zamiast zgadywać w ogromnym feature branchu.
- Główna gra to równoczesne pogodzenie tempa, jakości i niskiego kosztu integracji: krótkie zadania, częste releasy, mniej „code freeze” i mniej dni przepalonych na naprawianie konfliktów – jak dziś wygląda to u was?
- Przy TDB pipeline CI/CD przestaje tylko „budować branche”, a staje się realną bramką jakości: najważniejszy jest trunk, reguła merge’u jest powiązana z zielonym buildem, a feedback z testów powinien wracać w kilkanaście minut, nie w godziny.






