Poprzednia część niniejszego wpisu traktowała o tym, jak efektywnie (skutecznie, przy jednocześnie możliwie niewielkim nakładzie zasobów) można nauczyć się układać kostkę Rubika. Tak jak pisałem – testowane na ludziach, działa od 5 roku życia 😁 Czyli zwinny rozwój produktu w praktyce.
Czyli mamy już pierwszą, niedoskonałą, ale działającą i spełniającą niewysublimowane oczekiwania wersję produktu. Bo przypominam, że MVP, czyli walidację MOŻLIWOŚCI ułożenia zrobiliśmy na samym początku. Wtedy, kiedy pierwszy raz przeszliśmy z Rubitrenerem przez całą procedurę i potwierdziliśmy, że naszą kostkę DA SIĘ ułożyć. (Chyba, że się nie da, bo ma poprzestawiane elementy – na to też jest sposób – video poniżej).
Kontynuujemy Shu-Ha-Ri. Dziś HA – czyli optymalizujemy LBL-a!
Tak jak w poprzednim wpisie było o SHU (czyli podążaniu za nauczycielem), tak dziś będzie o HA. Czyli eksperymentowaniu, szukaniu innych nauczycieli, innych sposobów.
Po wielu ułożeniach (wieeeeelu), gdzie dochodzimy do momentu, w którym znalezienie w domu kostki Rubika NIEUŁOŻONEJ graniczy z cudem, dochodzimy także do pewnych wniosków. Zaczynamy zauważać, że w fazie Shu, kiedy układamy kostkę metodą myszy do sera, wiele ruchów jest nadmiarowych. A i samo nasze układanie też nie jest idealne.
Z jednej strony – źle, bo nauczyliśmy się nieoptymalnych (z punktu widzenia czasu ułożenia) nawyków. Z drugiej strony – dobrze, bo dzięki temu byliśmy się w stanie faktycznie nauczyć układania kostki i złapać bakcyla. Możemy to potraktować jako dalszą walidację pomysłu.
r u r’ u’ – czyli OCB
Kto próbował uczyć się z innych filmików, gdzie prowadzący ‘tłumaczą’ to w formie F’, B, R2, L’, U, R, U2 R’ wie o czym mówię. Wątpię, czy ucząc się algorytmów z notacji nauczylibyśmy sę dużo szybciej, a przede wszystkim – nie wiadomo, czy nauczylibyśmy się w ogóle. I czy sprawiłoby nam to tyle frajdy. To coś jak z produktem, który jest rozwijany waterfallowo. Wtedy, kiedy mamy już przeanalizowane i zaprojektowane wszystkie ścieżki, opcje, use-case’y, a okazuje się że w połowie implementacji kończy się czas lub zasoby. A my zostajemy z rozgrzebanym wszystkim i dowiezionym niczym. Marnotrawstwo w czystej postaci.
Disclaimer: Notacja kostkowa (r u r’ u’ ) to bardzo przydatna rzecz, ale jeszcze nie ma tym etapie.
Krok 1 – czyli podkręcamy TPS (turns per second) – kręcimy kostką szybciej.
Jest to pierwsza opcja i szczerze mówiąc – całkiem skuteczna. Czyli robimy dokładnie to co w wersji podstawowej. Z tym że uczymy się to robić szybciej, płynniej i unikamy ścinek. Dzięki temu jesteśmy w stanie zejść z czasem ułożenia w okolice 2 minut, a nawet jeszcze lepiej.
Dla przykładu – my obiecaliśmy synowi (wówczas 7-letniemu), że jak ułoży poniżej 2 minut, kupimy mu nową kostkę – mirror blocka (zmiennokształtna kostka 3×3, bez kolorów). Po dwóch dniach treningu ułożył poniżej 1:50. Muszę przyznać, że mnie zejście do tego poziomu zajęło sporo więcej czasu.
Krok 2 – eliminujemy pierwsze nadmiarowe ruchy – czyli optymalizacja – i schodzimy w okolice sub-1:30
Początek drogi do szybkiego układania. Jak już umiemy szybciej kręcić, to szybko orientujemy się, że nie wszystkie ruchy, nawet w tej prostej podstawowej metodzie są konieczne. Coś jak w optymalizacji procesów. Lepiej zastanawiać się, jak USUNĄĆ dany krok bez straty jakości, niż jak go USPRAWNIĆ (#minimalizm). A ruch niewykonany jest zawsze “szybszy” od tego wykonanego najszybciej na świecie, bo trwa dokładnie 0,00s. 🙂
Najpierw orientujemy się, że można robić Krok 1 (myszy do sera) bez trampoliny. I dzięki temu kilka ruchów zaoszczędzamy. Potem dochodzi do nas, że ten krok da się całkowicie pominąć, bo w sumie jak wiemy, że myszy są nam potrzebne w piwnicy – to jesteśmy w stanie zaoszczędzić kolejnych kilka ruchów nie wysyłając ich do sera. Ponadto kombinujemy dalej.
Krok 3 – nowa kostka, koniecznie nowa kostka!
Można się śmiać, ale to przydaje się bardzo. Dobra, nasmarowana, magnetyczna kostka to sama przyjemność układania. I ważny sprzymierzeniec w walce o kolejne sekundy. A co najważniejsze – to jeden z mniej wymagających kroków. Magnetyczną kostkę można kupić już za 40 PLN, a taka z wyższej półki – to już przedział 100-150 PLN. No chyba że z Aliexpress, to mniej 💵 ale więcej ⏱️ 😁
U mnie listonosz przyniósł kostkę X-Man Tornado V3, o taką.
Krok 4 – nowe funkcjonalności – czyli pierwsze algorytmy i pozbywamy się warsztatu – cel to sub-60s.
Dalsze kroki do szybkiego układania to już czyste “dodawanie nowych funkcjonalności”. Czyli po prostu nauka algorytmów. Jest tych algorytmów kilka grup, niektóre łatwiejsze, niektóre trudniejsze, ale każdy z nich – to potencjalny zysk czasowy. Od czego zacząć?
I tu znów pojawia się Agile i User Story slicing 😉 bo tak jak rzadko który produkt da się stworzyć kompletny od razu, tak również nauczenie się wszystkich speedcubingowych algorytmów naraz jest niewykonalne. Pełny OLL to 57 algorytmów – w zależności od ułożenia żółtego koloru na kostce. Pełny PLL – 21. A F2L – 77. Daje to 155 algorytmów 🙂 Zresztą, nauczenie się to jedno – wyćwiczenie to drugie.
Największy zysk na początku – to pozbycie się “warsztatu”. W wersji najbardziej złożonej, zamiast 52 ruchów – wystarczy 12. Do rekordu świata wciąż jeszcze daleko, ale postęp jest zauważalny 😉 Niemniej ucząc się kolejnych i układając kostkę dziesiątki i setki razy zauważamy, które kombinacje nam się sprawdzają, a których nie potrzebujemy (to coś jak feedback z rynku – gdzie mamy jeszcze UV – Unrealized Value, używając terminologii EBMowej.)
Czym jest Evidence Based Management można poczytać tutaj.
Można (i trzeba) podzielić to na kawałki. Tylko jak? Uczyć się po jednym? Po dwa? Po trzy? I dlaczego akurat te trzy, a nie inne trzy? Dylematy Product Ownera 🙂 Tu z pomocą przychodzi internet i “badanie rynku”. Ja trafiłem na stronę, na której autor proponuje rozbicie OLL’a na dwa kroki.
Krok 4A – OLL w dwóch krokach (10 algorytmów)
Pierwszy etap to trzy algorytmy (za pomocą których orientujemy żółte krawędzie (budujemy żółty krzyż). Drugi – to 7 algorytmów, za pomocą których orientujemy żółte narożniki. OLL w dwóch krokach – zaledwie 10 algorytmów zamiast 57. Owszem, trwa to odrobinę dłużej, ale ogranicza nam liczbę opcji o ponad 80%, a pokryjemy wszystkie 57 przypadków.
Jak dla mnie świetny stosunek nakładów do zysków, tym bardziej, że nasz produkt (czas ułożenia) zyskuje bardzo dużo. Czyli wartość z zainwestowanego czasu – zmaksymalizowana. Owszem, nie jest to optymalne w porównaniu ze znajomością wszystkich algorytmów OLLowych. Jednocześnie posuwa nas zauważalnie do przodu niższym kosztem jednostkowym.
Tutaj pewnie pojawi się pierwsze ułożenie poniżej 60 sekund. Nie ukrywam, to bardzo duży i silny motywator do dalszej nauki – rozwoju naszego “speedcubing’owego” produktu. Widzimy jaką drogę przeszliśmy, ale i jeszcze ile możemy zrobić. I znów – moglibyśmy tutaj nasz rozwój porzucić, bo ułożenie kostki Rubika w minutę to na pewno będzie fajny imprezowy trik 🙂
Ale my rozwijamy nasz produkt dalej. Bo chcemy. I jest to zgodne z naszą wizją, a w dodatku mamy na to zasoby 🙂 I dużo czasu spędzamy na spotkaniach-słuchowskach. Takich typu “Hi, bye”, gdzie są to jedyne słowa jakie wypowiadamy w trakcie całego calla.
Krok 5 – precz z sankami i rowerem – walka o sub-50s.
A więc dobrnęliśmy tutaj i mamy wyćwiczonego 2-step OLLa. Zatem w walce o kolejne sekundy następnym rozsądnym elementem jest przejście z sanek i rowerka na prawilnego PLL’a. PLL to Permutation of the Last Layer. Czyli właściwa orientacja narożników i krawędzi wieńcząca ułożenie kostki.
PLL w wersji pełnej to 21 algorytmów. Niewiele w porónaniu z OLLem (57), czy F2L’em (77). Ale wciąż sporo. Może da się prościej? Da się.
Rozwiązaniem pośrednim jest PLL w dwóch krokach. Znów – rozwiązanie znalezione w: “źródło internet” 😜 a właściwie wspomniany wcześnie youtuber jperm.
Krok 5A – PLL w dwóch krokach (6 algorytmów)
Z tą wiedzą – te 21 algorytmów zmienia się w 6. Znów o 70% mniej nauki, a kolejne kilka sekund ścinamy z czasu ułożenia. Na razie wystarczy – inwestycja niewielka, zysk ponownie zauważalny.
To kolejny moment, gdzie można zapytać – inwestujemy dalej? Praktycznie za każdym razem układamy poniżej minuty, czasy w okolicach 50 sekund są regularne, a czasem trafi się i coś w okolicy 45-45s. Zwłaszcza przy łatwiejszym scramble’u (pomieszaniu). Można odpuścić – ale my idziemy dalej. Widać powoli, że inwestycja każdej kolejnej godziny przynosi coraz mniejszy zysk czasowy. Ale ten zysk wciąż jednak jest i jest on dla nas wart nakładów.
Krok 6 – automatyzacja ruchów – idziemy na sub40s.
Jak już mamy opanowane główne “nowe funkcjonalności”, to teraz czas na ich dalszą optymalizację. Czyli płynne przechodzenie jednego algorytmu w drugi. Tu najciekawszy jest ten moment, kiedy nauczymy się algorytmu i jego obsługę przejmie ośrodkowy układ nerwowy Wówczas będziemy go w stanie zrobić w 2s bezbłędnie, ale próba wytłumaczenia i pokazania komuś powoli – nie uda się w 4 przypadkach na 5. Bezcenne.
Więc szlifujemy technikę, powtarzalność ruchów, płynność. I na stoperze zaczynają się pojawiać czasy z trójką z przodu. co oczywiście jest dalszym motorem do nauki. I inwestujemy godziny i dni w walce o sekundy.
Krok 7 – look ahead – czyli widzimy krok-dwa do przodu – walka o sub-30s.
Kolejny etap, to dalsza automatyzacja i przyspieszanie naszych ułożeń poprzez obserwowanie kostki i zauważanie tego, co za ruch-dwa będziemy musieli/mogli zrobić. Śledzimy filmiki na YouTube, na których bardziej doświadczeni “Product Managerowie” pokazują, na co zwracać uwagę. Zaoszczędzi nam to kilka dodatkowych spojrzeń i tych ułamków sekund, gdzie wywołujemy z pamięci potrzebny algorytm.
Nie zawsze się uda, ale jak wyjdzie i jesteśmy odpalić kilka kolejnych algorytmów na pełnej prędkości – stoper to zauważy, gwarantuję.
I wreszcie pojawi się ta upragniona dwójka z przodu, potem coraz częściej będą się trafiały wyniki z przedziału 25-29,XX. I chcemy dalej.
No i właśnie. Pojawia się tu i teraz.
Tu w naszym rozwoju produktu, jakim jest aspirujący speedcuber-amator dochodzimy do etapu, na którym jestem ja. Okolice 30-35 sekund układam powtarzalnie i komfortowo, czasem schodząc sub 30, czasem wychodząc 40+. Mój rekord pojedynczego ułożenia to sub21, ukręcone w pociągu relacji Łódź-Warszawa 😄 (stan na dzień 29.04.2025 – liczę, że jeszcze nieraz zedytuję ten post).
Ile jeszcze przede mną? Mógłbym skończyć moją naukę w miejscu w którym jestem obecnie, ale ja mam ochotę iść dalej. Chciałbym zobaczyć na stoperze SUB15, może nawet SUB 10. Ułożyć kostkę poniżej 10 sekund, to byłoby fajne uczucie. Co mi zostało?
W backlogu jest całkiem sporo:
- na pierwszy ogień idzie F2L (First Two Layers) – czyli optymalizacja obejmująca koty, papugi i kanarki. Jest tu sporo (a właściwie najwięcej) do ugrania – czyli mamy 41 algorytmów podstawowych i 41 rozszerzonych (czyli mirrorów – tych samych algorytmów robionych na plecach, żeby uniknąć zmian w uchwycie kostki). Tu ciekawostka – kilka z nich to kawałki historyjki z kursu podstawowego. Czyli pewnie z 5-10 sekund do urwania.
- OLL i PLL w wersji zaawansowanej – czyli jakieś kolejne 50-60 algorytmów. Kolejne 3-5 sekund. Może więcej.
- Kolejne “ficzery” to usprawnienie układania białego krzyża – kilka ruchów do zaoszczędzenia. Czyli sekunda do półtorej do ścięcia.
- Gdzieś pomiędzy dalsze szlifowanie automatyki ruchów, wychodzenie z sytuacji trudnych, look ahead, algorytmy w wersji mirror (czyli OLL, PLL i F2L na lewą rękę – już się nie mogę doczekać 😉 ).
- Może nowa kostka, bardziej dostosowana do jeszcze szybszego kręcenia. Tutaj przemawia przeze mnie gadżeciarz – bo kostka którą aktualnie mam to wysoka półka, na której pobito co najmniej jeden rekord świata.
- Na pewno kolejne kursy Rubitrenera (kupiłem już dwa sezony 🤩)
I po co to wszystko? To wszystko po to, żeby mieć satysfakcję z hobby 🙂 a tak po prawdzie, to wcale nie wszystko. Bo w pewnym momencie zauważamy, że oprócz 3×3 są też inne kostki. I gdzieś niepostrzeżenie ląduje w paczkomacie kostka 4×4, potem 5×5. Pewnie też 2×2 (bo głupio byłoby jej nie mieć 😉) Do tego może jakaś piramidka (Pytaminx), Skewb (czyt. “SKJUB”), Square-1, może Megaminx, i tak dalej, i tak dalej.
Podsumowanie
Gdzieś słyszłem, że każde dobre wystąpienie publiczne powinno zawierać informację o tym o czym będizemy mówić, podkreślenie – że o tym właśnie teraz mówimy, oraz podsumowanie – o czym powiedzieliśmy.
To ten moment, żeby jak na szkoleniu – podsumować. Obiecałem, że zobrazuję zwinny rozwój produktu na przykładzie układania kostki Rubika. I to pokazałem w tym i poprzednim wpisie 🙂 była walidacja hipotezy. Była pierwsza, działająca, nieoptymalna wersja. Były nowe funkcjonalności (w postaci nowych algorytmów). Były usprawnienia techniczne (nowa kostka), oraz automatyzacje. Było stopniowe dodawanie wartości, przy coraz bardziej rosnących nakładach. A także usprawnienia istniejących funkcjonalności, poprzez ich upgrade (nowe, szybsze algorytmy). Wszystko to z punktu widzenia najlepszego ROI (Return on Investment).
Na każdym etapie mogłem powiedzieć dość. Ale na razie nie mówię. Po kilku miesiącach przerwy na inne, bardziej priorytetowe tematy – wróciłem do układania. I nie ukrywam, że po dłuższej chwili rozruchu zobaczenie sub-30s. było bardzo miłe. A w ostatnim miesiącu wpadło i sub-25s. Zatem t sub-20s, może sub-15s. uważam, że jest całkiem realne. Kwestia dalszego inwestowania czasu w naukę i trening. Jak to z hobby.
Dzięki za przeczytanie i do następnego.
Pozdrawiam serdecznie,
Marcin