Potrzebuję tego dziecka za miesiąc - przyślij mi dziewięć kobiet!

zamknięty. To pytanie i jego odpowiedzi są zamknięte , ponieważ pytanie jest off-topic, ale ma znaczenie historyczne. Obecnie nie przyjmuje nowych odpowiedzi ani interakcji.

W jakich okolicznościach-jeśli w ogóle - czy dodawanie programistów do zespołu rzeczywiście przyspiesza rozwój już opóźnionego projektu?

Author: Ed Guiness, 2008-09-16

16 answers

Dokładne okoliczności są oczywiście bardzo specyficzne dla Twojego projektu ( np. zespół programistów, styl zarządzania, dojrzałość procesowa, trudność przedmiotu itp.). Aby lepiej to ująć, abyśmy mogli mówić o tym w niczym poza ogólnymi uproszczeniami, powtórzę twoje pytanie:

W jakich okolicznościach, jeśli w ogóle, dodanie członków zespołu do projektu programistycznego, który jest opóźniony, może skutkować skróceniem rzeczywistej daty wysyłki z poziomem jakości równym, gdyby istniejący zespół mógł pracować do końca?

Jest wiele rzeczy, które moim zdaniem są niezbędne , ale nie wystarczające, aby to się stało (w żadnej konkretnej kolejności):

  • proponowane osoby do dodania do projektu muszą mieć:
      [[11]} przynajmniej rozsądne zrozumienie problemowej domeny projektu
  • być biegły w języku projektu i konkretne technologie, które wykorzystaliby do zadań, które otrzymaliby
  • ich biegłość nie może być znacznie mniejsza lub znacznie większa niż najsłabszy lub najsilniejszy istniejący członek. Słabi członkowie wyssają Twój dotychczasowy personel z problemami trzeciorzędnymi, podczas gdy nowa osoba, która jest zbyt silna, zakłóci zespół tym, jak wszystko, co zrobili i robią, jest złe.
  • mieć dobre umiejętności komunikacyjne
  • być silnie zmotywowanym (np. być w stanie pracować niezależnie bez popychania)
  • obecni członkowie zespołu muszą posiadać:
    • doskonałe umiejętności komunikacyjne
    • doskonałe umiejętności zarządzania czasem
  • kierownik projektu/kierownictwo musi mieć:
    • dobra umiejętność priorytetyzacji i alokacji zasobów
    • wysoki poziom szacunku ze strony obecnych członków zespołu
    • doskonałe umiejętności komunikacyjne
  • projekt must have:
      [11]} dobra, ukończona i udokumentowana Specyfikacja projektu oprogramowania
  • dobra dokumentacja rzeczy już zaimplementowanych
  • modułowa konstrukcja umożliwiająca wyrzeźbienie jasnych fragmentów odpowiedzialności
  • wystarczające zautomatyzowane procesy zapewnienia jakości dla wymaganego poziomu defektów mogą obejmować takie rzeczy, jak: testy jednostkowe, testy regresyjne, zautomatyzowane wdrożenia kompilacji itp.)
  • system śledzenia błędów/funkcji, który jest obecnie w miejscu i w użyciu przez zespół (np. trac, SourceForge, FogBugz, itp.).
  • Jedną z pierwszych rzeczy, które należy omówić, jest to, czy data statku może zostać przesunięta, czy funkcje można wyciąć, i czy niektóre kombinacje tych dwóch pozwoli Ci zadowolić uwolnienie z istniejącym personelem. Wiele razy jego kilka funkcji, które naprawdę pochłaniają zasoby zespołu, które nie dostarczą wartości równej inwestycji. Więc podaj priorytety swojego projektu poważna recenzja przede wszystkim.

    Jeśli wynik powyższego akapitu nie jest wystarczający, odwiedź powyższą listę. Jeśli wcześniej zauważyłeś poślizg harmonogramu, dodanie odpowiednich członków zespołu we właściwym czasie może uratować wydanie. Niestety, im bliżej do oczekiwanej daty statku, tym więcej rzeczy może pójść nie tak z dodawaniem osób. W pewnym momencie przekroczysz "punkt bez zwrotu", w którym żadna ilość zmian (inna niż wysyłka bieżącej gałęzi rozwoju) nie może Zachowaj swoje zwolnienie.

    Mógłbym dalej i dalej, ale myślę, że trafiłem w główne punkty. Poza projektem i pod względem Twojej kariery, przyszłego sukcesu firmy itp. jedną z rzeczy, które zdecydowanie powinieneś zrobić, jest dowiedzieć się, dlaczego się spóźniłeś, czy coś mogło zostać zrobione wcześniej, i jakie środki należy podjąć, aby temu zapobiec w przyszłości. Spóźniony projekt zwykle występuje, ponieważ byłeś albo:

    • spóźniłeś się zanim zacząłeś (więcej rzeczy niż czas) i / lub
    • poślizgnęła się 1 godzina, 1 dzień w czasie.

    Mam nadzieję, że to pomoże!

     87
    Author: Zach Burlingame,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2011-04-20 12:45:05

    To pomaga tylko wtedy, gdy masz projekt oparty na zasobach.

    Na przykład, rozważ to:

    Musisz namalować duży plakat, powiedzmy 4 na 6 metrów. Plakat tak duży, że można postawić przed nim dwie lub trzy osoby i zlecić im malowanie równolegle. Jednak umieszczenie przed nim 20 osób nie zadziała. Dodatkowo, będziesz potrzebował wykwalifikowanych ludzi, chyba że chcesz gówniany plakat.

    Jeśli jednak twoim projektem jest upychanie kopert gotowymi drukowanymi literami (jak Mogłeś wygrać!) Następnie im więcej osób dodasz, tym szybciej to idzie. Jest trochę nad głową w doling się stosy pracy, więc nie można uzyskać korzyści do punktu, w którym masz jedną osobę pr. kopertę, ale można uzyskać korzyści od znacznie więcej niż tylko 2 lub 3 osób.

    Więc jeśli projekt można łatwo podzielić na małe kawałki, a jeśli członkowie zespołu mogą szybko przyspieszyć (jak... natychmiastowo), wtedy dodanie większej liczby osób sprawi, że pójdzie szybciej, aż do punkt.

    Niestety, niewiele takich projektów jest w naszym świecie, dlatego wskazówka docgnome o mitycznej książce miesiąca człowieka jest naprawdę dobrą radą.

     29
    Author: Lasse V. Karlsen,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 20:27:50

    Może, jeśli obowiązują następujące warunki:

    1. nowi programiści już rozumieją projekt i nie potrzebują czasu na rozruch.
    2. nowi programiści są już biegli w środowisku programistycznym.
    3. nie potrzeba czasu na adminstrative, aby dodać programistów do zespołu.
    4. prawie nie jest wymagana komunikacja między członkami zespołu.

    Dam Ci znać, gdy pierwszy raz zobaczę to wszystko na raz.

     17
    Author: Lost in Alabama,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 20:27:11

    Zgodnie z mitycznym Man-Month, głównym powodem dodawania ludzi do późnego projektu sprawia, że później Jest O (N^2) komunikacja na górze.

    Doświadczyłem jednego wyjątku od tego: jeśli jest tylko jedna osoba w projekcie, to prawie zawsze jest skazany. Dodanie drugiego przyspiesza go prawie za każdym razem. To dlatego, że komunikacja nie jest overhead w takim przypadku - jest to pomocna okazja, aby wyjaśnić swoje myśli i zrobić mniej głupich błędy.

    Również, jak oczywiście wiedziałeś, kiedy zamieściłeś swoje pytanie, porady z mitycznego męskiego miesiąca dotyczą tylkopóźnych projektów. Jeśli twój projekt nie jest już spóźniony, jest całkiem możliwe, że dodanie osób nie nastąpi później. Zakładając, że zrobisz to właściwie, oczywiście.

     11
    Author: apenwarr,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 22:33:26

    Jeśli obecni programiści są całkowicie niekompetentni, wtedy dodanie kompetentnych programistów może pomóc.

    Mogę sobie wyobrazić sytuację, w której miałeś bardzo modułowy system, a istniejący programista(ów) nawet nie uruchomił na bardzo odizolowanym module. W takim przypadku przypisanie tylko tej części projektu do nowego programisty może pomóc.

    W zasadzie odniesienia do mitycznych mężczyzn są poprawne, z wyjątkiem przypadków wymyślonych, takich jak ten, który wymyśliłem. Pan Brooks zrobił to porządnie. badania mające na celu wykazanie, że po pewnym momencie koszty sieci i komunikacji związane z dodaniem nowych programistów do projektu przeważą nad korzyściami, jakie zyskasz z ich produktywności.

     10
    Author: JosephStyons,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2010-11-08 20:38:40
    • Jeśli nowi ludzie skupią się na testowaniu
    • Jeśli można wyodrębnić niezależne funkcje, które nie tworzą nowych zależności
    • Jeśli możesz ortogonalizować niektóre aspekty projektu (zwłaszcza niekodujące zadania, takie jak projekt wizualny/układ, strojenie/indeksowanie baz danych lub Konfiguracja serwera/konfiguracja sieci), aby jedna osoba mogła nad tym pracować, podczas gdy inni kontynuują kod aplikacji
    • Jeśli ludzie znają się nawzajem, technologię i wymagania biznesowe, i projekt, wystarczająco dobrze, aby móc robić rzeczy ze świadomością, kiedy będą nadepnąć na palce i jak tego uniknąć (to, oczywiście, jest dość trudne do zorganizowania, jeśli jeszcze tak nie jest) {]}
     5
    Author: Leigh Caldwell,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 20:29:43

    Tylko wtedy, gdy masz na tym późnym etapie jakieś niezależne (prawie 0% interakcji z innymi częściami projektu) zadania, z którymi jeszcze nikt nie podjął się i możesz sprowadzić do zespołu kogoś, kto jest specjalistą w tej dziedzinie. Dodanie członka zespołu musi zminimalizować zakłócenia dla reszty zespołu.

     4
    Author: Daniel,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 20:38:12

    Zamiast dodawać programistów, można pomyśleć o dodaniu pomocy administracyjnej. Wszystko, co usunie rozpraszanie uwagi, poprawi koncentrację lub poprawi motywację, może być pomocne. Obejmuje to zarówno system i administrację, jak i bardziej prozaiczne rzeczy, takie jak otrzymywanie lunchów.

     4
    Author: JXG,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-17 09:38:03

    Oczywiście każdy projekt jest inny, ale większość prac programistycznych może mieć pewność, że współpraca między programistami będzie w pewnym zakresie. Tam, gdzie tak jest, moje doświadczenie wynika z tego, że świeże zasoby mogą w rzeczywistości nieumyślnie spowolnić ludzi, na których polegają, aby je przyspieszyć, a w niektórych przypadkach mogą to być twoi kluczowi ludzie(nawiasem mówiąc, zwykle to "kluczowi" ludzie poświęciliby czas na edukowanie newb). Kiedy na bieżąco, nie ma gwarantuje, że ich praca będzie pasować do ustalonych "zasad" lub "kultury pracy" z resztą zespołu. Więc znowu, może wyrządzić więcej szkody niż pożytku. Tak, że są to okoliczności, w których może to być korzystne:

    1) nowy zasób ma ścisłe zadanie, które wymaga minimum interakcji z innymi programistami i zestawu umiejętności, które zostały już zademonstrowane. (tj. portowanie istniejącego kodu na nową platformę, zewnętrznie refaktoryzację martwego modułu, który jest obecnie zamknięty w istniejąca baza kodu).

    2) projekt jest zarządzany w taki sposób, że inni członkowie zespołu mogą dzielić się czasem, aby pomóc newb w przyspieszeniu i mentorowaniu ich po drodze, aby upewnić się, że ich praca jest zgodna z tym, co już zostało zrobione.

    3) pozostali członkowie zespołu są bardzo cierpliwi.

     3
    Author: screenglow,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 22:31:26

    Przypuszczam, że dodawanie ludzi pod koniec pracy może przyspieszyć sprawę, jeśli:

    1. Praca może być wykonywana równolegle.

    2. Ilość zaoszczędzona przez dodane zasoby jest więcej niż ilość czasu straconego przez ludzi doświadczonych w projekcie wyjaśnić rzeczy tym, którzy są niedoświadczeni.

    EDIT: zapomniałem wspomnieć, że takie rzeczy nie zdarzają się zbyt często. Zazwyczaj są to dość proste rzeczy, takie jak ekrany admina to proste do stołu. W dzisiejszych czasach tego typu narzędzia mogą być w większości automatycznie generowane.

    Uważaj na menedżerów, którzy bank na tego rodzaju pracy, aby oddać choć. Brzmi świetnie, ale w rzeczywistości zwykle nie ma go wystarczająco dużo.

     3
    Author: Giovanni Galbo,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-17 11:02:55
    • samodzielne moduły, które nie zostały jeszcze uruchomione
    • Brak narzędzi programistycznych, które można zintegrować (jak zautomatyzowany menedżer budowania)

    Głównie myślę o rzeczach, które pozwalają im trzymać się z dala od obecnie rozwijających się ludzi. Zgadzam się z Mythical Man-Month, ale też uważam, że są wyjątki od wszystkiego.

     2
    Author: Tom Ritter,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-16 20:24:48

    Myślę, że dodanie osób do zespołu może przyspieszyć projekt bardziej niż dodanie ich do samego projektu.

    Często spotykam się z problemem posiadania zbyt wielu równoległych projektów. Każdy z tych projektów mógłby zostać ukończony szybciej, gdybym mógł skupić się tylko na tym projekcie. Dodając członków zespołu, mógłbym zrezygnować z innych projektów.

    Oczywiście zakłada to, że zatrudniłeś zdolnych, zmotywowanych programistów, którzy są w stanie dziedziczyć duże projekty i uczyć się niezależnie. :-)

     2
    Author: Matthew Cole,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-17 03:33:36

    Jeśli dodatkowy zasób uzupełni Twój istniejący zespół może być idealny. Na przykład, jeśli masz zamiar skonfigurować swój sprzęt produkcyjny i sprawdzić, czy baza danych jest rzeczywiście dostrojona, a nie po prostu zwracać dobre wyniki (które twój zespół zna jako ekspertów domenowych) pożyczenie czasu od dobrego dba, który pracuje nad projektem obok ciebie, może przyspieszyć zespół bez większych kosztów szkolenia]}

     2
    Author: Oskar,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-21 21:38:19

    Po prostu. Sprowadza się to do porównania pozostałego czasu i produktywności, którą uzyskasz od kogoś, wyłączając czas potrzebny dodatkowym zasobom, aby przyspieszyć i być produktywnym oraz odejmując czas zainwestowany w nauczanie ich przez istniejące zasoby. Kluczowe czynniki (w kolejności znaczenia):

    1. Jak dobry jest zasób w zbieraniu do góry. Najlepsi programiści mogą chodzić na nową stronę i być produktywnym naprawianie błędów niemal natychmiast z mała pomoc. Ta umiejętność jest rzadki, ale można się go nauczyć.
    2. segregacja zadań. Muszą umieć pracować na obiektach i funkcje bez potknięcia się o istniejących deweloperów i ich spowolnienie na ziemię.
    3. złożoność projektu i dokumentacja dostępna. Jeśli to najlepsza praktyka waniliowa ASP.Net zastosowanie i wspólne dobrze udokumentowane scenariusze biznesowe wtedy dobry deweloper może po prostu dostać utknąłem od razu. Czynnik ten więcej niż jakikolwiek określi, w jaki sposób dużo czasu istniejące zasoby będzie musiał inwestować w nauczanie i dlatego początkowy ujemny wpływ nowych zasobów.
    4. ilość czasu pozostałego. Jest to często źle oszacowane. Często logika będzie tylko x tygodni lewo i zajmie x+1 tygodni, aby daj komuś znać. W rzeczywistości projekt będzie się poślizgnął i czy w rzeczywistości ma 2x tygodnie dev left To go and getting more zasoby na szybciej niż później ci pomoże.
     1
    Author: JackCorn,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-17 04:16:05

    Gdy zespół jest już używany do programowania w parze, dodanie innego programisty , który jest już wykwalifikowany w parowaniu, może nie spowolnić projektu, szczególnie jeśli rozwój przebiega w stylu TDD.

    Nowy programista będzie powoli stawał się bardziej produktywny, ponieważ bardziej rozumie podstawy kodu, a wszelkie nieporozumienia zostaną wykryte bardzo wcześnie przez ich parę lub przez zestaw testowy uruchamiany przed każdą odprawą (a najlepiej sprawdzić w co najmniej co dziesięć minut).

    Należy jednak wziąć pod uwagę skutki dodatkowych kosztów ogólnych związanych z komunikacją. Ważne jest, aby nie rozcieńczać zbytnio istniejącej wiedzy o projekcie.

     1
    Author: Bill Michell,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2008-09-17 10:29:16

    Dodawanie programistów ma sens, gdy produktywność wnoszona przez dodatkowych programistów przekracza produktywność utraconą na szkoleniu i zarządzaniu tymi programistami.

     1
    Author: Caleb,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2011-07-22 20:35:55