Jaka jest rola wiodącego programisty w zwinnym zespole?

42

W nieagresywnym zespole programistycznym główny programista ogólnie :

  • Ustawia standard (kodowanie i inne)
  • Zespół bada nowe technologie
  • Ustawia kierunek techniczny dla zespołu
  • Ma ostatnie słowo w sprawach
  • Projektuje architekturę systemu

Jednak zwinny zespół działa inaczej:

  • Zwinny zespół będzie polegał na nowatorskim designie, a nie z góry
  • Zwinny zespół projektuje razem, a nie jest dyktowany przez jedną osobę
  • Zwinny zespół decyduje o własnym kierunku technicznym, który najlepiej jest zrealizować

Gdzie to pozostawia wiodącego programistę w zwinnym zespole? Czy można mieć wiodącego programistę w zwinnym zespole? Czy zwinny zespół wymaga od lidera różnych obowiązków?

Peter Bridger
źródło
Odpowiedź Matts na ostatni komentarz Chciałbym dodać, że główny programista powinien podejmować kluczowe decyzje architektoniczne, które wpływają na wiele elementów systemu. Również on ponosi tę odpowiedzialność i powinien zmienić zdanie, jeśli coś pójdzie nie tak.
user2236631

Odpowiedzi:

46

Nic zwinnego nie zmienia sposobu, w jaki powinien działać główny programista. Powinny one angażować resztę zespołu w podejmowanie decyzji dotyczących architektury systemu i kierunków technicznych bez względu na model rozwoju.

Wydawanie decyzji edyktem to okropny sposób działania każdego zespołu programistów. Zwinne sprawia, że ​​kupowanie od reszty zespołu jest bardziej wyraźnym procesem, a główny programista i tak powinien to robić.

To, że nie ma ustalonej roli głównego programisty w metodyce scrum, nie oznacza, że ​​opinie bardziej doświadczonych programistów nie są najbardziej szanowane. Zwinne nie pozwala wszystkim na szaleństwo na punkcie swoich własnych rzeczy, a następnie próbuje to wszystko trzymać razem, wciąż istnieje wspólna wizja i kierunek, który należy ustalić.

Ryathal
źródło
Czy możesz wyjaśnić, co masz na myśli, mówiąc: „Wydawanie decyzji edyktem to okropny sposób działania każdego zespołu programistów”? Zgadzam się z resztą twojego postu, ale zgadzam się z wymienionym oświadczeniem tylko w określony sposób, ale nie w inny sposób. Na przykład, jak zdecydować się na użycie SOA w warstwie bazy danych? Czy nie byłby to edykt, czy ktoś nie musiałby mieć ostatniego głosu? Pytam, ponieważ jestem liderem zespołu i wpadłem na tę właśnie sytuację. Zadzwoniłem, żeby nie używać SOA, w zależności od potrzeb biznesowych. Po prostu nie ma czasu, aby wszyscy programiści mogli dyskutować / dyskutować o każdym punkcie.
Brian
@Brian podejmujący decyzje dotyczące architektury byłby opowieścią w sprincie, prawdopodobnie przeznaczoną dla konkretnego członka, ale poza tym taką samą jak każda inna historia. Powinien zostać poddany recenzji, jak każda inna historia. Argumentem czasowym jest bzdura, jeśli zdarzyło Ci się spudłować X lub zdecydowałeś się spróbować Z, że wszyscy inni w zespole cię nie znają, W rezultacie poświęcisz więcej czasu na rozwój, nawet cały dzień kłótni o projekt byłby nieznaczny w porównaniu . Proste spotkanie / recenzja, aby powiedzieć „Wybrałem A, ponieważ X, Y, Z”. zajęłoby to prawdopodobnie godzinę i sprawił, że był to wspólny wysiłek.
Ryathal
30

W zwinnym zespole każdy powinien odłożyć swoje ego na bok.

Jeśli jeden z członków zwinnego zespołu ma większe doświadczenie niż inni, to prawdopodobnie zdarzy się, że doświadczony członek będzie zaangażowany w większość przeglądów kodu, a ludzie często będą uciekać się do doświadczenia tej osoby podczas podejmowania decyzji w zespole.

Tak więc „wiodący” programista będzie nadal „prowadził”, ale jako naturalna konsekwencja ich doświadczenia, a nie jako obowiązkowa funkcja ich tytułu.

To idealny świat, w którym ludzie mogą odłożyć swoje ego na bok. Powodzenia!

MetaFight
źródło
Nie zgadzam się Zbyt często widziałem pochopną decyzję, którą sam deweloper podjął ze złymi konsekwencjami tylko dlatego, że nie było ołowiu i deweloper nie był przyzwyczajony do takiej sytuacji. Pasterstwo kotów, mówię wam.
andrew.fox
20

Oprócz odpowiedzi Ryathala :

Mówisz o nowym wyglądzie i kierowaniu zespołem, jakby płynęły one z zespołu w doskonałej harmonii i harmonii. Grupy ludzi, grupy programistów szczególnie mają konflikty . Jako lider zespołu, twoja praca w zwinnym zespole jest bardziej sędzią lub katalizatorem niż w wodospadzie. Gdy zespół ma spór o to, na przykład, jakiego projektu użyć, upewnisz się, że ludzie mają równe zdanie i trzymają się sporów o wartość. I w końcu jesteś arbitrem, do którego zaproponowane rozwiązanie wybierze zespół, gdy ścieżka nie będzie jasna.

Jest to jeden z najważniejszych obowiązków lidera, ale wiele innych rzeczy jest potrzebnych, aby zgrupować grupę ludzi w zespół. Nadal musisz dawać przykład, jeśli chodzi o dobre kodowanie, i często to egzekwować (bezpośrednio lub poprzez stworzenie kultury do tego celu). Musisz ułatwić komunikację między wszystkimi członkami swojego zespołu, ponieważ raz dziennie w trybie stand-up nie będzie tego przerywać.

Inną ważną rzeczą, którą przeoczyłeś, są spotkania. Niepraktyczne jest doprowadzanie całego zespołu na każde spotkanie, na którym zespół musi wchodzić w interakcje z biznesmenami, innymi zespołami technicznymi itp. Jako lider zespołu jesteś jego przedstawicielem. Chodzisz na spotkania, żeby mogli zostać przy biurku i załatwić sprawę. Jesteś punktem kontaktowym, aby nie przeszkadzały im osoby zatrzymujące się bezpośrednio. Pracujesz, aby pobrać informacje ze świata zewnętrznego (nad czym pracują inne zespoły, jak wyglądają zwinne zespoły podczas następnego sprintu, jaki jest status tego otwartego wymagania itp.), Sprowadzić je dla nich i przekazać.

Krótko mówiąc, jesteś środkiem smarnym, aby upewnić się, że mogą działać płynnie.

Telastyn
źródło
1
Jest to szczególnie ważne w przypadku spotkań „Timeboxed”, co oznacza, że ​​spotkanie lub określona dyskusja nie potrwają dłużej niż X minut. Pod koniec czasu ktoś podejmuje decyzję i kontynuuje proces. Może to być wiodący programista w zakresie architektury systemu i powiązanych dyskusji.
Chris
1
Dobrze wyłożone. Główny programista powinien również dążyć do poprawy doświadczenia i zrozumienia zespołu, w którym się znajduje, a długoterminowym planem jest nie tylko bycie „liderem”, ale raczej członkiem zespołu rówieśników.
David „łysy imbir”
To, co opisałeś, to ScrumMaster.
DBedrenko,
6

Twój nieagresywny opis nie unieważnia twojego zwinnego opisu.

Zwinny zespół będzie polegał na nowatorskim designie, a nie z góry.

Nic w twojej definicji wiodącego dewelopera nie mówi, że projekt musi być wcześniejszy. Może wyznaczyć kierunek i nadal może opracować wstępny projekt. Ten projekt zdecydowanie się pojawia.

Zwinny zespół projektuje razem, a nie jest dyktowany przez jedną osobę

Nic w twojej definicji głównego dewelopera nie mówi, że dyktuje on projekt. Chociaż może mieć ostatnie zdanie, tylko słaba pozycja lidera całkowicie zlekceważy myśli jego większości członków drużyny. Z drugiej strony tylko biedny zespół w pełni zignorowałby myśli głównego dewelopera.

Zwinny zespół decyduje o własnym kierunku technicznym, który najlepiej jest zrealizować

Znów nie oznacza to, że ołów nie początkowo ustawia tego kierunku. Prowadzenie jest częścią tego zwinnego zespołu. Nawet w niestabilnym środowisku tylko słaba szansa na kontynuowanie marszu zespołu w tym kierunku, gdy stanie się to świadomie niewykonalne lub gdy zostaną przedstawione nowe informacje, które unieważnią ten kierunek.

BrandonV
źródło
6

Pytanie nasuwa kilka innych pytań. Jak myślisz, co kwalifikuje Cię do powiedzenia zespołowi inżynierów oprogramowania, co masz robić? Czy to twoje doświadczenie? Czy to zabawny, mały tytuł, który wręczył ci szef? Czy to twoje ego? Twoja kadencja w firmie? Czy to twój „rozmach?” Twój Styl?" Twoje „umiejętności przywódcze?”

Zwinne zespoły nie rozdają sobie odznak ani czapek, które mówią: „Gratulacje, jesteś naszym super geniuszem - tylko ty możesz wykonywać super tajną podwójną pracę genialną”. Koncentruje się raczej na PRACY POD RĘKĄ. Jeśli rzeczywiście jesteś bardziej doświadczony, to doświadczenie powinno POKAZAĆ, jak dobrze twoje projekty popychają pracę do przodu w kierunku ukończenia. Twoje samodzielnie wybrane zadania (karty) powinny odzwierciedlać obszary, w których jesteś najbardziej ekspertem. Z drugiej strony, jeśli jakieś dziecko po studiach ma lepszy pomysł i pasuje lepiej do kontekstu niż coś, co pojawia się około 40-letniego weterana z, dlaczego, u licha, mielibyśmy mieć gorszy projekt? Nasze miejsca pracy nie są gabinetami terapeutycznymi - tam właśnie przychodzimy budować wspaniałe rzeczy.

To nasuwa kolejne pytanie: kto decyduje, co znaczy „lepszy”? Odpowiedź: zespół interesariuszy. Oznacza to, że programiści, specjaliści od wymagań, testerzy, ludzie biznesu itp. Są twórcami i użytkownikami danej rzeczy. Jeśli masz świetny pomysł, lepiej pokaż, dlaczego jest lepszy. Jeśli nie możesz tego zrobić, to nie ma powodu, aby zespół uważał, że twój pomysł jest lepszy. Zwinny zachęca do merytokracji.

Co dzieje się z „liderem zespołu programistów”? w zwinny? Nic - po prostu lepiej zasłużyć na to imię - lepiej NAPRAWDĘ być w stanie wyprodukować lepsze oprogramowanie niż inni ludzie w zespole. W przeciwnym razie nie ma powodu, by nazywać ich „leadem” - to tylko mała odznaka lub śmieszny kapelusz i jest bez znaczenia. Wiele osób uważa to za groźne. Czują się, jakby „pracowali” nad odznaką lub śmiesznym kapeluszem. Dobrzy programiści nie działają na śmieszne czapki. Pracują, aby zbudować świetne oprogramowanie i planują to robić, dopóki nie wykrzyczą - ich celem jest doskonalenie się w tworzeniu oprogramowania każdego dnia. Jeśli to nie ty, być może zechcesz zajrzeć do zarządzania projektami. Prawdopodobnie będziesz szczęśliwszy.

Calphool
źródło
+1 za „PRACĘ POD RĘKĄ”. Zgadzam się skupić na najlepszym rozwiązaniu tego, co musisz teraz dostarczyć. Nie chodzi o to, kto wpadnie na ten pomysł.
Kwebble,
Jeśli wszystko, co zaawansowany lider zespołu robi w zespole SCRUM według ciebie, to „produkuj lepsze oprogramowanie niż inni ludzie w zespole”, to wszystko, co oni są, to programista bez żadnych szczególnych obowiązków. Czy to sugeruje twoja odpowiedź? W przeciwnym razie tak naprawdę nie odpowiada to na pytanie, jak zespół deweloperów pasuje do zespołu SCRUM.
DBedrenko,
Tak. Są dobrym inżynierem, więc pełnią rolę inżyniera (technicznie rzecz biorąc, „członek zespołu”). Czym jeszcze by byli?
Calphool,
3

Z mojego doświadczenia z Agile, zespół programistów jako całość ponosi mniej odpowiedzialności, niż sugerują to twoje przykłady, pozostawiając wiodącemu programistowi i architektowi koordynację wyborów projektowych na najwyższym poziomie, ale przekazując projekt niższego poziomu zespołowi zwinnemu jako całości.

Tak więc główny programista pozostaje odpowiedzialny za architekturę systemu i wybory technologiczne. Jest to bardzo ważne: chociaż zwinny zachęca do nowo powstających projektów i refaktoryzacji, powinno to mieć miejsce na poziomie obiektów kodu. System jako całość musi mieć wyższy poziom wstępnego projektu i sztywności inny projekt ryzyko stania się nieskoordynowane bałagan.

W naszym projekcie główny programista zlecił wybór technologii i zaprojektował, w jaki sposób komponenty systemu będą ze sobą współdziałać. Zwinne spotkania dotyczące planowania koncentrowały się na tym, jak zaprojektować te komponenty w ramach jego mandatów wyższego poziomu. Na marginesie, utrzymuje to ograniczenie zakresu podczas męczących spotkań planistycznych.

Funkcjonował również jako ostateczność. Gdy poszczególni programiści napotykali problemy, których nie byli w stanie rozwiązać, szli na prowadzenie, a ostateczna odpowiedzialność za naprawienie problemów spoczywała na nim.

Bob Tway
źródło
Jest to podobne do mojego doświadczenia, ale naprawdę uważam, że jest więcej „odznak” i „czapek” niż to konieczne. Prawie nie ma różnicy między tym, jak dobry programista myśli o projekcie, a tym, co architekt myśli o projekcie.
Calphool