{"id":32862,"date":"2025-12-17T05:00:00","date_gmt":"2025-12-17T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=32862"},"modified":"2025-12-16T16:52:08","modified_gmt":"2025-12-16T15:52:08","slug":"sztuka-dekompozycji-jak-efektywnie-dzielic-prace-w-srodowisku-agile","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/sztuka-dekompozycji-jak-efektywnie-dzielic-prace-w-srodowisku-agile\/","title":{"rendered":"Sztuka dekompozycji: Jak efektywnie dzieli\u0107 prac\u0119 w \u015brodowisku Agile"},"content":{"rendered":"\n<p>W \u015bwiecie z\u0142o\u017conych system\u00f3w IT i zwinnego zarz\u0105dzania projektami, jednym z najcz\u0119stszych wyzwa\u0144, z jakim spotykam si\u0119 od 15 lat, jest <strong>parali\u017c decyzyjny wywo\u0142any zbyt du\u017cym rozmiarem zada\u0144<\/strong>. Zespo\u0142y deweloperskie cz\u0119sto staj\u0105 przed \u201e\u015bcian\u0105\u201d wymaga\u0144, kt\u00f3re wydaj\u0105 si\u0119 niemo\u017cliwe do zrealizowania w jednej iteracji. Efekt? Zaburzony przep\u0142yw (ang. flow), niska przewidywalno\u015b\u0107 i frustracja interesariuszy.<\/p>\n\n\n\n<p>Ponadto, przenoszenie pracy na kolejne iteracje to problemy w planowaniu, estymacji pozosta\u0142ej pracy, generowania raport\u00f3w ze sprintu, czy \u2013 co najwa\u017cniejsze \u2013 mo\u017cliwo\u015bci zademonstrowania post\u0119pu i otrzymania potwierdzenia o w\u0142a\u015bciwym kierunku prac.<\/p>\n\n\n\n<p>Kluczem do rozwi\u0105zania tego problemu jest <strong>umiej\u0119tna dekompozycja<\/strong>. W tym artykule przyjrzymy si\u0119 nie tylko <strong>technikom podzia\u0142u<\/strong>, ale tak\u017ce <strong>fundamentalnym r\u00f3\u017cnicom mi\u0119dzy typami zada\u0144<\/strong> oraz <strong>ryzykom, jakie niesie ze sob\u0105 niew\u0142a\u015bciwe podej\u015bcie <\/strong>do tego procesu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fundamenty: Feature, User Story a Enabler<\/strong><\/h2>\n\n\n\n<p>Zanim przejdziemy do dzielenia, musimy zdefiniowa\u0107, co w\u0142a\u015bciwie dzielimy. W metodologii SAFe (Scaled Agile Framework) i zaawansowanym Agile, rozr\u00f3\u017cnienie typ\u00f3w pracy jest krytyczne dla utrzymania r\u00f3wnowagi mi\u0119dzy dostarczaniem warto\u015bci biznesowej a dba\u0142o\u015bci\u0105 o kondycj\u0119 techniczn\u0105 systemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Feature (Funkcjonalno\u015b\u0107)<\/strong><\/h3>\n\n\n\n<p>Feature to funkcjonalno\u015b\u0107 rozwi\u0105zania, kt\u00f3ra dostarcza wymiern\u0105 warto\u015b\u0107 biznesow\u0105 i zaspokaja potrzeb\u0119 interesariuszy. Jest on zwymiarowany tak, aby m\u00f3g\u0142 zosta\u0107 dostarczony przez jeden Agile Release Train (ART) w ramach jednego Przyrostu Programu\\Interwa\u0142u Planowania (PI). Ka\u017cdy feature powinien zawiera\u0107 hipotez\u0119 korzy\u015bci (ang. benefit hypothesis) oraz kryteria akceptacji.<\/p>\n\n\n\n<p>Bior\u0105c pod uwag\u0119 dodatkow\u0105 niepewno\u015b\u0107 ka\u017cdej implementacji, b\u0142\u0119dem jest planowanie optymistyczne bez zapasu czasu na niespodziewane op\u00f3\u017anienia (kt\u00f3re, b\u0105d\u017amy szczerzy, zaskakuj\u0105 nas zawsze jak przys\u0142owiowa zima wprawiaj\u0105ca w zdziwienie s\u0142u\u017cby drogowe).<\/p>\n\n\n\n<p>Jedna dobra rada dotycz\u0105ca planowania du\u017cych element\u00f3w takich jak Feature\u2019y :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Szykuj si\u0119 na najgorsze, miej nadziej\u0119 na najlepsze.<\/p>\n<\/blockquote>\n\n\n\n<p>Takie podej\u015bcie zmniejszy mo\u017ce oryginalne zobowi\u0105zanie zespo\u0142u, ale zdecydowanie zwi\u0119kszy jego poziom dostarczania, w przypadku, kiedy \u201enajgorsze\u201d si\u0119 nie wydarzy, mo\u017cemy dobra\u0107 dodatkow\u0105 prac\u0119. Warto zauwa\u017cy\u0107 jak mocno zmienia to komunikacj\u0119:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Planowali\u015bmy ostro\u017cnie, dostarczyli\u015bmy wszystko i dodatkowo rozpocz\u0119li\u015bmy prac\u0119 na kolejny PI\u201d vs. \u201ePrawie dowie\u017ali\u015bmy, ale sko\u0144czymy za 3 tygodnie.<\/p>\n<\/blockquote>\n\n\n\n<p>Rozbijanie pracy na mniejsze elementy powinni\u015bmy ju\u017c wi\u0119c zacz\u0105\u0107 na tym etapie w ramach przygotowania do kolejnego planowania PI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>User Story (Historyjka U\u017cytkownika)<\/strong><\/h3>\n\n\n\n<p>To opis zmiany w zachowaniu systemu z perspektywy u\u017cytkownika. User Story jest podstawow\u0105 jednostk\u0105 pracy zespo\u0142u w iteracji. Dobre User Story musi by\u0107 \u201ewertykalnym wycinkiem\u201d (ang. vertical slice) \u2013 oznacza to, \u017ce dotyka wielu warstw architektury (UI, logika, baza danych), aby dostarczy\u0107 obserwowaln\u0105 warto\u015b\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Enabler (Wspomagacz)<\/strong><\/h3>\n\n\n\n<p>Tu cz\u0119sto pojawia si\u0119 konfuzja. Enablery to zadania, kt\u00f3re wspieraj\u0105 eksploracj\u0119, architektur\u0119 lub infrastruktur\u0119. Mog\u0105 nie dotyka\u0107 bezpo\u015brednio u\u017cytkownika ko\u0144cowego, ale s\u0105 niezb\u0119dne do budowania tzw. Pasma Startowego Architektury (ang. Architectural Runway). Enablery toruj\u0105 drog\u0119 dla przysz\u0142ych funkcjonalno\u015bci biznesowych.<\/p>\n\n\n\n<p>Przyk\u0142ady Enabler\u00f3w to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>faktoryzacja,<\/li>\n\n\n\n<li>badania (Spike),<\/li>\n\n\n\n<li>budowa infrastruktury CI\/CD,<\/li>\n\n\n\n<li>weryfikacja jako\u015bci systemu (np. testy wydajno\u015bci).<\/li>\n<\/ul>\n\n\n\n<p>Wa\u017cne jest, aby w Backlogu utrzymywa\u0107 zdrowy balans mi\u0119dzy User Stories (warto\u015b\u0107 dla klienta) a Enablerami (inwestycja w technologi\u0119). Co istotne \u2013 Enablery pojawiaj\u0105 si\u0119 na ka\u017cdym etapie abstrakcji \u2013 od Epik\u00f3w a\u017c do poziomu pojedynczych zada\u0144. <strong>Nale\u017cy pami\u0119ta\u0107<\/strong>, \u017ce w przeciwie\u0144stwie do Features\\User Stories, <strong>inaczej si\u0119 je estymuje<\/strong> (cz\u0119sto time-boxuje), <strong>inaczej definiuje<\/strong> (cz\u0119sto wi\u0119kszy nacisk na NFR, techniczne wymagania) i <strong>inaczej demonstruje<\/strong> (bo trudno pokaza\u0107, \u017ce nasza zmiana jest niewidoczna i po prostu nic nie popsuli\u015bmy).<\/p>\n\n\n\n<p>Pr\u00f3by opisanie Enablers jak User Story cz\u0119sto ko\u0144cz\u0105 si\u0119 dosy\u0107 zabawnie:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Jako silnik, nie chc\u0119 wybuchn\u0105\u0107 po przekroczeniu maksymalnego do\u0142adowania.<\/p>\n<\/blockquote>\n\n\n\n<p>Tak, w\u0142a\u015bnie personifikacja element\u00f3w systemu jest pierwszym objawem tego, \u017ce mamy do czynienia z Enablerem, a nie Feature\\User Story.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/image1-2.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-32863&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:700,&quot;targetHeight&quot;:560,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: Podej\\u015bcie wertykalne i horyzontalne &quot;,&quot;alt&quot;:&quot;Podej\\u015bcie wertykalne i horyzontalne &quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"700\" height=\"560\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image1-2.png\" alt=\"Podej\u015bcie wertykalne i horyzontalne \" class=\"wp-image-32863\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image1-2.png 700w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image1-2-300x240.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: Podej\u015bcie wertykalne i horyzontalne \"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Ryc. 1 Podej\u015bcie wertykalne i horyzontalne<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Zaawansowane techniki dzielenia pracy<\/strong><\/h2>\n\n\n\n<p>Dekompozycja to nie magia, to rzemios\u0142o. Nie ma jednego idealnego sposobu na podzia\u0142 ka\u017cdego Feature&#8217;a , ale istnieje zestaw sprawdzonych wzorc\u00f3w, kt\u00f3re pomagaj\u0105 zespo\u0142om \u201ezje\u015b\u0107 s\u0142onia po kawa\u0142ku\u201d. Poni\u017cej znajdziecie rozwini\u0119cie najwa\u017cniejszych technik.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Kroki w procesie (ang. Workflow Steps)<\/strong><\/h3>\n\n\n\n<p>Wiele funkcjonalno\u015bci biznesowych opisuje pewien przep\u0142yw pracy. Zamiast budowa\u0107 ca\u0142y proces od pocz\u0105tku do ko\u0144ca w jednej iteracji, mo\u017cemy go podzieli\u0107 na poszczeg\u00f3lne kroki.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong> Publikacja zdj\u0119cia w social mediach. Proces sk\u0142ada si\u0119 z: wyboru zdj\u0119cia, edycji, tagowania, dodania lokalizacji, publikacji. Mo\u017cemy stworzy\u0107 osobne User Stories dla samego wyboru i publikacji (MVP), a edycj\u0119 czy tagowanie doda\u0107 jako kolejne historie w nast\u0119pnych iteracjach.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wariacje regu\u0142 biznesowych (ang. Business Rule Variations)<\/strong><\/h3>\n\n\n\n<p>Cz\u0119sto z\u0142o\u017cono\u015b\u0107 zadania wynika z mnogo\u015bci regu\u0142 biznesowych, kt\u00f3re musi obs\u0142u\u017cy\u0107 system.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Zidentyfikuj podstawow\u0105 regu\u0142\u0119 i stw\u00f3rz dla niej histori\u0119. Pozosta\u0142e, bardziej skomplikowane warianty, wydziel do osobnych zada\u0144.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong> System rezerwacji bilet\u00f3w. Pierwsza historia obs\u0142uguje standardowy zakup. Kolejne historie dodaj\u0105 obs\u0142ug\u0119 zni\u017cek studenckich, voucher\u00f3w promocyjnych czy zwrot\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Proste vs. Z\u0142o\u017cone (ang. Simple\/Complex)<\/strong><\/h3>\n\n\n\n<p>Kiedy podczas planowania dyskusja grz\u0119\u017anie w przypadkach brzegowych (\u201ea co je\u015bli&#8230;\u201d), nale\u017cy zada\u0107 pytanie: \u201eJaka jest najprostsza wersja tego rozwi\u0105zania?\u201d.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Zdefiniuj wersj\u0119 podstawow\u0105 (\u201eszkielet\u201d) i zrealizuj j\u0105 jako pierwsz\u0105. Wszystkie komplikacje i udoskonalenia przenie\u015b do kolejnych historii. Pozwala to na szybkie dostarczenie rdzenia funkcjonalno\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Operacje na danych (ang. CRUD)<\/strong><\/h3>\n\n\n\n<p>Operacje CRUD (Create, Read, Update, Delete) to klasyczny wzorzec podzia\u0142u. Cz\u0119sto historia typu \u201eZarz\u0105dzanie kontem\u201d jest zbyt du\u017ca.<\/p>\n\n\n\n<p><strong>Podzia\u0142:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1: Tworzenie (ang. Create) \u2013 u\u017cytkownik mo\u017ce za\u0142o\u017cy\u0107 konto.<\/li>\n\n\n\n<li>Story 2: Odczyt (ang. Read) \u2013 u\u017cytkownik widzi swoje dane.<\/li>\n\n\n\n<li>Story 3: Aktualizacja\/Usuwanie (ang. Update\/Delete) \u2013 realizowane w p\u00f3\u017aniejszym czasie.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Odroczenie wymaga\u0144 niefunkcjonalnych (ang. Defer System Qualities\/Performance)<\/strong><\/h2>\n\n\n\n<p>Czasami implementacja funkcjonalno\u015bci jest prosta, ale spe\u0142nienie wy\u015brubowanych norm wydajno\u015bciowych (np. czas odpowiedzi &lt;100ms przy milionie rekord\u00f3w) czyni zadanie ogromnym.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Podziel prac\u0119 na \u201espraw, by dzia\u0142a\u0142o\u201d oraz \u201espraw, by dzia\u0142a\u0142o szybko\/bezpiecznie\u201d.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1: Implementacja funkcjonalna (nawet je\u015bli wolna) \u2013 pozwala u\u017cytkownikowi wykona\u0107 akcj\u0119.<\/li>\n\n\n\n<li>Story 2 (Enabler\/Feature): Optymalizacja wydajno\u015bci lub dodanie zaawansowanych zabezpiecze\u0144.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Spike (Badania)<\/strong><\/h3>\n\n\n\n<p>Cz\u0119sto zesp\u00f3\u0142 estymuje nowe funkcjonalno\u015bci bardzo wysoko ze wzgl\u0119du na brak pewno\u015bci, wiedzy czy do\u015bwiadczenia w danej dziedzinie. Najcz\u0119\u015bciej odpowied\u017a jest wtedy jedna \u2013 nie estymuj, dowiedz si\u0119 wi\u0119cej.<\/p>\n\n\n\n<p>Tak samo, gdy historia jest du\u017ca nie z powodu z\u0142o\u017cono\u015bci biznesowej, ale przez niewiedz\u0119 techniczn\u0105 \u2013 \u017cadna dyskusja biznesowa jej nie podzieli.<\/p>\n\n\n\n<p><strong>Rozwi\u0105zanie:<\/strong> Wydziel Spike \u2013 ograniczone czasowo zadanie badawcze (ang. time-boxed), kt\u00f3rego celem jest zdobycie wiedzy lub stworzenie prototypu (ang. proof of concept). Wynikiem Spike&#8217;a jest wiedza, jak zaimplementowa\u0107 lub podzieli\u0107 w\u0142a\u015bciw\u0105 funkcjonalno\u015b\u0107.<\/p>\n\n\n\n<p><strong>\u201ePro-tip\u201d<\/strong> \u2013 nie czekaj z wykonanie Spike na pocz\u0105tek iteracji czy PI \u2013 zr\u00f3b to najwcze\u015bniej jak si\u0119 da, przed dowolnym planowaniem, kiedy tylko niepewno\u015b\u0107 zostanie zidentyfikowana.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Role U\u017cytkownika (ang. User Roles)<\/strong><\/h3>\n\n\n\n<p>To jedna z najbardziej naturalnych metod podzia\u0142u. To samo oprogramowanie jest wykorzystywane w zupe\u0142nie inny spos\u00f3b przez r\u00f3\u017cne grupy u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Zamiast budowa\u0107 uniwersaln\u0105 funkcj\u0119 dla \u201eka\u017cdego\u201d, skup si\u0119 na konkretnej roli.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong> Portal rekrutacyjny.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1 (Kandydat): Jako kandydat chc\u0119 zaaplikowa\u0107 na ofert\u0119 (prosty formularz).<\/li>\n\n\n\n<li>Story 2 (HR Manager): Jako HR Manager chc\u0119 przegl\u0105da\u0107 aplikacje i zmienia\u0107 ich statusy. Dzi\u0119ki temu szybciej dostarczysz warto\u015b\u0107 dla jednej grupy, nie czekaj\u0105c na uko\u0144czenie funkcji dla drugiej.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Persony U\u017cytkownika (ang. User Personas)<\/strong><\/h3>\n\n\n\n<p>Nawet w obr\u0119bie tej samej roli u\u017cytkownicy r\u00f3\u017cni\u0105 si\u0119 potrzebami i zachowaniem. To subtelniejszy podzia\u0142 ni\u017c Role, ale bardzo pot\u0119\u017cny.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Podziel funkcjonalno\u015b\u0107 ze wzgl\u0119du na poziom zaawansowania lub specyficzne cechy u\u017cytkownika.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1 (Ekspert): U\u017cytkownik, kt\u00f3ry doskonale zna system, potrzebuje skr\u00f3t\u00f3w klawiszowych, aby pracowa\u0107 szybciej.<\/li>\n\n\n\n<li>Story 2 (Nowicjusz): Nowy u\u017cytkownik potrzebuje \u201esamouczk\u00f3w\u201d, dymk\u00f3w z podpowiedziami i kreator\u00f3w (ang. wizards), kt\u00f3re poprowadz\u0105 go za r\u0119k\u0119.<\/li>\n\n\n\n<li>Story 3 (Osoba z niepe\u0142nosprawno\u015bci\u0105): Dostosowanie interfejsu do czytnik\u00f3w ekranowych lub specyficznych metod interakcji.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Typy Danych (ang. Data Types)<\/strong><\/h3>\n\n\n\n<p>Rzadko zdarza si\u0119, by wszyscy wprowadzali dane w ten sam spos\u00f3b. Z\u0142o\u017cono\u015b\u0107 obs\u0142ugi r\u00f3\u017cnych format\u00f3w potrafi zabi\u0107 Sprint.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Zidentyfikuj lokalne lub specyficzne formaty danych i obs\u0142u\u017c je osobno.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong> Aplikacja fitness \u015bledz\u0105ca dystans.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1: Obs\u0142uga danych w kilometrach (dla rynku europejskiego).<\/li>\n\n\n\n<li>Story 2: Obs\u0142uga danych w milach (dla rynku USA). Zamiast budowa\u0107 skomplikowany mechanizm konwersji i detekcji lokalizacji od razu, zacznij od jednego typu danych, aby uzyska\u0107 szybk\u0105 informacj\u0119 zwrotn\u0105.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Platformy i Urz\u0105dzenia (ang. Devices\/Platforms)<\/strong><\/h3>\n\n\n\n<p>Nie mo\u017cesz zak\u0142ada\u0107, \u017ce wszyscy u\u017cytkownicy korzystaj\u0105 z tego samego systemu czy sprz\u0119tu. Pr\u00f3ba obs\u0142u\u017cenia wszystkiego naraz, to prosty przepis na pora\u017ck\u0119.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Podziel User Stories w oparciu o r\u00f3\u017cnice w urz\u0105dzeniach lub systemach operacyjnych.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Story 1: Implementacja funkcjonalno\u015bci na Desktop (Chrome\/Firefox).<\/li>\n\n\n\n<li>Story 2: Dostosowanie widoku do urz\u0105dze\u0144 mobilnych (RWD).<\/li>\n\n\n\n<li>Story 3: Obs\u0142uga specyficznych gest\u00f3w na tabletach (iOS\/Android).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mo\u017cliwo\u015bci (ang. Capabilities) \u2013 Podzia\u0142 przez sp\u00f3jniki<\/strong><\/h3>\n\n\n\n<p>To technika lingwistyczna. Cz\u0119sto User Story jest zbyt du\u017ce, poniewa\u017c zawiera w sobie sp\u00f3jniki takie jak \u201ei\u201d, \u201elub\u201d, \u201eoraz\u201d.<\/p>\n\n\n\n<p><strong>Technika:<\/strong> Przeanalizuj tre\u015b\u0107 historii. Je\u015bli zdanie brzmi \u201eJako u\u017cytkownik chc\u0119 wyszukiwa\u0107 <strong>i<\/strong> sortowa\u0107 wyniki\u201d, to masz gotowy podzia\u0142.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Story 1:<\/strong> Wyszukiwanie wynik\u00f3w.<\/li>\n\n\n\n<li><strong>Story 2:<\/strong> Sortowanie wynik\u00f3w (mo\u017cesz to dalej podzieli\u0107 na sortowanie po cenie, dacie itd.). Wyj\u0105tkiem jest sytuacja, gdy sp\u00f3jnik s\u0142u\u017cy tylko do wyliczenia element\u00f3w, a nie \u0142\u0105czenia odr\u0119bnych logik biznesowych.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Technika SPIDR<\/strong><\/h3>\n\n\n\n<p>Je\u015bli potrzebujesz prostej \u015bci\u0105gi, zapami\u0119taj akronim <strong>SPIDR<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S<\/strong>pikes (Badania)<\/li>\n\n\n\n<li><strong>P<\/strong>aths (\u015acie\u017cki\/Procesy)<\/li>\n\n\n\n<li><strong>I<\/strong>nterface (Interfejs \u2013 np. r\u00f3\u017cne wersje lub urz\u0105dzenia)<\/li>\n\n\n\n<li><strong>D<\/strong>ata (Dane)<\/li>\n\n\n\n<li><strong>R<\/strong>ules (Regu\u0142y biznesowe)<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/image2-2.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-32865&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1838,&quot;targetHeight&quot;:1165,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: Jak dzieli\\u0107 historyjki u\\u017cytkownika (\\u017ar\\u00f3d\\u0142o: Humanizing Work)&quot;,&quot;alt&quot;:&quot;Jak dzieli\\u0107 historyjki u\\u017cytkownika (\\u017ar\\u00f3d\\u0142o: Humanizing Work)&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"649\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2-1024x649.png\" alt=\"Jak dzieli\u0107 historyjki u\u017cytkownika (\u017ar\u00f3d\u0142o: Humanizing Work)\" class=\"wp-image-32865\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2-1024x649.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2-300x190.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2-768x487.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2-1536x974.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image2-2.png 1838w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: Jak dzieli\u0107 historyjki u\u017cytkownika (\u017ar\u00f3d\u0142o: Humanizing Work)\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Ryc. 2 Jak dzieli\u0107 historyjki u\u017cytkownika (\u017ar\u00f3d\u0142o: <a href=\"https:\/\/www.humanizingwork.com\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Humanizing Work<\/a>)<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Potencjalne korzy\u015bci<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Szybszy feedback:<\/strong> Mniejsze historie pozwalaj\u0105 na cz\u0119stsze dostarczanie dzia\u0142aj\u0105cego oprogramowania i zbieranie opinii od u\u017cytkownik\u00f3w.<\/li>\n\n\n\n<li><strong>Lepsza estymacja:<\/strong> Zgodnie z prawem wielkich liczb, suma oszacowa\u0144 mniejszych zada\u0144 jest zazwyczaj bardziej precyzyjna ni\u017c oszacowanie jednego, wielkiego bloku pracy. B\u0142\u0119dy w ma\u0142ych zadaniach maj\u0105 tendencj\u0119 do znoszenia si\u0119.<\/li>\n\n\n\n<li><strong>Lepszy flow i morale:<\/strong> Zesp\u00f3\u0142 regularnie zamyka zadania (\u201eDone\u201d), co buduje poczucie post\u0119pu i zapobiega zjawisku \u201ewiecznego sprintu\u201d, gdzie zadania przechodz\u0105 z iteracji do iteracji. Zawsze lepiej jest zaraportowa\u0107, \u017ce wykonali\u015bmy 7\/9 zaplanowanych zada\u0144, ni\u017c 0\/3 \u2013 pomimo, \u017ce ilo\u015b\u0107 pracy by\u0142a identyczna, zar\u00f3wno odbi\u00f3r pracy, transparentno\u015b\u0107 zaanga\u017cowania zespo\u0142u i jego morale drastycznie rosn\u0105, kiedy operujemy na mniejszych zadaniach.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ryzyka i zagro\u017cenia<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Utrata kontekstu biznesowego (ang. Over-splitting):<\/strong> Istnieje ryzyko podzielenia historii na tak drobne elementy, \u017ce przestaj\u0105 one spe\u0142nia\u0107 kryterium <strong>Invest (Valuable)<\/strong>. Je\u015bli historia staje si\u0119 tylko zadaniem technicznym (np. \u201eStw\u00f3rz tabel\u0119 w bazie danych\u201d), traci warto\u015b\u0107 dla u\u017cytkownika ko\u0144cowego i staje si\u0119 zadaniem (ang. Task), a nie User Story .<\/li>\n\n\n\n<li><strong>Naruszenie NFR (ang. Non-Functional Requirements):<\/strong> Technika \u201eDefer Performance\u201d jest pot\u0119\u017cna, ale ryzykowna. Je\u015bli zbyt d\u0142ugo b\u0119dziemy odk\u0142ada\u0107 jako\u015b\u0107, bezpiecze\u0144stwo czy wydajno\u015b\u0107 na p\u00f3\u017aniej, zbudujemy d\u0142ug techniczny, kt\u00f3ry mo\u017ce by\u0107 trudny do sp\u0142acenia.<\/li>\n\n\n\n<li><strong>Horyzontalne ci\u0119cie (ang. Horizontal Slicing):<\/strong> Niedo\u015bwiadczone zespo\u0142y maj\u0105 tendencj\u0119 do dzielenia pracy warstwami (osobno frontend, osobno backend) zamiast wertykalnie. To prowadzi do sytuacji, gdzie mamy \u201euko\u0144czone\u201d zadania, ale system jako ca\u0142o\u015b\u0107 nie oferuje \u017cadnej nowej funkcjonalno\u015bci dla u\u017cytkownika.<\/li>\n<\/ol>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/image3-2.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-32867&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:596,&quot;targetHeight&quot;:842,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Powi\\u0119ksz obrazek: Jakie powinno by\\u0107 dobre User Story&quot;,&quot;alt&quot;:&quot;Jakie powinno by\\u0107 dobre User Story&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"596\" height=\"842\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image3-2.png\" alt=\"Jakie powinno by\u0107 dobre User Story\" class=\"wp-image-32867\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image3-2.png 596w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/image3-2-212x300.png 212w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz obrazek: Jakie powinno by\u0107 dobre User Story\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Ryc. 3 Jakie powinno by\u0107 dobre User Story<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/praca-m-1.jpg\" alt=\"oferty pracy\" class=\"wp-image-32869\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/praca-m-1.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/praca-m-1-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Celem dekompozycji nie jest samo posiadanie ma\u0142ych zada\u0144, ale <strong>cz\u0119stsze dostarczanie warto\u015bci, a co za tym idzie \u2013 szybszy \u201efeedback\u201d, lepsza transparentno\u015b\u0107 i satysfakcja zespo\u0142u z uko\u0144czonej pracy<\/strong>.<\/p>\n\n\n\n<p>Dzielcie m\u0105drze, dbajcie o wertykalno\u015b\u0107 i nie b\u00f3jcie si\u0119 u\u017cywa\u0107 Enabler\u00f3w, gdy technologia tego wymaga.<\/p>\n\n\n\n<p>Kluczem do osi\u0105gni\u0119cia zmniejszonego rozmiaru zada\u0144 jest \u015bwiadoma ich definicja, skrupulatny proces optymalizacji backlogu, \u015bcis\u0142a wsp\u00f3\u0142praca z PO i biznesem w celu dostarczania tylko niezb\u0119dnych element\u00f3w zwi\u0119kszaj\u0105cych nasz\u0105 warto\u015b\u0107 biznesow\u0105. Na podstawie otrzymanych opinii zawsze mo\u017cemy doda\u0107 dodatkow\u0105 funkcjonalno\u015b\u0107, <strong>a \u017ale zainwestowanego czasu przez niepotrzebn\u0105 komplikacj\u0119 nie odzyskamy ju\u017c nigdy<\/strong>.<\/p>\n\n\n\n<p>Warto zapami\u0119ta\u0107:<\/p>\n\n\n\n<p>\u201eProstota to sztuka maksymalizacji pracy, kt\u00f3rej si\u0119 nie wykonuje.\u201d<\/p>\n\n\n\n<p>I nie chodzi tu wcale o lenistwo, lecz o to, aby osi\u0105gn\u0105\u0107 cel, wykonuj\u0105c jak najmniej zb\u0119dnych czynno\u015bci (np. nie pisz\u0105c funkcji, kt\u00f3rych nikt nie b\u0119dzie u\u017cywa\u0142, lub nie tworz\u0105c dokumentacji, kt\u00f3rej nikt nie przeczyta). Tylko optymalizacja wielko\u015bci zada\u0144 pozwoli nam w\u0142a\u015bnie ten cel osi\u0105gn\u0105\u0107.<\/p>\n\n\n\n<p>Powodzenia w dzieleniu zada\u0144!<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;32862&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;5&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 5)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Sztuka dekompozycji: Jak efektywnie dzieli\u0107 prac\u0119 w \u015brodowisku Agile&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 5)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>W \u015bwiecie z\u0142o\u017conych system\u00f3w IT i zwinnego zarz\u0105dzania projektami, jednym z najcz\u0119stszych wyzwa\u0144, z jakim spotykam si\u0119 od 15 lat, &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/sztuka-dekompozycji-jak-efektywnie-dzielic-prace-w-srodowisku-agile\/\">Continued<\/a><\/p>\n","protected":false},"author":766,"featured_media":32871,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1318],"tags":[1512,90,212,283],"class_list":["post-32862","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zarzadzanie-projektami","tag-poradnik","tag-agile","tag-projekty-zwinne","tag-user-stories"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/12\/Team-work-3.jpg","category_names":["Zarz\u0105dzanie projektami"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32862"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/766"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=32862"}],"version-history":[{"count":1,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32862\/revisions"}],"predecessor-version":[{"id":32873,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32862\/revisions\/32873"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/32871"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=32862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=32862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=32862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}