.st0{fill:#FFFFFF;}

Od Code Monkey do Developera Zwinnego: Wartości Scrum 

 27 lipca, 2021

Artur Komendatskyi

Co czyni Programistę dobrym w swoim zawodzie? Pierwsze, co przychodzi na myśl to: znajomość różnych aspektów wybranego języka oprogramowania, zrozumienie architektury oprogramowania, wzorców projektowych i tak dalej. Nikt o zdrowych zmysłach temu nie zaprzeczy. Natomiast, czy to wystarczy?

Ośmielę się stwierdzić, że nie. I dowodem tego jest fakt, że za dawnych czasów ponad 70% produktów informatycznych ponosiło klęskę. Powodem tego najczęściej nie był brak ludzi kompetentnych technicznie, lecz to, w jaki sposób zabierali się oni za sam proces. Trochę później osoby z najbardziej wydajnych firm tworzących oprogramowanie określili zasady pracy, dzięki którym właśnie oni byli najbardziej wydajni. „Odkrywamy nowe sposoby tworzenia oprogramowania przez robienie go i pomaganie innym go robić” – tak się zaczyna dokument z opisem wspomnianych zasad. Oczywiście, chodzi o Agile Manifesto!

Potrzebne są nie tylko kompetencje techniczne, ale i odpowiednie nastawienie – agile mindset. Już ustaliliśmy, że Zwinny Developer jest lepszy od zwykłego. Dziś spójrzmy, jakie to właśnie nastawienie do procesu tworzenia oprogramowania robi Developera zwinnym.  I będzie nam o wiele łatwiej zrozumieć to nastawienie, pamiętając o wartościach Scrum: Skupieniu, Otwartości, Szacunku, Odwadze i Zaangażowaniu.

 

Samozarządzający się zespół

Doskonale wiemy, że w Scrumie nie mamy takich ról jak Project/Product/Delievery/jakikolwiek inny Manager. Odpowiedzialność za zarządzanie (management) jest podzielona pomiędzy Odpowiedzialności Scrum. Product Owner zarządza Backlogiem, Scrum Masterprocesami Scrumowymi, a Developerzy – pracą nad Przyrostem. To znaczy, że sami (jako zespół!) dzielą pracę między sobą, sami są odpowiedzialni za jej organizacje, jakość i dowożenie. Obecność takich zespołów jest jednym z najważniejszych wskaźników, że działamy w Scrumie a nie ScrumBut.

Po co to jest potrzebne? Dobrze zgrana oraz zorganizowana grupa ludzi potrafi dokonać więcej, niż jeden człowiek, co oczywiste. Potrafi też dokonać więcej, niż suma tego, co każdy z jej członków zrobiłby sam. 1+1+1 = 3, jeśli każdy działa osobno, ale 1+1+1= >3, kiedy działamy jako drużyna, bo uzupełniamy swoje słabe strony.

Co prawda, im większa jest ta drużyna, tym jej trudniej jest koordynować się z powodu dużej ilości kanałów komunikacji. W pewnym momencie wysoka wydajność będzie niemożliwa. Dlatego najbardziej wydajne będą zespoły małe. I tu właśnie widzimy zalety samodzielnego zarządzania się przez zespół: zostawiamy tylko niezbędną ilość kanałów komunikacji, a każdy z nich jest skupiony na osiągnięciu Celu Sprintu (patrz: Skupienie).

A teraz kolejne pytanie: kiedy Produkt może osiągnąć sukces? Odpowiedź jest prosta: kiedy osiągnięty będzie Cel Produktu. A co można zrobić, żeby osiągnąć ten wielki cel? Też proste: podzielić go na małe, a następnie wykonywać je jeden po drugim.

W Scrumie każdy Sprint musi mieć konkretny i sprecyzowany Cel, który swoją drogą jest krokiem zbliżającym nas do osiągnięcia Celu Produktu. Kiedy mamy zgraną, wydajną drużynę, w której siły członków są połączone w pracy nad osiągnięciem sprecyzowanego Celu, mamy o wiele większe szansę, że to się uda. Cały wysiłek idzie w jednym, właściwym dla nas kierunku (znowu te Skupienie). W innym przypadku możemy błądzić, stać w miejscu lub nawet cofać się. Nic dziwnego, że tak mało Waterfallowych produktów osiągało swoje cele.

Typowo Waterfallowy manager szkodzi Developerom nie tylko przez ciągłe prośby o status update i narzucanie im nowych zadań, pogarszając ich Skupienie. Przy ciągłej obecności przełożonego ludzie mają skłonność czuć się obserwowani i oceniani, co szkodzi Szacunkowi („skoro próbują mnie kontrolować, znaczy, że nie szanują”). Do tego, będą też bardziej skłonni zamiatać pod dywan swoje problemy, obawiając się o konsekwencje. To pogarsza Otwartość.

Trudno mieć zespół wysoko zmotywowanych ludzi, jeśli oni nie czują Szacunku do siebie. A brak Otwartości może okazać się dla produktu zupełnie fatalny.

Czy lepiej mieć zespół, który z czasem się polepsza i rozwija, czy ten, który stoi w miejscu? I znowu, zdrowy rozsądek podpowiada, że zdecydowanie wygrywa ten pierwszy. Drugie pytanie: taki zespół w ogóle jest realny? Ośmielę się stwierdzić, że tak.

Doskonale wiemy, że w Scrumie jest takie wydarzenie jak Retro. Celem tego wydarzenia jest analiza skończonego Sprintu, aby znaleźć obszary do polepszenia. Otwartość, o ile jest obecna, sprawia, że zespół będzie przeprowadzał inspekcję swoich procesów jak należy, a potem będzie się adaptował. Jeśli w Sprincie n+1 zespół będzie o 5% bardziej wydajny, niż w Sprincie n, to w ciągu 50 Sprintów różnica będzie ogromna.

Osobiście widziałem, jak w ciągu 3 Sprintów zespół znalazł i rozwiązał około 10 dużych, powtarzających się przeszkód. Boję się wyobrazić sobie, ile ten Produkt by stracił w ciągu 100 Sprintów, gdyby te przeszkody pozostały nieruszone. Czasami dużym problemem może być nastawienie lub zachowanie kogoś z Interesariuszy albo wewnętrzne zasady Organizacji. Wtedy z góry zakładamy, że taka przeszkoda nie jest łatwa do usunięcia. Mimo wszystko, kiedy Developerzy wykazują Odwagę i jednak zgłaszają ten niemiły problem, okazuje się, że jest i na niego sposób.

Uważny czytelnik teraz stwierdzi, że zapomniałem o jeszcze jednej wartości – Zaangażowaniu. Otóż, wcale nie! W rzeczywistości, jako Developerzy zwinni, cały czas mamy do czynienia z tą wartością. Bez niej nie przebudujemy grupy specjalistów na wydajną drużynę. Nie będziemy się skupiać na osiąganiu Celów Sprintu, nie będziemy otwarcie przeprowadzać inspekcji i adaptacji, a o okazywaniu Odwagi już w ogóle można zapomnieć.

Jak widać, w samozarządzających się zespołach wszystkie Wartości Scrum są stosowane przez cały czas. Praca w takim zespole i reprezentowanie sobą takich wartości to ważne, ale nie jedyne cechy Developera Zwinnego. Jakie są inne? To już temat na kolejny artkuł.

Artur Komendatskyi


6 lat doświadczenia w IT, PSM I-II, PAL I, starszy inżynier oprogramowania, Scrum Master zespołów zwinnych, Agile Leader

Your email address will not be published. Required fields are marked

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}