Thursday, September 6, 2018

Jestem Scrum Masterem, co mam robić?

Śmieją się developerzy ze ScrumMasterów, że ci nic nie robią. Niby żartem, niby po przyjacielsku, ale boli. Gdy ScrumMaster zostaje ScrumMaster jedne z pierwszych pytań, które sobie zadaje to:
  • No i co ja mam teraz robić?
  • A co jeśli zapomnę jak się programuje?
  • A co jeśli znudzi mi się programowanie
Jedna z dróg, którą może wybrać SM na wdrożenie Scruma wiedzie przez cztery następujące etapy:
  1. Framework by Guide
  2. Jakość techniczna
  3. Wartości i wyjście poza zespół
  4. Nieustanny tuning DoD
W tym modelu, SM może zająć się doprowadzeniem do zaistnienia następujących rzeczy:
  1. Framework by Guide
    • Zaimplementowanie w pracy zespołu ról: SM, PO z biznesu, SM, DevTeam
    • Zaimplementowanie w pracy zespołu: sprintów stałej długości, DoD, Planningu, Review, Daily, Retro, regularnego refinementu PBL, Product Backloga, Spring Backloga
    • Biznesowe cele sprintów
    • Zaimplementowanie w pracy zespołu: biznesowego inkrementu produktu na koniec sprintu, współpracy między zespołem a PO, która nie wymaga sztywnego DoR
    • samoorganizacja Zespołu deweloperskiego
    • Doprowadzenie do tego, aby testerzy byli pełnoprawnymi członkami Zespołu scrumowego, a nie podzespołem w zespole
  2. Jakość techniczna
    • Wdrożenie 1-3 metryk kodu oraz systematyczna praca nad ich poprawianiem; propozycja na początek CC oraz LOC na poziomie metod i klas
    • Zmierzenie długu technicznego, przygotowanie planu jego spłaty i wynegocjowanie tego z PO
    • Wdrożenie Continuous Integration -> Continuous Deployment -> Continuous Delivery
    • Wprowadzenie regularnego Code Review w zespole wraz z narzędziem, który je wspiera
    • Wdrożenie Test/Behaviour Driven Development
    • Wdrożenie automatycznych testów funkcjonalnych wraz z narzędziem, które je wspiera; nauczenie PO i/lub interesariuszy formułowania wymagań w formie scenariuszy
    • Wdrożenie Domain-Driven Design, nawiązanie współpracy z ekspertami domenowymi, wdrożenie Modelling Whirpool
    • Regularne Architectural Kata
    • Regularne Refactoring Kata
  3. Wartości i wyjście poza zespół
    • Doprowadzenie do sytuacji, w której prace zespołu są niezależne od innych jednostek organizacji
    • Pomoc managerowi zespołu w na nowo zdefiniowaniu swojej roli w stosunku do zespołu scrumowego
    • Doprowadzenie do określenia zasad współpracy pomiędzy jego/jej zespołem a innymi zespołami i/lub jednostkami organizacyjnymi
    • Stymulowanie wewnętrznych inicjatyw typu "craftsmanship": wewnętrzne konferencje, warsztaty, szkolenia, mini-społeczności skupione w okół danych technologii albo ról (np. gildie)
    • Eksponowanie osiągnięć zespołu na zewnątrz organizacji: konferencje branżowe, artykuły w prasie i na portalach branżowych
    • Wdrażanie i promowanie empirycznego podejścia do pracy tj. wprowadzanie przejrzystych metryk przy jednoczesnym uczeniu organizacji jak z nich sensownie korzystać
  4. Nieustanny tuning DoD
    • Doprowadzenie do sytuacji, w której "Done" oznacza "dostępne dla klientów"
    • Praca na skróceniem time to markiet, time to feedback
    • Dążenie do sytuacji, w której ani zespół ani organizacja nie potrzebują Scrum Mastera, gdyż jego obowiązki zostały osmotycznie przejęte przez członków zespołu i innych pracowników organizacji, którzy bezpośrednio dostarczają wartość dla jej klientów

Tuesday, August 28, 2018

SegFault



Cieszę się, że to właśnie ONI zrobili nową konferencję.
Z każdym z chłopaków miałem okazję wielokrotnie współpracować i myślę, że łączą ich trzy rzeczy:
  • absolutnie niedogmatyczne podejście do programistycznych mód
  • alergia na bullshit
  • olewczy stosunek dla autortetów

Nie wiem jak dla Was, ale dla mnie to pachnie totalną konferencyjną innowacją. Do zobaczenia we Wrocławiu!

Sunday, July 22, 2018

Zarządzanie "flow"

Miałem ostatnimi czasy nieprzyjemność gościć w hotelu Royal Park Elenite w Bułgarii. Miejsce to do złudzenia przypomniało mi czasy przedszkolne w epoce słusznie minionej, gdy z całych sił starałem się "swoją nauką przynosić chlubę moim rodzicom oraz mojej ojczyźnie Polsce Ludowej"...

Jednak to, co bawiło mnie trzydzieści kilka lat temu, teraz mnie po prostu wnerwiało. Zarządzając tak dużym obiektem można schrzanić wiele rzeczy. Odniosłem wrażenie, że w Royal Park dokumentnie schrzanili je wszystkie.

Żeby tam jakoś wytrzymać postanowiłem zająć się czymś interesującym. Zacząłem przyglądać się stołówce, czy też sali bankietowej - jak nazywano stołówkę.

Byłem naprawdę pod wrażeniem kreatywności designerów tej sali, która już przy niewielkiej liczbie gości rezonowała nieprawdopodobnym chaosem.

Poniżej wklejam poglądową mapę tejże sali.


Straty, straty, straty

Zacznijmy od wylistowania zaobserwowanych przeze mnie start, czyli rzeczy, których w stołówce nie chcielibyśmy obserwować.

  • długie i uciążliwe kolejki - na mapie zaznaczone czerwonymi trójkątami
  • częste kolizje obsługą albo z innymi gośćmi
  • goście pozostawiają dużo niezjedzonych potraw
  • długi czas kompletowania posiłku
  • masło i cukier zmieniają miejsce między obiadem a kolacją
  • gdy zostawisz skompletowany talerz na stoliku bez opieki, to może on zostać sprzątnięty jako "zużyty"

Straty wydają się ze sobą niepowiązane. Przyjrzyjmy się im jednak z perspektywy stoiska z Wypiekami. Na tym stoisku:

  1. Pracuje jedna osoba
  2. Nie nadąża z wypiekami za popytem na nie
  3. W skutek czego powstaje kolejka
  4. Gdy nastąpi dostaw wypieków, to czekający w kolejce nakładają sobie duże ilości
  5. Zatem wypieki znów szybko znikają
  6. I znów powstaje kolejka z powodu niezaspokojenia popytu na wypieki

Przyjrzałem się ilości nakładanych potraw przez gości, a następnie sam sobie tyle nałożyłem. Mimo, że jestem zdrowym, silnym 96kg facetem, zmiękłem.

Nie dałem rady pochłonąć tego wszystkiego bez przeżarcia się. Nie mówiąc już o zakończeniu posiłku porcją słodyczy i miską lodów.

Wnioski #1

Na podstawie ww. obserwacji stawiam następującą hipotezę: nieefektywność procesu produkcji prowadzi do kolejek, oraz zwiększonego popytu i szybkiego wysycania produktów, także do gromadzenia nadmiernych zapasów "na wszelki wypadek", co z kolei ponownie skutkuje niedostępnością produktów, a tym samym kolejkami.

Gdy zobaczymy to na diagramie przyczyn i skutków, od razu odkryjemy pętlę.

Wnioski #2

Zarząd hotelu próbuje radzić sobie z kolejkami w ten sposób, że dzieli gości na dwie grupy. Pierwsza grupa przychodzi na śniadanie o godzinie 7, druga o 8.30. Zamieszczony diagram wskazuje, że jest to błędne podejście. Dzielenie na grupy zniweluje okresowo objawy problemów. Przyczyny pozostaną nietknięte ponieważ dzielenie na grupy nie likwiduje pętli.

Wnioski #3

Zastanawiałem się, gdzie się "wlewa" do tej pętli, co ją startuje. Po krótkiej obserwacji odkryłem winowajcę.

Dla przykładu stoisko z wypiekami obsługuje tylko jedna osoba, której zadaniem jest: ułożenie na blachę, włożenie do pieca, wyjęcie z pieca, a następnie ułożenie do wypieków w koszykach. Wypieków w trakcie śniadania są 3-4 rodzaje. Osoba obsługująca po prostu nie ma tylu rąk.

Druga obserwacja jest taka, że choć personel niezwykle się stara, to oni zwyczajnie nie wiedzą jak konkretnie powinni pracować. Ich praca nie została zaprojektowana. Jest spontaniczna. Sęk w tym, że spontaniczność bardzo słabo się skaluje.

Wnioski #4

Przypuszczam, że to iż tylko jedna osoba obsługuje Wypieki, wynika z oszczędności kosztów. Moim zdaniem jest to podejście błędne. Na podstawie diagramu przyczyn i skutków, uważam, że dołożenie dodatkowej osoby, zaprojektowanie ich współpracy oraz przeszkolenie skutkowałoby:

  • Zmniejszeniem kolejek
  • Mniejszą ilością wyrzucanego jedzenia
  • Poprawą ogólnej satysfakcji gości

Zatem co do pieniędzy - zwiększenie kosztów na dodatkowy etat zostanie zrekompensowane oszczędnościami na ilości wyrzucanego jedzenia.

Paradoksalnie może się okazać, że większą ilością osób będziemy przygotowywać mniejszą ilość jedzenia, gdyż poprawa płynności procesu dostarczania jedzenia zniechęci gości do gromadzenia nadmiernych zapasów na talerzach.

Skoro o procesie mowa...

Dimityr idzie na śniadanie

Popatrzmy na wycieczkę po restauracji jak na proces, w którym na kolejnych etapach, wędrujący przezeń gość otrzymuje jakąś wartość - potrawę, sztućce, itp.

Weźmy pod uwagę hipotetycznego gościa hotelowego - nazwijmy go Dimityr - który przyszedł z dzieckiem, aby zjeść śniadanie: ciepły posiłek, płatki dla dziecka, herbatę, trochę zieleniny, a na deser słodką bułkę ze stoiska z wypiekami

Poniższy rysunek pokazuje trasę Dimityra, którą przebędzie w stołówce, aby zjeść śniadanie.

Jak można przypuszczać, przy przeciętnej setce gości na sali, prawdopodobieństwo kolizji z innymi głodnymi, kimś z obsługi, albo poślizgnięcia się na jakimś mokrym obrzydlistwie jest bardzo wysokie. Sam się kilkukrotnie niemal wyłożyłem niosąc dziecko na rękach.

Najbardziej niebezpieczny sposób rozwiązywania problemów w tym procesie można zobrazować przez to, co się dzieje z mlekiem do płatków śniadaniowych...Jeśli przyjrzysz się ponownie mapie, zauważysz, że tuż przy płatach stoi naczynie z zimnym mlekiem. Natomiast mleko ciepłe znajduje się w przeciwległym końcu sali, w okolicy ekspresów do kawy.

Odkryłem, że jest tak dlatego, iż w okolicy płatków brakuje gniazdka do podłączenia pojemnika, który podtrzymywał by jego temperaturę. Na tym polega właśnie dramat tego rozwiązania - na naginaniu procesu biznesowego pod ograniczenia techniczne. Do zapamiętania: nie wolno tego robić. To niemal zawsze prowadzi do chaosu.

Jeśli ograniczenia techniczne nie pozwalają na poprawne wsparcie procesu, już lepiej go okroić - czyli zrezygnować z wystawiania płatków. Albo wystawić tylko zimne mleko przy płatkach, a obok ze dwie mikrofale.

Mityczna wartość biznesowa

Zdefiniujmy, czym jest owa wartoś biznesowa. Dla mnie, jako uczestnika chaotycznej gonitwy po stołówce wartość biznesowa, czyli to czego przede wszystkim oczekuję od restauracji, do której przychodzę na śniadanie jest:

  • odwrotnie proporcjonalna do łącznej drogi, którą muszę przebyć, aby skompletować śniadania i rozpocząć jedzenie
  • odwrotnie proporcjonalna do ilość kolizji z innymi uczestnikami procesu
  • odwrotnie proporcjonalna do sumarycznego czasu potrzebnego na skompletowanie śniadania (włączając w to oczekiwanie w kolejkach)

Chociaż czas można w prostym przypadku wyprowadzić z drogi, to dla gościa restauracji czym innym jest dreptanie pomiędzy stoiskami, a czym innymi przedłużające się czekanie.

Uściślijmy zatem:

gdzie: Vb - wartość biznesowa, L - łączna droga, t - łączny czas, n - liczba kolizji, k - współczynnik proporcjonalności. Przyjmijmy roboczo, że n = 1 jest po prostu wartością minimalną i nie oznacza kolizji.

Warto się przy okazji zastanowić, jaką interpretację fizyczną ma współczynnik proporcjonalności - k. Prawdą jest, że:

Można więc przyjąć, że k jest jednostkową - minimalną - wartością oczekiwaną przez klienta, przy której wypadkowa czynników wpływających na wartość biznesową osiąga wartość minimalną równą 1.

Wnioski #5

Należałby by dążyć do tego, aby gość uzyskał wspomnianą podstawową wartość biznesową za jednym razem, z jednej lokacji na zasadzie "grab and go". Na przykład: mleko plus płatki, plus mikrofala albo gotowe hot-dogi.

Wnioski #6

Zatrzymajmy się jeszcze na chwilę przy kolejce do dań ciepłych. Jej przyczyna nie wynika z niedostatecznych dostaw, jak w przypadku stoiska Wypieki. Tu chodzi po pomieszanie przetwarzania szeregowego z równoległym.

Zestawy dań powtarzają się trzykrotnie w rzędzie. Goście zaś ustawiają się w jednej kolejce do wszystkich dań. Większość gości nakładało sobie jedną bądź dwie potrawy. Zatem jeśli akurat brakowało tylko jednej potrawy, na którą czekała tylko jedna osoba, to blokowało to całą kolejkę. W ten sposób większość gości z kolejki oczekiwała na dostarczenie potrawy, której akurat nie chcieli sobie nałożyć.

Widząc bezsens tej sytuacji uparcie pomijałem kolejkę, co spotykało się z powszechnym niezrozumieniem.

Problem ten można by teoretycznie rozwiązać, jeśli powtarzające się zestawy dań rozmieści się równolegle zamiast szeregowo - na zasadzie wysp. Ułatwi to spontaniczne powstawanie wielu kolejek do jednej wyspy.

Podsumowanie

Po opisanym przemyśleniu sprawy mam następujące rekomendacje:

  • zredukować ilość serwowanych potraw; mniejsze urozmaicenie na rzecz płynniejszego procesu
  • zwiększyć liczbę osób przygotowujących potrawy na bieżąco, aby zapewnić większą ilość regularnych dostaw
  • tam, gdzie występują ograniczenia techniczne nie kombinować, tylko odciąć tę gałąź procesu np. zlikwidować płatki
  • wprowadzić miejsca potraw "grab and go, które nie wymagają kompletowania np. gotowe hot-dogi
  • preferować równoległe ustawienia potraw zamiast szeregowych
  • dążyć do takiego organizowania przestrzeni, aby preferować więcej małych kolejek niż mniej dużych
  • mierzyć ilość wyrzucanego jedzenia
  • mierzyć długość i częstość występowania kolejek przy stanowiskach z potrawami
  • przeszkolić personel i zapoznać go z oczekiwanym flow na stołówce

Sprawy, którym należy się jeszcze przyjrzeć, to:

  • ustawienie stolików w stosunku do potraw
  • trasy, po których porusza się personel z dostawami oraz ze zużytymi naczyniami
  • utrzymywanie czystej podłogi