wtorek, 22 listopada 2016

Scrum Master w klasycznej organizacji

Mówiąc o klasycznej organizacji należy na pewno wspomnieć o klasycznym modelu zarządzania. Najczęściej mamy do czynienia z piramidą dyrektorów i różnego rodzaju kierowników na różnych poziomach. W tego typu organizacjach struktura menedżmentu często jest bardzo rozbudowana i nierzadko niepotrzebnie skomplikowana. Niestety też rzadko na tego typu stanowiskach znajdują się naprawdę kompetentne osoby. No ale zaraz... dlaczego piszę o menedżmencie we wpisie o Scrum Masterze? Step by step.
Różne organizacje różnie definiują rolę Scrum Mastera. Dotychczas spotkałem się z następującymi typami:
  • Scrum Master/Team Leader - taka osoba zarówno dba o proces SCRUMowy swojego zespołu, ale również piastuje standardową rolę menadżerską dla swojego zespołu. To on podejmuje kluczowe decyzje, to on odpowiada HRowo za członków zespołu.
  • Scrum Master/Developer - specjalista pracujący w zespole jako dev lub QA jest jednocześnie Scrum Masterem. Nie ma roli menadżerskiej. Dba o proces SCRUMowy. Czasem jest to rola rotacyjna pomiędzy członkami zespołu.
  • Pure Scrum Master - osoba zajmująca się tylko i wyłącznie procesem SCRUMowym w danym zespole. Nierzadko taka osoba jest HR Leaderem dla osób spoza zespołu lub developerem w innym zespole.
Co na to SCRUM? Nic. SCRUM nigdzie nie zakazuje tego typu konfiguracji. Zwraca jedynie uwagę, że rola Scrum Mastera, sama w sobie, nie jest rolą menadżerską. Tu wszystko pasuje, gdyż można być i Scrum Masterem i menadżerem. Zdrowa implementacja SCRUMa to implementacja dostosowana do realiów i potrzeb danego środowiska. Oj, zaraz ktoś zarzuci mni herezję i promowanie tzw. SCRUM-BUT. Celem przedsiębiorstwa jest zarabianie pieniędzy i należy takie frameworki jak SCRUM zastosować tak, by tych pieniędzy zarabiać więcej. Kiedyś chciałbym napisać o tym osobnego posta, gdyż temat jest bardzo szeroki. Ale wracając...

Który typ SM nadaje się dla klasycznej oranizacji? Zależy od etapu wdrożenia SCRUM w przedsiębiorstwie. Należy pamiętać, że w tego typu organizacji specjaliści nie są nauczeni samoorganizacji na poziomie zespołu. Procesy decyzyjne podejmowane są zawsze przez takiego czy innego menadżera. W doskonałym, krosfunkcjonalnym zespole SCRUMowym to zespół sam sobą zarządza. Dążenie do doskonalości musi potrwać i tak naprawdę nigdy się nie kończy. Tygodnie, miesiące, lata. To trudny proces, gdyż trzeba wpłynąć na mentalność specjalistów (zepsutą przez klasyczną organizację pracy) i na ich pewność siebie na poziomie zespołu. Moje doświadczenie mówi, że na pierwszym etapie wdrożenia SCRUMa w klasycznej organizacji należy zastosować pierwszy typ, czyli Scrum Master/Team Leader. Osoba taka przez pierwszych kilka tygodni, miesięcy uczy specjalistów czym jest proces SCRUMowy. Ważnym jest by SM od początku zaznaczał, że dążymy do czegoś innego i aktualny stan nie jest stanem docelowym. Specjaliści są różni, różnie nastawieni do zmian, różnie zmotywowani. Nie wolno z dnia na dzień obracać ich świata zawodowego do góry nogami. Nie wolno jednego dnia kazać im słuchać się jednego menadżera, by drugiego dnia kazać im samym sobą zarządzać. To trwa i trzeba mieć tego świadomość. Wyższy menedżment firmy musi mieć tego świadomość. W tym etapie wdrożenia rola Scrum Mastera jest niezwykle ważna i jednocześnie praca jaką musi wykonać jest bardzo trudna. Osobiście uważam, że powinna to być osoba z wewnątrz organizacji, która rozumie jak ona działa. Zatrudnianie wybitnego SM z zewnątrz może w tym wypadku skończyć się katastrofą. Warto więc wybrać osobę, która chce rozwijać się w roli SM i ma umiejętności menadżerskie, które przekaże, na przestrzeni czasu, zespołowi. 

Co dalej? Płynnie należy oddawać zarządzanie zespołowi. To temat na osobny wpis. Ważnym jest, by docelowo Scrum Master przestał być klasycznym menadżerem (podejmującym wszystkie decyzje) danego zespołu. 

środa, 20 kwietnia 2016

Serwis (maintenance) oprogramowania a.. SCRUM - podejście pierwsze

Ach ten serwis... zawsze problematyczny, zawsze nieprzewidziany, zawsze niepokojący. Każda firma wytwarzająca oprogramowanie musi je również utrzymywać. Jest to bardzo trudny etap w cyklu życia produktu i przysparza wielu problemów i kosztów. A co na to SCRUM? Czy można zastosować tą metodykę do poukładania maintenance'u, do jego zorganizowania? W jaki sposób uwzględnić serwis w scrumowym procesie wytwarzania?

Znów, wszystko zależy od organizacji firmy, od tego jak na wysokim poziomie abstrakcji firma ma poukładaną odpowiedzialność za poszczególne etapy procesu produkcji oprogramowania. Modele są różne. Możemy spotkać firmy, w których jeden zespół/dział analizuje, projektuje, programuje itd aż do serwisuje, a są też firmy, również klasyczne, które mają dedykowane zespoły/działy odpowiedzialne za każdy etap produkcji.

Często stosuje się też dwu- lub trzyliniowy front serwisowy. Pierwsza linia wsparcia to najmniej doświadczeni specjaliści, którzy odbierają zgłoszenia od użytkowników, ale rzadko kiedy potrafią je rozwiązać, więc przekazują je do drugiej linii. Ten poziom to albo stały zespół całkiem niezłych specjalistów, albo zespół dyżurujących programistów. Trzeci poziom to programiści, którzy wytwarzają oprogramowanie, do którego zgłoszono błąd. Przy takiej organizacji naszemu klasycznego SCRUMowi jest łatwiej, gdyż na 3cią linię wpada tych zgłoszeń niewiele, przy założeniu, że wcześniejsze linie wsparcia są dość kompetentne.

Gorzej niestety temat wygląda tam gdzie zespół scrumowy zajmuje się całym lub większością serwisu. SCRUM nie jest na to gotowy, a dlaczego? Gdyż SCRUM nie jest metodyką przeznaczoną do organizacji maintenence'u softu. SCRUM możemy zastosować tam, gdzie możemy zaplanować pracę, gdzie ta praca jest przewidywalna, gdzie mamy zdefiniowane cele na przyszłość. Serwis takim celem nie jest, gdyż, tak jak napisałem na początku, jest nieprzewidywalny.

No dobrze... ale jak żyć? Najpewniej sposobów radzenia sobie w takiej sytuacji jest wiele. Jako Scrum Master wyszedłem serwisowi naprzeciw i jeszcze raz zadałem pytanie o przewidywalność serwisu. Odpowiedź była wciąż ta sama - serwis jest nieprzewidywalny. Ale... jego wielkość... JEST przewidywalna. Korzystając z archiwów serwisowych możemy w bardzo prosty sposób stwierdzić ile czasu cały nasz zespół i jego konkretni członkowie poświęcali w przeszłości na serwis.

Dla przykładu, w jednym z zespołów weryfikowałem ile czasu każdy ze specjalistów poświęcił na serwis w każdym z ostatnich 3 miesięcy. Wyliczałem średnią. Korelowałem ją z nadchodzącym miesiącem (np czy nie jest to miesiąc, w którym standardowo, z jakiegoś powodu, użytkownik zgłasza więcej problemów) i miałem współczynnik, przez który mnożyłem czas dostępny na nadchodzący sprint. To tyle, nic więcej nie potrzebowałem. W wyniku takiej analizy otrzymywałem czas, który mogliśmy zaplanować danemu specjaliście w danym sprincie. Możliwym również jest stosowanie bardziej interesujących metod analizy serwisu, np trend czy algorytmy predykcji.

Jak zastosowanie tej metody wpłynęło na mój zespół? Bardzo dobrze - dzięki niej zyskaliśmy przybliżoną wiedzę o dostępnej mocy przerobowej każdego specjalisty - wcześniej było to niemożliwe, gdyż podczas planowania zostawialiśmy bliżej nieokreślony bufor na serwis, co często skutkowało nierealizowaniem zaplanowanych zadań LUB 'pustymi' godzinami roboczymi, które przecież można byłoby zapełnić innymi zadaniami z Product Backlogu.

Serwisu nie można się bać. Serwis trzeba analizować w każdy możliwy sposób. Podobnie jak stosowany w zespole SCRUM. Nigdy nie jest tak, że usprawnienia, które wprowadziliście będą działały zawsze - idea zwinności odnosi się nie tylko do podmiotu, który organizuje SCRUM, ale również do samego procesu stosowania tej metodyki.