Niedawno dołączyłem do firmy, w której pracuję jako mistrz scrum w zwinnym projekcie deweloperskim budującym aplikację internetową.
Zespół ma być wkrótce maksymalnym rozmiarem dla zwinnego zespołu (oczekuje 9 w przyszłym tygodniu). Mówiliśmy o potencjalnym podzieleniu zespołu na dwa zespoły, nie tyle, aby skrócić awanse (które nie są w tej chwili nadmierne), ale by powstrzymać ludzi przed całkowitym znudzeniem się podczas sesji planowania sprintu (które znowu nie są zbyt długie).
Projekt składa się z dwóch bardzo wyraźnych warstw - zaawansowanego technicznego zaplecza programistycznego (na przykład bardzo skomplikowanego) oraz projektowania / kompilacji / integracji interfejsu użytkownika. Wygląda na to, że gdy faceci z zaplecza mówią o kwestiach technicznych, faceci z interfejsu użytkownika dzielą się i na odwrót. Wydaje się, że to logiczny sposób na podzielenie zespołu, choćby po to, aby zaoszczędzić czas, ale mam jedno poważne zastrzeżenie, że wszystko, co naprawdę mogę zrobić, to ograniczenie współpracy i dzielenia się wiedzą. Dwie drużyny po prostu nie będą miały dobrego pojęcia o tym, co buduje reszta zespołu.
Czy ktoś ma jakieś doświadczenie w radzeniu sobie z czymś takim?
Odpowiedzi:
To niefortunne, że użytkownicy interfejsu nie dbają o szczegóły skomplikowanej pracy backendu. To brzmi bardziej jak temat dyskusji retrospektywnej. Podział drużyny według dyscypliny stanowiłby niebezpieczny precedens, jak szybko minie, zanim ludzie wymagań zaczną wyznaczać strefę i nie przejmować się tym, co robią faceci UI i prosić o własny zespół.
Zawsze opowiadałem się za pionowymi wycinkami dla moich zespołów. Interfejs użytkownika powinien słuchać tego, co mają do powiedzenia ludzie techniczni, ponieważ są to ludzie, którzy mogą pomóc w ułatwieniu im pracy (Och, ten widget sprawi, że zrobisz to, co jeśli zamiast tego użyjemy tego widgetu).
Osobiście skupiłbym się na kwestii podziału strefy przez facetów z interfejsu użytkownika, a następnie, gdy ta dysfunkcja zostanie rozwiązana, przedyskutuj, jak najlepiej podzielić zespoły. Nie próbuję oczerniać facetów z interfejsu, być może technicy mogliby zrobić więcej, aby ich dyskusje były bardziej odpowiednie dla facetów z interfejsu.
Jak powiedzieli inni, zespół powinien mieć możliwość samoorganizacji w celu ustalenia nowej struktury. Wcześniejsze doświadczenia nauczyły mnie, że samoorganizacja może naprawdę działać tylko wtedy, gdy wszyscy troszczą się o zespół, a nie o własną dyscyplinę lub zainteresowania.
Twoje zdrowie!
źródło
Dobrym pomysłem jest podzielenie niezależnych części zespołu na nowe zespoły. W większym projekcie programiści nie mogą dokładnie zapoznać się z całym projektem, więc podział jest nadal formalny lub nieformalny.
Każdy z nowych zespołów powinien mieć lidera / kierownika technicznego, który ma solidną wiedzę na temat zakresu swojego zespołu i jest zaznajomiony z pracą innych zespołów.
Następnie każda drużyna może mieć osobne spotkania scrumowe, a liderzy innych zespołów mogą być obecni. W ten sposób zmniejszysz liczbę „znudzonych” ludzi, ale nadal zespoły będą wiedzieć, nad czym pracują inni i będą w stanie skutecznie współpracować.
Współpraca staje się ważniejsza, jeśli zakresy zespołów się przecinają lub jeden zespół zależy od drugiego. Ale znowu nie ma potrzeby obecności całego zespołu _ lider zespołu może koordynować współpracę.
źródło
Kluczowym aspektem Scrum jest samoorganizacja .
Sugeruję, aby omówić to pytanie z zespołem i pozwolić im je rozwiązać.
Twoje obawy są uzasadnione, ale pamiętaj, że jako Scrum Master, Twoim zadaniem jest trenowanie i ułatwianie. Zapytaj ich, jak rozwiążą te problemy. Będą właścicielami rozwiązań i sprawią, że będzie działać.
Dodałbym: ogólnie, zespoły interdyscyplinarne są do zrobienia.
źródło
Przy podziale zespołów zawsze staram się pamiętać o tym, że zespół musi być w stanie zapewnić wartość dla klienta. W twoim przypadku byłoby to posiadanie zarówno programistów backendu, jak i frontendów w zespole.
źródło
Jak daleko znajduje się frontend od backendu? Jak można się spodziewać, podział jest dobrą radą tylko wtedy, gdy odległość jest zbyt duża.
Jeśli backend mówi o schemacie bazy danych, nie jest to zbyt daleko . Zarówno front-end, jak i backend muszą wysłuchać dyskusji na temat schematu bazy danych.
Jeśli backend mówi o shardingu, pamięciach podręcznych, opóźnieniu dysku itp., To jest to trochę za daleko (gdzie backend koncentruje się na mechanicznej sympatii i optymalizacji, podczas gdy front-end skupia się na ludzkiej estetyce).
Czy istnieje stabilny i jednoznaczny interfejs programowania między front-endem a backendem?
Przez stabilny i jednoznaczny oznacza to, że użytkownicy tego interfejsu programistycznego (programiści front-end) nie będą ulegać zmianom i nie będą musieli czytać ścian tekstu, aby nauczyć się go poprawnie używać.
Zespół zaplecza musi zapewnić dobry interfejs API i próbną implementację wcześnie, a dopiero potem rozpocząć prawdziwy rozwój.
Nie oznacza to, że interfejs API powinien być ustawiony na kamieniu. To tylko złagodzenie konsekwencji podziału zespołu na dwie części.
Dlaczego tak wiele zwinnych artykułów zaleca pionowe plastry? Oto kilka podstawowych informacji:
Większość zwinnych artykułów faktycznie zaleca unikanie pracy zaplecza z perspektywy kosztów.
Nie zapominaj również, że ułamek artykułów zwinnych miało ukryte uprzedzenie do firm rozpoczynających działalność.
I nie zapominaj o trudnej rzeczywistości marketingu - większość klientów płaci tylko za interfejsy.
Praca zaplecza bywa kosztowna i ma powolną wypłatę. O ile firma nie została już założona na dłuższą metę i generuje przyzwoity zysk, lepiej „outsourcować” backend, pozostając przy gotowej technologii i bibliotekach open source.
Większość zwinnych artykułów zaleca również implementację interfejsu, aby mógł przetrwać przełącznik zaplecza. Ta rada idzie w parze z poprzednią: jeśli gotowa technologia nie spełnia wszystkich wymagań, wypróbuj inną.
Praktyki, które mogą złagodzić złe konsekwencje podziału zespołu
źródło
Podobnie jak inne, zdecydowanie sugerowałbym wybór pionowych przekrojów. Są one czasami określane jako „Zespoły funkcji”. Poleciłbym przeczytać o zaletach / wadach na stronie Scaled Agile Framework: http://scaledagileframework.com/scaled-agile-framework/team/features-components/
Na początku, gdy dokonujesz podziału, właściciel produktu i SDF Master mogą być w stanie obsłużyć zaległości wydania dla obu zespołów, a także indywidualne zaległości dla każdego zespołu funkcji. Jednak w miarę rozwoju prawdopodobnie będziesz musiał wdrożyć zaległości funkcji produktu, które następnie będą przekazywane do wielu zwinnych wydań zespołów. Po przejściu na ten poziom prawdopodobnie będziesz potrzebować oddzielnego zespołu zarządzającego zaległością funkcji, a następnie sprowadzającego te funkcje do poszczególnych zespołów w celu ich wdrożenia. W tej strukturze możesz mieć coś takiego:
Witryna SAFe zawiera wiele ciekawych rzeczy do organizowania większych zespołów, a niektóre mogą być dla Ciebie pomocne, gdy przejdziesz do większej liczby zespołów.
źródło