Mój zespół 4 doświadczonych programistów pracuje nad dużą, modułową aplikacją Windows (około 200 KLoC). Skoncentrowałem się na podstawowej bazie kodu od początku projektu (3 lata temu) i stopniowo przeszedłem na pół-wiodącą pozycję programistyczną, chociaż nie jestem kierownikiem zespołu.
Nasza obecna iteracja to odświeżanie interfejsu użytkownika o wysokim priorytecie, wymagane przez kierownictwo wyższego szczebla, obejmujące około 15 zmian w podstawowej bazie kodu. Pytany przez zarządcę, to szacuje się, że każdy z 15 zmian zajmie mniej niż cztery godziny dla mnie, aby zakończyć , łącznie mniej niż 7 dni roboczych. Następnie zgłosiłem się na ochotnika do wykonania pracy. Zamiast tego menedżer postanowił równomiernie podzielić wszystkie 15 zadań na wszystkich czterech programistów.
W ciągu trzech dni od rozpoczęcia pracy zaobserwowałem dwie rzeczy:
Pozostali niedoświadczeni członkowie zespołu wykonali około 1 lub mniej każdego zadania.
Prawo Brook'a w akcji: spędziłem około połowy czasu, udzielając pomocy (próbując wyszkolić ich w zakresie używania komponentów). W rezultacie sam ukończyłem tylko 2 zadania, zamiast oczekiwanych 5 lub 6.
Zwróciłem się do mojego przełożonego z obawą, że się spóźniliśmy i ponownie zasugerowałem, że wykonam pozostałe zadania. Moja prośba została uprzejmie odrzucona, a podane powody równego podziału obciążenia były dwojakie:
- Ogranicz czynnik ciężarówki / autobusu - teraz zwiększaj umiejętności innych programistów, aby w przyszłości każda praca mogła zostać powierzona każdemu, nie tylko mnie.
- Aby wyeliminować „wąskie gardło” (mnie) i szybciej wykonać pracę.
Dla jasności nie mam problemów z: a) inwestowaniem czasu na naukę, b) ludźmi dotykającymi mojego kodu, lub c) bezpieczeństwem pracy. W rzeczywistości regularnie sugeruję liderowi zespołu, aby szkolił innych programistów w zakresie niektórych aspektów podstawowej bazy kodu, aby zmniejszyć ryzyko.
W tej iteracji mamy również duży zbiór naprawionych błędów o wysokim priorytecie, więc wydaje się, że można by poczynić większy postęp, gdyby obciążenie zostało rozdzielone.
W Mythical-Man-Month Brooks sugeruje „ zespół chirurgiczny ”, w którym każdy zespół składa się z lead + sub-lead (menadżer i ja) oraz kilka drobnych ról. Wydaje mi się, że naturalnie należymy do tej organizacji, ale mój menedżer działa przeciwko temu. Wydaje mi się, że czynnik magistrali został już zajęty (menedżer jest dobrze zaznajomiony z podstawowym kodem) i że wąskie gardło tak naprawdę nie istnieje (angażowanie większej liczby programistów nie przyspieszy pracy). Myślę, że pod tym względem zespół chirurgiczny jest dobrą rzeczą.
Takie są moje odczucia, ale nie jestem doświadczonym menedżerem ani nie mieliśmy do czynienia z czynnikiem autobusowym (pukanie do drewna). Czy Brooks miał rację? Czy pracowałeś w „zespole chirurgicznym”, w którym pojawił się czynnik autobusowy? Czy istnieją lepsze techniki zarządzania dystrybucją wiedzy specjalistycznej?
Podobne pytania: