W poprzednim wpisie wspomniałem o tym, że zwinny rozwój produktu można przedstawić na przykładzie kostki Rubika. A konkretnie – nauki szybkiego układania kostki Rubika. Najpierw zaczęliśmy od walidacji technologicznej, czy naszą kostkę da się ułożyć. Zakładam, że podążając krok w krok za jakimś internetowym tutorialem to się nam udało i możemy zacząć się uczyć. Podejdziemy do tego w formie koncepcji uczenia się, zwanej Shu-Ha-Ri.
Co to jest Shu-Ha-Ri można poczytać tutaj.
Zaczynamy Shu-Ha-Ri. Shu, czyli LBL (Layer-by-layer) – układamy warstwa po warstwie.
W skrócie – SHU to etap, kiedy słuchamy nauczyciela i po prostu uczymy się układać kostkę Rubika. Staramy się osiągnąć taki poziom umiejętności, że niezależnie kto i jak pomiesza nam kostkę – będziemy ją w stanie ułożyć.. Styl i czas są nieistotne – liczy się efekt końcowy. Za każdym razem powinna być to prawidłowo ułożona kostka.
Jeśli byłby to produkt – to byłaby pewnie wersja, która za każdym razem wyświetla na ekran startowy ze wspomnianym wcześniej napisem “Hello World!” 😉 Zależy nam na tym, żeby dostarczyć jak minimalną, wartościową wersję jak najwcześniej, najprościej i najtaniej. Żeby potwierdzić potrzebę biznesową i właściwy kierunek myślenia.
Raz, że będzie to okazja do zebrania wartościowego feedbacku, dwa – że może się okazać, że taka teoretycznie niekompletna wersja, “na sznurki i srebrną taśmę” jest już dla nas wystarczająca. I wówczas możemy podjąć decyzję o porzuceniu dalszego rozwoju produktu (tutaj: umiem układać kostkę i nie potrzebuję robić tego szybciej). Efekt – zaoszczędzone zasoby możemy wykorzystać inaczej (inwestycja lub akumulacja). Druga opcja – uznajemy, że widzimy wartość w dalszym rozwoju. Tutaj: chcemy układać szybciej – poniżej X minut, potem poniżej Y sekund.
Warstwa pierwsza
Kolejną analogią układania kostki do rozwoju produktu jest to, że nieważne jak dobrze i szybko ułożymy pierwszą warstwę (np. bazę danych), bez pozostałych warstw nie możemy mówić o funkcjonalnym, wartościowym produkcie 😊 Bo nie da się z tego skorzystać. I tak właściwie to nie wiadomo, czy faktycznie (za)działa.
Bez połączenia z pozostałymi jest to, cóż, tylko jedna warstwa.
Krok 1 – Myszy do Sera.
Pierwszym etapem metody podstawowej jest znalezienia żółtego środka i dopasowania do niego czterech białych krawędzi. Ma to się skojarzyć z czterema białymi myszkami zgromadzonymi wokół kwadratowego sera. Aha, wysłanie myszy na górną warstwę jest dokonywane przy użyciu “trampoliny” 😊
Krok 2 – Myszy do Piwnicy.
Drugim etapem jest wysłanie wszystkich białych myszek do piwnicy. Czyli dopasowanie kolorów brzuszków myszek do drzwiczek (środków ścian bocznych) i przekręcenie białych krawędzi z góry na spód kostki. Ser (żółty środek) zostaje na górnej warstwie (tu będziemy budować ścianę żółtą). A że naprzeciwko ściany żółtej jest biała, to wysyłając myszy do piwnicy robimy to w celu budowy białego krzyża (ale o tym na razie nie wiemy 😉)
Krok 3 – Koty.
Trzecim krokiem jest ułożenie pozostałych brakujących elementów białej ściany – narożników (bo biały krzyż już przecież mamy). Tu przychodzi nam w sukurs historyjka o kotach polujących na myszy. Historyjka jest prosta, ale bardzo skuteczna. Jeśli kiedykolwiek zobaczycie kogoś kto PUKA w bok kostki Rubika – już wiecie, że uczy(ł) się z kursu Rubitrenera.
Włożenie na miejsce ostatniego “kota” kończy nam pierwszą warstwę. Mamy teraz ułożoną pierwszą ścianę – białą, którą cały czas trzymamy na spodzie. I przy okazji – po 1/3 każdej z czterech ścian bocznych.
Warstwa druga
Krok 4 – Papugi (i kanarki).
Do nauki układania drugiej warstwy przydaje historyjka o papugach uciekających od wspomnianych wcześniej kotów. Papugi to krawędzie bez koloru żółtego. Wspomagana historyjką o kanarkach (jak jest deficyt papug – a kanarki to krawędzie z kolorem żółtym). Wykonanie wszystkich związanych z papugami (i kanarkami) czynności prowadzi do rozwiązania drugiej warstwy (czyli mamy już 2/3 każdej z bocznych ścian).
Warstwa trzecia
Po ułożeniu drugiej warstwy za pomocą papug i kanarków, zostaje nam “tylko” trzecia, ostatnia warstwa. ale tak jak pierwsza składała się z kilku kroków, tak i trzecia ma podobnie, wymaga od nas trochę więcej.
Krok 5 – Żółty krzyż.
Zależnie od tego jak ułożyliśmy wcześniejsze warstwy, na tym etapie na górnej, żółtej warstwie otrzymamy jedną z czterech kombinacji – są to żółta kropka, bucik, minusik i żółty krzyż. W przypadku pierwszych trzech musimy trochę pokręcić (zaczynając od kropki – kolejne ustawienia są jakby kolejnymi krokami układania). Kropka przechodzi w bucik, bucik w minus, a minus – w krzyż. W przypadku ostatniej – wystarczy przejść do następnego kroku.
W tym kroku poznajemy jeden z najważniejszych algorytmów – CYKL. Góra, lewo, dół, prawo – zapisywany w notacji: R, U, R’, U’.
Krok 6 – Warsztat samochodowy.
Teraz naszym celem jest dokończenie żółtej warstwy. Jak mamy zbudowany krzyż – to zależnie od tego ile narożników mamy prawidłowo (od 0 do 4), tyle kół musimy wymienić. Trzeba przekręcić kostkę żółtym kolorem do dołu (w końcu koła są na dole 😉) i korzystając z algorytmu poznanego w poprzednim kroku – “wymienić” koła, ustawiając poprawnie wszystkie żółte narożniki za pomocą określonej liczby cykli.
Krok 7 – Sanki. Raz albo dwa.
To moment, którym mamy ułożoną białą warstwę (dół), żółtą (góra), oraz dolne dwie trzecie pozostałych warstw (niebieskiej, pomarańczowej, zielonej i czerwonej).
Sanki to historyjka, za pomocą której ułożymy we właściwych miejscach narożniki. Profesjonalnie nazywa się to (o czym dowiemy się później, jeśli się wkręcimy) – OLL. Orientation of the Last Layer.
Krok 8 – Rowerek.
Rowerek to ostatnia prosta, gdzie za pomocą prostego algorytmu (dół, lewo, dół prawo, dół prawo, dół lewo) układamy brakujące krawędzie – tym samym naszym oczom ukazuje się ułożona kostka.
I BAM, dzięki temu prostemu, ale treściwemu poradnikowi, jesteśmy w stanie ułożyć kostkę po 2-3 obejrzeniach materiału i zapamiętaniu tych kilku drobnych wariantów. Nasz czas tutaj będzie się wahał w granicach 3-6 minut per ułożenie. Testowane na ludziach – w tym na dzieciach, własnych i cudzych 😉
Czyli rowój produktu jak w pierwszej wersji (MVP) – da się to zrobić (nauczyliśmy się), mimo że (jest to turbonieoptymalne). I od tego punktu można rozwijać nasze umiejętności dalej.
Tylko jak to robić? I co robić, żeby mieć jak największy uzysk z zainwestowanych zasobów? To jak widzicie dylemat, przed którym stoi każdy szanujący się Product Owner 🙂A ponieważ ten wpis zaczyna się robić długi – na resztę zaproszę do kolejnego 🙂
Pozdrawiam serdecznie,
Marcin
1 comment