Jak zapewne większość czytających ten wpis wie, w 2001 roku opublikowano Manifest Agile (Agile Manifesto), który był jednym z elementów tworzących podwaliny nowoczesnego, tzn. takiego jakie większość z nas zna – podejścia zwinnego do rozwoju oprogramowania, czy szerzej – do rozwoju produktu.
Ale ponieważ jak wiemy z innego polskiego filmowego klasyka, nie wszystko jest takie jak się uczyliśmy i Kopernik była kobietą, tak i Agile nie powstał gdzieś tam na zachodzie, a rodzima metoda prób i błędów pokazuje, że być może zaczęło się między Odrą a Bugiem 😉
Nie wierzycie? To zobaczcie sami.
Wstęp
W 1973 roku (zapisanym jako MCMLXXIII) a więc już pół wieku temu, warszawskie Studio Miniatur Filmowych wypuściło pierwszy odcinek kultowej kreskówki pod tytułem “Pomysłowy Dobromir”. Był nim, jak się okazało po przejrzeniu zasobów internetu odcinek pod tytułem “Mechaniczna igła”(zdradzającym poniekąd kierunek w którym pójdzie fabuła).
A teraz oddajmy się narracji opisującej wydarzenia.
Czas i miejsce akcji (otocznie rynkowe): spokojna polska wieś, gorący letni dzień. Dobromir z dziadkiem w najlepsze żeglują po jeziorze. Nagle nadchodzi burza, która niszczy ich żagiel – rozrywając go na pół. Nasi bohaterowie, korzystając z wioseł (tutaj BCM – Business Continuity Management zadziałał jak powinien) dopływają do brzegu i będą próbować naprawić żagiel. Dodatkowo w międzyczasie dziadek głównego bohatera rozdziera sobie rękaw bluzy (pojawia się dodatkowy use case).
1 iteracja – Minimum Viable Product (MVP) – walidacja rozwiązania
Zaczynają więc próby rozwiązania problemów. Trzeba to pozszywać, więc biorą do ręki igły i nici. Niestety, brak umiejętności i doświadczenia dość szybko daje o sobie znać i pojawia się problem biznesowy (Satisfaction Gap) – jak zrobić to lepiej. Inspekcja prowadzi do refleksji, refleksja do adaptacji – Dobromir przypomina sobie małe rybki, które widział jak przepływają slalomem między oczkami sieci rybackiej. I tak pojawia się prosty szew – FASTRYGA. Dzięki temu udaje się połączyć dwa brzegi materiału, jest dobrze – kierunek właściwy.
2 iteracja – wstępne usprawnienia
Niestety w warunkach złożonej niepewności pojawiają się nieoczekiwane (?) kłopoty. Otóż kos, który jest przyjacielem naszego bohatera zaczyna mu bruździć w kodzie ^^.
Niwecząc dotychczasową pracę, zaczyna wyciągać nitkę, bo przypomina mu ona dżdżownicę 🙂 jakie to życiowe.
Na szczęście praca nie idzie na marne, ponieważ Dobromir wpada na kolejny pomysł, który jest rozwinięciem dotychczasowego produktu. Pojawia się bardziej skomplikowany ścieg. Po konsultacji z koleżanką, hobbystycznie zajmującą się szyciem (dzięki Aniu!) – rozpoznany jako ścieg stebnówkowy prosty 🙂
3 iteracja – dalsza adaptacja w kierunku rozwiązania docelowego
Dalej praca porusza się coraz szybciej i sprawniej, i okazuje się, że poprawa wydajności następuje do momentu osiągnięcia maksimum przez jedno z ogniw – kosa. System pracujący pod wysokim obciążeniem okazał się niestabilny i nastąpiło splątanie nici. Tutaj nasi bohaterowie, zgodnie z Teorią Ograniczeń (Theory of Constraints) zmuszeni są poszukać usprawnienia procesowego. W trzeciej iteracji z pomocą przychodzi im będący na podorędziu dzięcioł 🙂 Rośnie poziom skomplikowania produktu (występują 3 elementy “białkowe” oraz 2 kolory nici), ale i wydajność systemu.
Znów praca rusza z kopyta. Zwiększa się przepustowość (Throughput). Kos naciąga nić, dzięcioł przebija materiał, a Dobromir po drugiej stronie przeplata przez pętle drugi kolor.
Dzieje się tak aż do momentu, kiedy nowy nabytek, dzięcioł przerywa pracę. Wiedziony swoim instynktem – zaczyna rytmicznie dziurkować materiał po drugiej stronie.
4 iteracja – automatyzacja rozwiązania docelowego
To z kolei bodziec do dalszych usprawnień – pojawia się automatyzacja. Najpierw, na kole szlifierskim zostaje zaostrzona igła, ale od strony ucha. Następnie na tablicy (wizualizacja ^^) pojawiają się schematy, które doskonale ilustrują ostatni (przedstawiony w kreskówce) etap rozwoju produktu – maszynę do szycia.
Dalej idzie gładko. Najpierw następuje refactoring wstępnych rozwiązań. Wszystkie poprzednie ściegi są prute, żeby można było je poprawić maszynowo. Kolejny krok to już montaż pełnoprawnej maszyny do szycia, i sprawna i skuteczna naprawa żagla i rękawa bluzy dziadka.
Ostatni akapit to zadowoleni klienci AKA nasi bohaterowie radośnie odpływający żaglówką 🙂
Wnioski
Produkt został wypracowany doświadczalnie – iteracyjnie i adaptacyjnie. Celem głównego bohatera nie było stworzenie maszyny do szycia – ta powstała jako jeden z możliwych sposobów rozwiązania problemu. Celem było rozwiązanie problemu. Problem został rozwiązany. Czy dalszy rozwój produktu jest możliwy? Oczywiście – możliwości jest wiele, np. zmiana sposobu zasilania, zmiana trybu szycia, miniaturyzacja, itp.). Czy dalszy rozwój jest KONIECZNY? Absolutnie nie – produkt na swoim etapie rozwoju jest “good enough” i można zaryzykować twierdzenie, że wpisuje się w zasadę Pareto ~20% potencjalnych funkcji zaspokaja ~80% potrzeb. Co z nim dalej? To zależy od potrzeb klientów i otoczenia rynkowego, ale to już temat na inny wpis 🙂
Tego typu przemyślenia, pół-żartem, pół-serio pozwalają spojrzeć na wiele tematów z innej perspektywy – i taką właśnie perspektywę będę tutaj przedstawiał.
Pozdrawiam serdecznie,
Marcin
Odcinek z którego pochodzą screeny można obejrzeć na kanale Studia Miniatur Filmowych na YouTube (link poniżej). A z ciekawostek, które zauważyłem po raz pierwszy – spójrzcie kto współtworzył scenariusz 🙂