Należę do zespołu, który obecnie używa Scruma, i rozważamy dodanie programowania parowego, aby poprawić umiejętności interdyscyplinarne zespołu, a także pomóc zmniejszyć wady dzięki filozofii „dwie głowy są lepsze niż jedna”.
W naszym zespole każdy członek zespołu zazwyczaj zapisuje się na pełne obciążenie podczas planowania sprintu (przy czym „pełny” oznacza liczbę krótszą niż 40 godzin tygodniowo, umożliwiającą spotkania, współpracę itp.), Z jednym dedykowanym właścicielem każde zadanie. Uważam, że jest to dość powszechne w zespołach Scrum, ale niekoniecznie musi to wynikać z książki.
W szczególności staram się uniknąć sytuacji, w której członkowie zespołu wahają się sparować, ponieważ mają swoje własne zadania do pracy, co - obawiam się, że prawdopodobnie zdarzy się, jeśli zespół po prostu samoorganizuje się bez poświęcania czasu na parowanie .
Biorąc to pod uwagę, jaki jest najlepszy sposób na uwzględnienie wysiłku / godzin / punktów historii w scenariuszu parowania, aby upewnić się, że mamy odpowiednio przydzielony czas na parowanie?
Niektóre rozważane opcje to:
- Pozwól dwóm osobom zapisać się do każdego zadania i (z grubsza) podwoić liczbę szacowanych godzin
- Do każdego zadania zapisuje się tylko członek zespołu „z ręki na klawiaturze”, który jest szacowany na podstawie szacunkowych godzin tej osoby. Każdy członek zespołu, który będzie wspierał parowanie, zapisze się na mniej zadań w sprincie, aby dać czas na wsparcie parowania.
źródło
Myślę, że inni już udzielili dobrych odpowiedzi, ale dodam moją tylko dlatego, że myślę, że twoja drużyna właśnie przeniosła się do Scrum, a teraz jesteście w bardzo podobnej sytuacji, kiedy byliśmy na początku.
Po pierwsze, nasze wprowadzenie do Agile, a dokładniej Scrum nie było bardzo płynne. Zasadniczo zarząd upadł i powiedział: od tego dnia będziesz robił Scrum i jest to proces, którego wszyscy będziecie przestrzegać. Tyle o ludziach ponad procesem .
Proces, który pierwotnie przeprowadziliśmy (ślepo, mogę dodać) skończył bardzo podobnie do tego, jak opisałeś. Ludzie otrzymują przydzielone zadania, wszyscy zostają zarezerwowani, wszyscy wracamy do biur i podłączamy się. Codziennie mamy nudne spotkanie stand-up.
Kluczem do zrozumienia jest to, że Agile, w tym Scrum, dotyczy ludzi. Kiedy zespół rozpoczyna planowanie iteracji, nie pozwól swojemu Scrumowi mistrzowi (który prawdopodobnie jest twoim menadżerem) przypisać ci godziny, historie i zadania. To całkowicie zależy od zespołu. Myślę, że dla wielu ludzi jest to bardzo trudna koncepcja, ponieważ przez wiele lat wcześniej przychodzili do pracy i mieliby szefa (kierownika, kierownika technicznego ...), który po prostu zlecałby pracę. Nurkują w Scrumie, ale wszyscy (w tym sam mistrz scrum) nadal działają w tym samym trybie.
Pewnego dnia będziesz tego dość, więc zaczniesz czytać książki, blogi i zadawać podobne pytania na temat wymiany stosów. Uświadomisz sobie, że jako programista i członkowie zespołu powinniście być siłą napędową opowiadań i zadań. Jeśli uważasz, że skorzystasz z programowania w parach, z pewnością utwórz 2 zadania dla każdego inżyniera i przydziel im oba godziny. Jedyne, co powinien zrobić mistrz scrum, to zmierzyć prędkość w stosunku do ukończonych historii, które dostarczyłeś JAKO ZESPÓŁ w poprzedniej iteracji.
Kolejną rzeczą, która mnie denerwuje, jest to, że ludzie mówią, że ich pojemność ZAWSZE wynosi 75% całkowitej liczby godzin, więc to oni zobowiązują się, a następnie przez cały czas trwania iteracji skarżą się, że a) nie mogą pomóc lub b) nie mogą zrobić dobrze, ponieważ przydzielono im zbyt wiele godzin. Ludziom nie należy mówić, ile godzin zobowiązać, a na pewno powinni się wycofać, jeśli Scrum Master próbuje wyciągnąć coś takiego! Każdy powinien zobowiązać się do tego, co mu odpowiada. Na przykład jestem liderem zespołu i często kończę przypadkową nieplanowaną dyskusję na temat projektu lub pomagam komuś z kodem lub rozwiązuję dziwne rzeczy, więc moja pojemność nigdy nie przekracza 50%.
Naszemu zespołowi zajęło 4 cykle wydawnicze, aby nauczyć się nie robić rzeczy, o których właśnie wspomniałem, i mimo że zdecydowanie się poprawiliśmy, jeśli zapytasz ekspertów, nie jesteśmy nawet w połowie zwinni. Wciąż dużo się uczy.
Aktualizacja 1: Odpowiedź na komentarz Cliffa Cóż, zaoferowałeś swoje uszy, więc oto ...
Masz rację, zmiana kulturowa jest kluczowa, ale ta zmiana nie musi nastąpić na poziomie wykonawczym. Twój własny menedżer grupy może zmienić kulturę w zespole i odizolować was od korporacyjnych BS, z którymi ma do czynienia. To, co opisujesz, to DOKŁADNIE nas od 2007 do 2010 roku. Nasz zespół (i inne zespoły) po premierze wydał flop. W jednym z wydań wykorzystującym „proces zwinności” kierownictwa udaje nam się, aby 9 osób wykonało pracę, która zwykle byłaby wykonywana przez jedną osobę, co zajęło nam dwa razy więcej czasu. Miałem tyle wolnego czasu, że nawet zaktualizowałem swoje CV.
Następnie rozmawiałem z moim szefem i wyjaśniłem mu wszystkie te rzeczy, jak zwinny jest człowiek i że jeśli chcesz, abyśmy dbali o produkt, pozwól nam podejmować decyzje, które wpływają na sposób, w jaki pracujemy i dostarczamy produkt. Myślę, że postanowił zrobić z tego eksperyment, wprowadził każdą zmianę, którą ... no cóż, głównie ja, ale dużo rozmawiam z resztą zespołu, stąd 50% pojemności :) ... zaproponowałem. Możliwe, że doszedł do wniosku, że jeśli dokona wszystkich zmian, o które prosimy, a my nadal ponosimy porażkę, wróci ze zwycięskim „Tak wam powiedziałem”.
W ciągu ostatnich 12 miesięcy wyeliminowaliśmy tak wiele „głupich”, że nawet nie jest to śmieszne. Nasze spotkania stand-up mają teraz sens, ponieważ pracujemy razem, a nie w izolacji. Nadal mamy (przynajmniej na razie) własność określonych części produktu, ale bardzo często przenosimy się do kodu innych użytkowników. Stale przeprowadzamy przeglądy kodu, aby nie tylko członkowie zespołu uczyli się innego kodu, ale także uczyli się lepszych technik kodowania i projektowania. Podzieliliśmy monolityczny, gigantyczny „zwinny” zespół na 3 różne zespoły, więc planowanie i inne spotkania są znacznie krótsze, a ludzie faktycznie się nimi przejmują, ponieważ nie siedzą i nie słuchają o rzeczach, na których im nie zależy. JA' widzieliśmy noce, kiedy 4 na 5 naszych facetów (jeden z zespołów) będzie online o 23:00 wieczorem i nikt tak naprawdę nie powiedział nam, że musimy ciężko pracować ani nigdy nie wywierali na nas presji, abyśmy pracowali ponad 40 godzin. Ludzie, którym pół roku temu to nie obchodziło, nagle są zaręczeni i podekscytowani pracą, którą wykonują. Wystarczyło, że nasz menedżer powiedział: „Wy decydujecie, co jest słuszne i robicie to, co musicie zrobić, a ja będę trzymać korporację BS z dala od zespołu, jak tylko mogę”.
Zaczęło się jako eksperyment (moje podejrzenie, nigdy mi tego nie powiedział), ale teraz nasza grupa kopie tyłek w porównaniu z innymi grupami programistycznymi w dziale, a nawet mamy innych programistów, którzy teraz próbują przyjść i dołączyć do nas.
Największą przeszkodą dla nas od czasu tej zmiany (i nadal stanowi problem) jest fakt, że inżynierowie w normalnym środowisku korporacyjnym są jak myszy eksperymentalne w klatce. Nawet jeśli Twój menedżer zdecyduje się naprawdę „zwinnie” i usunie klatkę, wszyscy są w niej od tak dawna, nawet nie zdają sobie sprawy, że są wolni. Więc nawet z całą swobodą nadal zachowują się, jakby nadal byli ograniczeni. Myślę, że pomogłoby to mieć w zespole co najmniej kilka osób (takich jak ty), którzy wychodzą poza granice grupy i szukają lepszych sposobów działania. Następnie wróć do tej grupy i trochę ją zamieszaj.
W twoim przypadku być może programowanie w parach nie jest rozwiązaniem, jeśli szukasz innej siły zewnętrznej, która zstąpiłaby na zespół i powiedziała mu, jak pracować. Zamiast tego wyrzuć zasady, usiądź z nimi bez zarządzania i zapytaj ich, co chcą zrobić? Co sprawi, że będą szczęśliwi? Produktywny? Zidentyfikuj największe problemy, a następnie zapytaj ZESPÓŁ, jakie według nich powinno być rozwiązanie.
źródło
Scrum nie nakazuje, aby zadania były przypisane do poszczególnych osób - wręcz przeciwnie. Odpowiedzialność za zadania do wykonania spoczywa na Zespole jako całości. Jeśli zespół chce przeprowadzić programowanie w parach, gdzie każda para podejmuje zadanie, z pewnością powinien to zrobić.
Z przewodnika Scrum :
źródło
Przypisywanie zadań do planowania spotkania jest dokładnie tym, co stoi w sprzeczności z decyzjami czasowymi i umacnia zespół. Jest to również sprzeczne ze zwinnością sprintu, ponieważ od pierwszego dnia każdego dewelopera dokładnie ustalono, co powinien zrobić. Oznacza to również, że każde zadanie musi być bardzo poprawnie oszacowane, co prawie nigdy nie ma miejsca.
Imho szacowanie zadań jest zbędne. Zaangażowałeś się w zestaw opowiadań, a planowanie spotkania 2 wystarczy, aby podzielić je na zadania i stworzyć karty do tych zadań (lub wypełnić je w jakimś systemie). Nie ma czasu na oszacowanie każdego zadania, a oszacowanie to nie powinno pochłaniać czasu na prawdziwy rozwój.
Dlaczego? Oszacowanie jest śmieciem. Jak to może być śmieci? Ponieważ dokonanie większej ilości oszacowań nie przyniesie większej wartości biznesowej = jest to śmiecie i powinno zostać zredukowane do niezbędnego minimum. Minimum to szacowanie / zmiana wielkości opowieści, które pomogą ci zaangażować się. Po podjęciu zobowiązania nie potrzebujesz żadnych innych szacunków. Po prostu wiesz, że masz ustaloną datę dostarczenia czegoś, co popełniłeś. Będziesz albo mógł dostarczać zaangażowane historie, albo nie. Szacowanie zadań nie pomoże ci w tej dostawie.
Pominięcie oszacowania zadania w żaden sposób nie wpłynie na widoczność postępu sprintu, ponieważ jedynym prawdziwym pomiarem postępu jest liczba ukończonych historii (punktów opowieści), które można nadal wyświetlić na wykresie spalania sprintu.
Żeby było jasne. Zaangażowanie oznacza = Zrobimy to . Nie spróbujemy tego zrobić ani nic innego. Tak, możesz nie zrealizować tego, co zobowiązałeś się, ale twoje zobowiązanie powinno opierać się na przekonaniu, że przy obecnej wiedzy dostarczysz wybrane historie. Jeśli masz takie przekonanie, nie potrzebujesz innej oceny.
Zawsze korzystałem ze Scruma w taki sposób, w jaki programista wybiera nowe zadanie po zakończeniu ostatniego. Deweloperzy zazwyczaj mówią, który wybiorą na spotkaniu stand-up. Zasadniczo nie ma reguł, które zadanie powinien wybrać. To zależy od samoorganizacji zespołu i dyskusji między członkami zespołu (poza spotkaniem stand-up). Jest to odroczenie decyzji do najnowszego możliwego punktu, w którym możesz zareagować na niektóre zmiany i problemy bez wpływu na swój wymyślony plan. Samo zadanie może nawet zmienić właściciela, jeśli ktoś ma problemy z jego wykonaniem - alternatywnie takie zadanie można opracować w parze.
Jak może być w to zaangażowane programowanie par? Z łatwością. Zespół angażuje się, a zespół musi zrobić to, aby zrobić miejsce dla wszystkich technik programistycznych potrzebnych do zapewnienia przyrostu roboczego produktu. Czy oceniasz zadanie lub opracowanie zadania i testowanie zadania? To drugie podejście jest całkowicie błędne. Testowanie jest częścią rozwoju i w ten sam sposób przegląd kodu lub parowanie jest częścią rozwoju, jeśli to konieczne.
Wykonanie programowania w parach powinno skutkować szybszym wykonaniem zadania z mniejszą liczbą błędów i lepszą jakością kodu. Nie będzie dwa razy szybszy, więc będzie jeszcze trochę narzutów, ale rzeczywisty wpływ na zaangażowanie spowodowane okazjonalnym parowaniem powinien być bardzo niewielki. Nie dotyczy to mentoringu ani nauczania. Jeśli masz takiego programistę, który musi być mentorem lub nauczony, nie powinieneś w ogóle planować jego zdolności do sprintu, w którym uczy on podstawy kodu produktu lub jakiejś technologii.
źródło