Pierwszego dnia w nowym projekcie dostałem dostęp do Jiry, w której było 1 240 otwartych ticketów, sześć typów zadań o nazwach typu „Zadanie 2” i „Nowa funkcja (kopia)”, a pole „Kryteria akceptacji” istniało w dwóch wariantach - jedno tekstowe, drugie jako załącznik PDF. Confluence wyglądał podobnie: trzy strony „Specyfikacja logowania”, każda z inną datą i inną prawdą. To nie był projekt zarządzany narzędziem. To był projekt, w którym narzędzie udawało, że ktoś nad nim panuje.
Jira i Confluence nie naprawią bałaganu, ale potrafią go bardzo skutecznie utrwalić. Dobrze ustawione - stają się jednym miejscem, w którym wymaganie, dyskusja, decyzja i kod trzymają się za ręce. Źle ustawione - to cyfrowy strych, na który wszyscy coś wrzucają i nikt nie zagląda. W tym artykule pokażę Ci, jak skonfigurować oba narzędzia pod konkretną pracę analityka: nie „ogólnie dobrze”, tylko tak, żeby deweloper, tester i product owner czytali to samo i rozumieli tak samo. Wszystko na jednym przykładzie - fikcyjnej firmie MediFlow, która buduje system rezerwacji wizyt dla przychodni.
Jira dla analityka - to nie jest bug tracker
Większości ludzi Jira kojarzy się z miejscem, gdzie zgłasza się błędy. To prawda historyczna - narzędzie wyrosło z bug trackingu - ale dla analityka to dramatyczne niedoszacowanie. Jira jest miejscem, w którym żyje backlog: tu wymaganie zamienia się w historyjkę, historyjka dostaje kryteria akceptacji, a tester podpina przypadki testowe. Jeśli prowadzisz to gdzie indziej (Excel, maile, głowa), tracisz jedyną przewagę narzędzia - powiązania. Gdzie ta para stoi na tle reszty warsztatu i czego naprawdę warto się uczyć, porównuję w przeglądzie narzędzi analityka biznesowego.
Typy zadań - zacznij od hierarchii, nie od ozdóbek
Domyślnie masz Epic, Story, Task, Bug, Sub-task. Dla 90% projektów to wystarczy i radzę nie mnożyć bytów. W MediFlow ustawiliśmy tak:
- Epic - duży obszar wartości, np. „Rezerwacja wizyty online”. Trwa tygodnie, spina kilkanaście historyjek.
- Story - pojedyncza potrzeba użytkownika, np. „Pacjent rezerwuje wizytę w wolnym terminie”. Mieści się w jednym sprincie.
- Task - praca, która nie jest historyjką użytkownika (migracja danych, konfiguracja środowiska, research).
- Bug - odstępstwo od działającej funkcji.
- Sub-task - rozbicie historyjki na kroki techniczne (frontend, backend, testy).
Pokusa, żeby stworzyć typ „Wymaganie”, „Integracja z NFZ”, „Dług techniczny” jest silna - i prawie zawsze błędna. Im więcej typów, tym trudniej filtrować i raportować. Specyfikę pokaż etykietą (label) lub komponentem, nie nowym typem. „Integracja z NFZ” to świetny komponent. Jako typ zadania psuje Ci wszystkie wykresy.
Pola własne - mniej znaczy więcej
To tu analitycy najczęściej przesadzają. Widziałem historyjki z 22 polami, z których 18 było zawsze puste. Każde pole, którego nie wypełniasz konsekwentnie, to szum, który uczy zespół ignorować formularz. W MediFlow zostawiliśmy cztery pola własne dla Story:
- Kryteria akceptacji - tekstowe, w formacie Given-When-Then (o tym za chwilę).
- Źródło wymagania - kto/co je zgłosił (warsztat z 12.03, regulacja RODO, ticket supportu #4502). Bezcenne przy pytaniu „skąd to się wzięło?”.
- Wpływ na dane osobowe - tak/nie. W systemie medycznym to nie ozdoba, to wyzwalacz osobnej ścieżki review.
- Definition of Ready - checkbox potwierdzający, że historyjka jest gotowa do sprintu.
Zasada, którą stosuję od lat: jeśli pole nie zmienia niczyjej decyzji, nie powinno istnieć. Pole istnieje po to, żeby ktoś coś z nim zrobił - przefiltrował, posortował, podjął decyzję. Pole „dla porządku” to pole do usunięcia.
Workflow - odwzoruj rzeczywistość, nie ideał
Domyślny workflow To Do → In Progress → Done jest kuszący w swojej prostocie, ale dla analityka zwykle za płaski. W MediFlow historyjka przechodziła: Backlog → Doprecyzowanie → Gotowe do sprintu → W realizacji → W testach → UAT → Done. Najważniejszy był status Doprecyzowanie - to tam siedziały historyjki, które product owner chciał „już”, ale które nie miały jeszcze kryteriów akceptacji. Bez tego statusu takie historyjki wpadały prosto do sprintu i wybuchały w połowie.
JQL - supermoc, której większość analityków nie używa
Jira Query Language to różnica między „klikam po tablicy i szukam” a „mam odpowiedź w trzy sekundy”. Kilka zapytań, które ratują tydzień:
-- Historyjki w moim projekcie bez kryteriów akceptacji (dziura w gotowości):
project = MEDIFLOW AND issuetype = Story AND "Kryteria akceptacji" IS EMPTY AND status != Done
-- Co utknęło w "Doprecyzowanie" dłużej niż 5 dni:
project = MEDIFLOW AND status = "Doprecyzowanie" AND status CHANGED TO "Doprecyzowanie" BEFORE -5d
-- Wszystko dotykające danych osobowych w bieżącym sprincie:
project = MEDIFLOW AND "Wpływ na dane osobowe" = Tak AND sprint in openSprints()
Pierwsze zapytanie zrób sobie zapisanym filtrem i podepnij na dashboardzie. To Twój radar gotowości backlogu - pokazuje dokładnie te historyjki, które bez dopracowania zepsują najbliższy sprint.
Confluence - baza wiedzy, nie cmentarz dokumentów
Confluence ma jedną fundamentalną wadę: pozwala tworzyć strony szybciej, niż ktokolwiek je czyta. Po roku projekt ma 400 stron, z których 60 jest aktualnych, a reszta to archeologia. Sztuka polega na tym, żeby Confluence był miejscem jednej prawdy, a nie warstwowym osadem decyzji.
Struktura przestrzeni - płasko i przewidywalnie
Najlepsza struktura to taka, w której nowa osoba w zespole znajduje dokument bez pytania. W MediFlow trzymaliśmy się czterech sekcji najwyższego poziomu:
| Sekcja | Co tam jest | Kto właściciel |
|---|---|---|
| Wymagania | Specyfikacje funkcji, reguły biznesowe, słownik pojęć | Analityk |
| Decyzje | Rejestr decyzji (ADR) - co, dlaczego, kiedy, kto | Analityk / PO |
| Spotkania | Notatki z warsztatów i wywiadów, action items | Facylitator |
| Architektura | Diagramy, integracje, modele danych | Tech lead |
Sekcja „Decyzje” to ta, której większość zespołów nie ma - i bardzo żałuje. Gdy pół roku później ktoś pyta „dlaczego rezerwacja blokuje termin na 15 minut, a nie na 5?”, odpowiedź jest jedną stroną, a nie godziną archeologii w Slacku.
Szablony - ustandaryzuj to, co powtarzalne
Każdy powtarzalny dokument powinien mieć szablon. Nie po to, żeby było ładnie, tylko żeby nikt nie zapomniał o sekcji, której brak boli dopiero na produkcji. Minimalny szablon specyfikacji funkcji w MediFlow:
- Cel biznesowy - po co to robimy, jaką metrykę poprawia.
- Zakres i poza zakresem - równie ważne jest to, czego NIE robimy.
- Reguły biznesowe - ponumerowane, każda testowalna.
- Przepływ - diagram BPMN (draw.io osadzony na stronie).
- Wymagania niefunkcjonalne - wydajność, bezpieczeństwo, dostępność.
- Otwarte pytania - sekcja, która ratuje życie. Co jeszcze nie jest ustalone.
Połącz Confluence z Jirą - przestań kopiować
Największy grzech to opisywać tę samą funkcję w dwóch miejscach. W specyfikacji w Confluence osadź makro Jira Issues, które na żywo pokazuje powiązane historyjki i ich status. W historyjce w Jirze wstaw link do strony Confluence. Wtedy specyfikacja to „dlaczego i co”, a Jira to „co konkretnie i w jakim stanie”. Żadnego dublowania, żadnej rozjeżdżającej się prawdy.
Automatyzacje, które oszczędzają godziny
Jira ma wbudowany silnik reguł automatyzacji (Automation), z którego analitycy korzystają zaskakująco rzadko. Kilka reguł, które ustawiłem w MediFlow i które płaciły same za siebie co tydzień:
- Gdy historyjka wchodzi w status „Gotowe do sprintu” bez kryteriów akceptacji → automatyczny komentarz pingujący mnie i cofnięcie do „Doprecyzowanie”. Bramka, która nie przepuszcza półproduktów.
- Gdy historyjka dotyka danych osobowych (pole = Tak) → automatyczne dodanie etykiety „rodo-review” i przypisanie do listy kontrolnej. Nic nie umyka pod radarem regulacji.
- Gdy bug ma priorytet „Blokujący” → powiadomienie na kanale zespołu i podbicie na górę tablicy. Pożar widać od razu, nie po dniu.
To nie jest „dla zaawansowanych”. Reguły konfiguruje się klikając, bez kodu, w 10 minut. Każda z nich eliminuje powtarzalną czynność, którą inaczej musiałbyś robić ręcznie - a ręcznie znaczy „czasem zapomnisz”.
Confluence: makra, które robią różnicę
Poza osadzaniem zadań Jiry kilka makr Confluence realnie ułatwia życie analitykowi:
- Table of Contents - automatyczny spis treści na długiej specyfikacji. Czytelnik skacze do sekcji, której szuka, zamiast scrollować.
- Status - kolorowa plakietka („W TRAKCIE”, „ZATWIERDZONE”, „NIEAKTUALNE”) na górze strony. Jeden rzut oka mówi, czy dokumentowi można ufać.
- Excerpt / Include - definiujesz pojęcie raz (np. „no-show”) i wstawiasz je w wielu miejscach. Zmiana w jednym miejscu propaguje wszędzie. Koniec z rozjeżdżającymi się definicjami.
- Decision - sformatowany wpis decyzji z datą i uzasadnieniem. Buduje rejestr decyzji bez ręcznego formatowania.
Przykład end-to-end: MediFlow rezerwuje wizytę
Zobaczmy, jak jedno wymaganie przechodzi przez oba narzędzia. Product owner mówi: „Pacjent ma móc zarezerwować wizytę online”. To jeszcze nie jest nic, co da się zaprogramować.
Confluence: Powstaje strona „Rezerwacja wizyty online” w sekcji Wymagania. Analityk opisuje cel (odciążyć rejestrację telefoniczną o 30% w 6 miesięcy), reguły (np. „nie można zarezerwować terminu krótszego niż 24h od teraz”), osadza diagram BPMN przepływu i listuje otwarte pytania („czy pacjent bez konta może rezerwować?”).
Jira: Powstaje Epic „Rezerwacja wizyty online” z linkiem do strony Confluence. Pod nim historyjka:
Jako pacjent przychodni
chcę zarezerwować wizytę w wolnym terminie
aby nie musieć dzwonić do rejestracji w godzinach pracy
Kryteria akceptacji (Given-When-Then):
Given: jestem zalogowany i wybrałem lekarza
When: klikam wolny termin co najmniej 24h w przyszłości
Then: termin zostaje zablokowany na 15 minut na czas finalizacji
And: dostaję e-mail z potwierdzeniem po finalizacji
Tester podpina przypadki testowe pod tę historyjkę. Deweloper rozbija ją na sub-taski. Gdy ktoś za pół roku zapyta „dlaczego 15 minut blokady?”, otwiera rejestr decyzji w Confluence i znajduje: „blokada 15 min - decyzja z 14.03, bo średni czas finalizacji to 6 min, dajemy bufor 2,5x”. To jest cała wartość tej pary narzędzi - kontekst nie wyparowuje.
Definition of Ready i Definition of Done - bramki, które ratują sprinty
Dwa najprostsze, a najbardziej niedoceniane narzędzia w Jirze to nie funkcje, tylko uzgodnienia zespołu, które egzekwujesz statusami i checklistami.
Definition of Ready (DoR) mówi, kiedy historyjka jest gotowa, by wejść do sprintu. W MediFlow DoR brzmiało: historyjka ma opis, ma kryteria akceptacji w Given-When-Then, ma oszacowanie, nie ma otwartych blokujących pytań, jest powiązana z epikiem. Historyjka, która nie spełnia DoR, zostaje w statusie „Doprecyzowanie” - nie wpada do sprintu, gdzie wybuchłaby w środę.
Definition of Done (DoD) mówi, kiedy historyjka jest naprawdę skończona. Nie „działa u mnie”, tylko: kod zmergowany, testy przechodzą, kryteria akceptacji zaliczone, dokumentacja zaktualizowana. Bez DoD „zrobione” znaczy co innego dla każdej osoby w zespole - a to droga do dziur na produkcji.
Obie definicje zapisz na stronie Confluence i podlinkuj w opisie projektu Jiry. To nie ma być folklor ustny, który zna połowa zespołu.
Dashboard analityka - radar w jednym ekranie
Jira pozwala zbudować dashboard z gadżetów opartych na zapisanych filtrach. Mój domyślny zestaw dla analityka:
- Historyjki bez kryteriów akceptacji - radar gotowości backlogu (filtr JQL z wcześniejszej sekcji).
- Utknięte w „Doprecyzowanie” > 5 dni - co wymaga mojej interwencji.
- Otwarte pytania / blokery - historyjki z flagą lub etykietą „blocked”.
- Nadchodzący sprint dotykający danych osobowych - co wymaga review pod RODO.
Cztery gadżety i poranny rzut oka zamiast półgodzinnego klikania po tablicy. To różnica między analitykiem, który reaguje na pożary, a takim, który je gasi, zanim wybuchną.
Częste błędy - czego unikać
- Jira jako Excel. Wrzucanie historyjek bez powiązań, bez epików, bez kryteriów. Po miesiącu nikt nie wie, co z czym się łączy.
- Confluence jako Slack. Tworzenie nowej strony zamiast aktualizacji istniejącej. Trzy „prawdy” o logowaniu i nikt nie wie, która obowiązuje.
- Mnożenie pól i typów. 20 pól, z których 16 jest pustych. Formularz, który uczy ludzi go ignorować.
- Brak Definition of Ready. Historyjki wpadają do sprintu bez kryteriów akceptacji i wybuchają w trakcie. Status „Doprecyzowanie” to tani ratunek.
- Dublowanie treści. Ta sama specyfikacja w Jirze i Confluence, rozjeżdżająca się po dwóch tygodniach. Jedno źródło prawdy, reszta linkuje.
- Strony bez właściciela i daty. Dokument, którego nikt nie aktualizuje, jest gorszy niż jego brak - bo ludzie mu wierzą.
FAQ
Jira czy Confluence - co jest ważniejsze dla analityka?
To fałszywy wybór. Confluence trzyma „dlaczego i co” (specyfikacje, decyzje, reguły), Jira trzyma „co konkretnie i w jakim stanie” (historyjki, status, powiązania z testami i kodem). Bez Confluence Twoje wymagania nie mają kontekstu. Bez Jiry nie mają śladu realizacji. Działają razem.
Czy muszę umieć JQL?
Nie musisz, ale to jedna z najlepszych inwestycji 2 godzin w karierze analityka. Pięć zapisanych filtrów (historyjki bez kryteriów, utknięte w doprecyzowaniu, dotykające danych osobowych) zamienia codzienne klikanie po tablicy w gotowe odpowiedzi. Zacznij od kopiowania zapytań z tego artykułu i podmieniania nazwy projektu.
Ile typów zadań powinienem stworzyć?
Tyle, ile daje domyślny zestaw: Epic, Story, Task, Bug, Sub-task. Specyfikę projektu (integracja, dług techniczny, obszar) pokazuj komponentami i etykietami, nie nowymi typami. Każdy dodatkowy typ psuje raporty i wykresy przepływu.
Jak nie utopić się w starych stronach Confluence?
Każda strona ma właściciela i datę przeglądu. Raz na kwartał przegląd: aktualne zostają, nieaktualne archiwizujesz (nie kasujesz - archiwum to też informacja). Płaska struktura czterech sekcji najwyższego poziomu plus konsekwentne szablony robią resztę.
Podsumowanie i następny krok
Jira i Confluence nie są magiczne. Są tak dobre, jak dyscyplina, którą w nie włożysz: jedno źródło prawdy, mało pól ale wypełnianych, historyjki z kryteriami akceptacji, rejestr decyzji. Reszta to konsekwencja stosowania tych samych konwencji przez cały projekt.
Najsłabszym ogniwem tej układanki są zwykle kryteria akceptacji - bo to one przekładają „chcę rezerwować wizytę” na coś, co deweloper i tester rozumieją identycznie. Jeśli Twoje historyjki w Jirze kończą się na jednym zdaniu opisu, zacznij właśnie od nich: przeczytaj jak pisać kryteria akceptacji w formacie Given-When-Then, a potem zajrzyj do poradnika o pisaniu User Stories i BPMN dla początkujących, żeby diagramy w Confluence robiły to, co mają. A jeśli chcesz przećwiczyć cały przepływ wymaganie → historyjka → test na żywo - sprawdź się w darmowym teście wiedzy BA i zobacz, gdzie masz luki.