Czym jest SPIKE? Wyjaśnienie dla Project Managera

Wina analityków

W firmach usługowych zdarza nam się pracować w systemie projektowym. W związku z tym czasami wykonujemy spory etap analizy jeszcze przed rozpoczęciem prac programistycznych. Jest to jak najbardziej ok i zwiększa naszą wiedzę w sposób pozwalający na wycenę projektu oraz późniejszą jego realizację.

Często jednak zespoły programistyczne narzekają, że “analiza była słaba”. Nie jest to oczywiście wina analityków. Jest to kwestia tego, że zazwyczaj narzeka się na osoby “przed nami” w nieperfekcyjnym procesie w którym brakuje poprawnych mechanizmów współpracy między rolami, więc… być może jest to wina programistów, że nie rozmawiają z analitykami? A być może późniejsza analiza to coś normalnego?

Co na to Agile i Extreme Programming?

W podejściu zwinnym, effort “uczenia się” lub effort analityczny jest częścią Sprintu. Oznacza to, że każdy członek Development Teamu moe za taką analizę odpowiada. Jeżeli braki w wiedzy do zrealizowania danej historyjki są dość małe to można taką analizę wykonać w obrębie tego samego issue co samą implementację.

Co jednak, gdy mamy duże braki w wiedzy i nie pozwalają nam one na oszacowanie czasu potrzebnego do realizacji zadania, rozpisanie sub-tasków lub na podjęcie decyzji czy jego implementacja powinna się w ogóle odbyć? Innymi słowy, nie mamy wiedzy, aby rozpocząć realizację zadania. PM pyta “ile godzin?”, a odpowiedzi nie da się udzielić.

Na pomoc przychodzi znany w środowisku programowania ekstremalnego - SPIKE.

Czym jest Spike?

W świecie Agile, Spike to wysiłek / effort, który może być wydzielony z historyjek implementacji konkretnych funkcjonalności na rzecz zdobycia wiedzy, która pozwoli nam rozpocząć faktyczną pracę nad zadaniem (lub podjąć decyzję o jego odrzuceniu). Spajki mogą być funkcjonalne, techniczne, architektoniczne […].

W świecie Extreme Programming, jest to najmniejszy mozliwy eksperyment pozwalajcy na rozeznanie sie w potencjalnych rozwiazaniach przed zdecydowaniem sie na pelna implementacje. Celem jest obnizanie ryzyka wynikajacego z konkretnej niepewnosci w zakresie technicznym.

Przykład

Mamy user story: “Jako Content Manager chcę przy uzyciu Prismica zbudować stronę statyczną z odnośnikami do polecanych artykułów, aby następnie została ona wyświetlona na stronie statycznej w naszym storefroncie”.

Załóżmy, że nasz zespół nigdy nie integrował się z Prismiciem i nie wie od czego zacząć. Oszacowanie punktowe / czasowe realizacji tej historyjki będzie strzałem bazującym na domysłach. Nie są znane też ryzyka, które mogą zaistnieć podczas implementacji. No i teraz możemy wydzielić przykładowe spike. Opiszmy je w formie storiesów (kilka różnych wersji):

Przykłady spike’ów z innej beczki

Dobre praktyki spajkowania

Jak Ci to pomoże jako PMowi?