Jak określić liczbę programistów potrzebnych do projektu

18

Skąd wiesz, ilu programistów dany projekt musi odnieść sukces?

Firma, dla której pracuję, realizuje zamówienia dla firm klienckich. Napisaliśmy wewnętrzny system zarządzania magazynem, który obsługuje oparte na lokalizacji zarządzanie zapasami, przetwarzanie zamówień, generowanie listu przewozowego, fakturowanie, audyt i raportowanie ładunków (prawdopodobnie 50 raportów). Posiada również funkcje skanowania kodów kreskowych i portal klienta wraz z dziesiątkami innych mniejszych funkcji. Obejmuje także pełny zegar czasu pracy pracownika. Integruje się z Quickbooks, UPS i FedEx. Obsługuje pracę dla co najmniej 50 klientów, różniących się nieznacznie funkcjonalnością. Na przykład importujemy zamówienia z plików, które wysyłają klienci, ale każdy klient wysyła inny format pliku (csv, excel, płaski plik i usługi sieciowe), dlatego mamy skonfigurowanych kilkanaście metod konwersji zamówień. Eksport to ta sama historia.

Projekt jest złożony i rośnie z każdym dniem z ponad ćwierć milionem linii kodu. To około 250 000 linii kodu VB.NET, 6200 linii kodu Ruby i może 5000 linii PHP. Ma również bazę danych MySQL z około 200 tabelami.

Ze względu na stale zmieniające się wymagania i różne potrzeby kilkudziesięciu klientów sam kod różni się znacznie pod względem jakości, od bardzo słabego do stosunkowo dobrego kodu.

Obecnie w tym projekcie jest tylko jeden programista - ja. Obecnie zajmuję się także całym wsparciem produktowym dla naszej firmy liczącej około 75 osób. Obejmuje to rozwiązywanie problemów i konfigurowanie nowych klientów oraz wszelkie nowe potrzebne funkcje. Ponadto staramy się przepisać całość, aby była w 100% oparta na Ruby on Rails. Chcielibyśmy wprowadzić na rynek cały system w ciągu około roku, aby mógł być używany przez inne firmy.

Obecnie mamy tylko siebie jako programistę, ale nie uważam, że to wystarczy. Czy ktoś ma jakieś zalecenia dla ilu programistów powinien mieć projekt tej wielkości lub jak powinniśmy zająć się ustaleniem odpowiedzi na to pytanie? Zwłaszcza biorąc pod uwagę fakt, że kierownictwo chciałoby, aby produkt był jakości handlowej do przyszłego roku?

kstevens715
źródło
11
Czekałem na żarówkę :(
Oded
lol ... google tytuł i prawdopodobnie znajdziesz trochę. Kiedy googlowałem, znalazłem grupę tych przypadkowo lol.
kstevens715
8
Jeśli wymagania będą się zmieniać, żadna liczba dodatkowych rąk nie spowoduje wysłania tego produktu z domu. Najpierw musisz sprecyzować wymagania.
Oded
To zdecydowanie prawda w moim przypadku. Wiem, że pytanie, które zadaję, prawdopodobnie nie jest zbyt odpowiedzialne. Ale gdybym mógł porównać rodzaje projektów, nad którymi pracują inni ludzie i ile osób jest zaangażowanych w te projekty w pełnym wymiarze godzin, może to by pomogło.
kstevens715
To pytanie wydaje się bardzo podobne do tego pytania . Być może znajdziesz tam również niektóre z przydatnych odpowiedzi.
S.Robins

Odpowiedzi:

3

Powiedziałbym, że co najmniej 5 osób. Jeden do testu, drugi do specyfikacji, wsparcia i dokumentacji oraz 3devs. W twoim przypadku jest wiele rzeczy do przetestowania, więc 50% dedykowany tester nie powinien być nierozsądny. Powinna tam być osoba spisująca wymagania i posiadająca wsparcie klienta konfigurujące infrastrukturę do testowania itp. Trzej programiści, jak sądzę, są dość słabi jak na taki projekt. Duży back-end, który jest zintegrowany z wieloma systemami stron trzecich, i pełen front z bardzo wieloma spersonalizowanymi raportami. Chciałbym mieć.

  1. Dobry programista zaplecza (warstwa trwałości / biznes)
  2. Dobry środkowy / frontendowy programista tworzący klasy akcji i JavaScript CSS Design.
  3. Dobry programista działający w terenie, ale także tworzący kod we wszystkich warstwach z pomocą ekspertów z dwóch pozostałych stron. Deweloper może także wykonywać takie czynności, jak tworzenie gałęzi JUnit Maven Jenkins Git i tak dalej.

Co się stanie, jeśli odejdziesz, zachorujesz, weź urlop itp. Jedna osoba na projekt nigdy nie jest mądra. Nie warto też być samemu, ponieważ nie ewoluujesz zawodowo bez współpracowników. Pracuję dość często sam, tworząc nowe architektury i tak dalej, często w zespołach, powiedzmy 5 programistów, ale nigdy nie ewoluuję tak bardzo, jak kiedy mówię współpracownikowi, pozwala to skonfigurować razem i zamykamy się na tydzień rozmawiając, dyskutując i wybór ram. Programowanie w parach jest niezwykle przydatne i nie można tego zrobić z jednym twórcą, a kto zrobi recenzje kodu, jeśli poczujesz się niepewnie? Jeśli utkniesz, kto ci pomoże? Podjąłbym się tylko projektu jednoosobowego, gdyby był częścią większego zakresu i w razie potrzeby mógłbym skorzystać z zasobów ekspertów.

Farmor
źródło
1
Zeszłego lata wziąłem 2-dniowe wakacje i ktoś musiał włamać się do mojego domu, żeby zabrać laptopa ... tak. Zawsze mówię o pracy w próżni, ponieważ nie mam wielu innych programistów do interakcji. A w małym miasteczku nie ma nawet żadnych grup użytkowników ani czegokolwiek. My (ja?) Niedawno zaczęliśmy pisać kod testowy, właściwie kiedy zaczęliśmy przechodzić na Railsy. Już nie wyobrażam sobie rozwoju bez testów. Podoba mi się pomysł posiadania 50% dedykowanego testera.
kstevens715
1
Co najmniej jeden programista powinien być specjalistą od bazy danych.
HLGEM
8

Witamy w często trudnym świecie zasobów !

Problem nie dotyczy wielkości projektu a wielkości zespołu. To bardzo powszechne nieporozumienie, które często ukrywa inne problemy, które są zwykle związane z zarządzaniem. Chodzi przede wszystkim o zakres . Musisz zdecydować, co możesz osiągnąć przy użyciu obecnych zasobów - czyli Ciebie. Następnie musisz zdecydować, czy Twoja zdolność do obsługi obciążenia jest wystarczająca, aby obsłużyć zadanie w przydzielonych ramach czasowych. W związku z tym potrzeby twojego projektu muszą zostać zidentyfikowane i określone.

  • Czy chcesz spędzić czas na czyszczeniu istniejącej bazy kodu?
  • Czy jest to podstawowy wymóg, aby zapewnić powodzenie projektu?
  • Czy masz nowe funkcje do dodania do systemu? Z jakimi najważniejszymi aspektami twojego projektu należy się zająć i jakie drobne pozycje znajdują się na liście życzeń?
  • Czy którekolwiek z wymagań może zostać porzucone, a przynajmniej odłożone do następnego wydania konserwacyjnego?

Gdy masz pojęcie o zakresie swoich wymagań, możesz łatwiej określić obciążenie wymagane do osiągnięcia wyniku w określonym czasie. Jeśli Twoje zasoby prawdopodobnie zostaną nadmiernie wykorzystane, będziesz potrzebował więcej pracowników. Jeśli Twoje zasoby prawdopodobnie nie zostaną w pełni wykorzystane, być może będziesz w stanie przesunąć termin lub zwiększyć zakres projektu.

Jeśli twój instynkt podpowiada ci, że nie masz wystarczającej liczby pracowników do zarządzania projektem, możesz mieć rację, ale musisz zrozumieć, dlaczego tak mówi ci jelito. Nie wystarczy po prostu mieć poczucie. Zamiast tego musisz być w stanie zbadać problem naukowo, aby dostarczyć dowód na poparcie swoich instynktów, i musisz być przygotowany na stawienie czoła możliwości, że instynkt może się nawet mylić. Po zebraniu dowodów - to znaczy: zakres projektu, naprawdę musisz usiąść z kierownictwem i uzasadnić albo zmniejszenie zakresu projektu, albo zwiększenie dostępnych zasobów, aby zapewnić powodzenie projektu, w oparciu na podstawie dostępnych dowodów.

S.Robins
źródło
Wydaje się, że zakres polega na całkowitym przepisaniu systemu 250K SLOC na coś, co ma jakość obkurczania (lub przynajmniej jakość oprogramowania konsultingowego). Zaletą jest to, że zbieranie wymagań i ogólny projekt są już prawdopodobnie wykonane. To nie jest małe i nie jest czymś dla jednego programisty, który ma inne obowiązki.
David Thornley,
@DavidThornley To zależy w dużej mierze od zakresu obowiązków programistów, jego terminów, obciążenia pracą, od tego, jak jego firma już sprzedaje produkt. Widziałem wiele złożonych projektów opracowanych przez 1-2 osobowy zespół, które odniosły duży sukces, ponieważ były dobrze zarządzane ... i wiele innych, które zakończyły się niepowodzeniem. Zgadzam się jednak, że zadanie jest duże i że samo w sobie jest już trochę czerwoną flagą pod względem zasobów. Chodzi o to, że nie warto po prostu zatrudniać wielu ludzi, nie odrabiając najpierw pracy domowej, co jest naprawdę istotą mojej odpowiedzi. :-)
S.Robins,
Zakres jest czymś, o czym wspominałem przez ostatnie kilka miesięcy. 20% projektu ma 80% wpływu na firmę. Na tym staram się skupić. Niestety 80%, które ma 20% wpływu, zostaje zepchnięte na przód linii, gdy próbujemy poradzić sobie z „sytuacjami kryzysowymi”, rzucając w to więcej kodu i funkcji. Kiedyś poprosiłem o zawieszenie funkcji, abym mógł rozwiązać niektóre podstawowe problemy. Dali mi 5 dni. Nie trzeba dodawać, że minęło 5 lat i nadal pozostaje wiele podstawowych problemów. Dziękuję za twój post, bardzo pomocny.
kstevens715
6

Sukces produktu / projektu będzie zależeć od zaangażowania firmy, która za nie zapłaci. Jeśli zamierzają zatrudnić więcej programistów / personelu pomocniczego, nastąpi nieodłączny spadek wydajności ze strony jednego programisty, który wie, że musi trenować, uczyć, zarządzać itp. Nie to, że to zła rzecz ... ale będzie bądź niższy, zanim jakikolwiek wzrost zostanie zrealizowany. Istnieje również potrzeba analityków biznesowych, menedżerów, sprzedaży i wsparcia produktu, gdy będzie on dostępny na rynku.

Hosting aplikacji komercyjnej to znacznie więcej niż tylko stworzenie solidnej platformy. są wymagania dotyczące wsparcia, wsparcia technicznego, usuwania błędów, szkolenia użytkowników itp.

czy masz jakieś dobre procedury analizy / specyfikacji / szacowania? jeśli nie, zacznij teraz , możesz zrobić to sam.

ćwiczysz teraz swoje mózgi? Jeśli tak, przygotuj się na pracę dwa razy cięższą, jeśli masz zamiar zarządzać tym procesem i kontynuować rozwój (podnieść należność?) ..

a oto odpowiedź z moich wcześniejszych doświadczeń związanych z podobną sytuacją w obszarze cen w Południowej Kalifornii:

5-6 osób && ~ 500k

  • 1 główny programista / menedżer noszący wszystkie czapki (~ 100 tys. - 120 tys.)

  • 2 starszych (bardzo zdolnych, samodzielnych) programistów z dobrym rozumieniem DB i umiejętnościami (2x ~ 80-100k)

  • 1 Project Manager do obsługi interfejsu zarządzania ($$?) Ta osoba powinna również być w stanie zrozumieć potrzeby aplikacji i przekazać te potrzeby bezpośrednio programistom

  • 1? (HTML / UI) programista? z umiejętnościami javascript (nienawidzę programowania interfejsu użytkownika / kodu znaczników)

  • 1? Osoba bazy danych? jednak większość dobrych programistów nie ma problemu z tworzeniem skalowalnych struktur danych, jednak jeśli masz zamiar zająć się optymalizacją, przynajmniej będziesz chciał mieć konsultanta

hanzolo
źródło
1
+1 Bardzo podoba mi się twoja awaria! Wypełnij OT zarobki, które podajesz, są dla mnie przygnębiające, ponieważ myślałem o pracy w SoCal, ale nie są one znacznie wyższe niż w Europie Zachodniej, jeśli osoby starsze są jak mgr + 5 lat pracy.
Farmor
1
Zgadzam się, z tym wyjątkiem, że poleciłbym również programistom na poziomie podstawowym, aby przejął obowiązki wsparcia (konfiguracja klienta i drobne ulepszenia) i wykonał ogólną pracę. Łączenie niektórych ról może działać w zależności od zaangażowanych poziomów umiejętności.
jfrankcarr
Wow, możesz dostać starszych deweloperów w So Cal za 80-100K? To wydaje się dość niskie, biorąc pod uwagę koszty utrzymania. Może mamy różne pomysły na „seniorów”; starsi deweloperzy, których znam w Dallas, dostają znacznie więcej.
kevin cline
Prawdopodobnie mamy różne wyobrażenia o tym, jaki smak jest dobry. Zatrudniłem 2 .Net Sr., którzy byli młodzi i utalentowani z dużym doświadczeniem w ciągu ostatnich 10 lat, którzy byli gotowi pracować w tym zakresie. Użyliśmy najnowszego stosu Microsoft (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, bla bla ..) i nie mieliśmy problemu z wydaniem dobrego, czystego kodu. Byliśmy małym zespołem, a problemem, który znaleźliśmy podczas próby zatrudnienia niektórych starszych osób było to, że byli oporni na naukę, mieli zbyt wiele opinii i nosili zbyt dużo bagażu (nie mieliśmy też zbyt dużego okna wynajmu)
hanzolo
2

1 programista w dużej kodzie z całej odpowiedzialności konfigurowanie, testowanie, komunikacji, wspieraniu, dokumentowania oraz poprawki błędów nie będzie miał wiele czasu na pisanie nowego kodu lub dodanie funkcji (lub nawet refactoring starego kodu).

Podziel tydzień na procent tych obowiązkowych zadań, które nie rozwijają działalności, a będziesz zaskoczony, jak szybko kierownictwo zatrudnia dodatkową pomoc.

Duże projekty wiążą się z pewnymi kosztami, które nie znikną (szczególnie jeśli wdrażasz / testujesz z nowymi klientami przez cały czas, jak się wydaje). To jest powód, dla którego masz rotacje wsparcia i wsparcie ogólnie; więc niektórzy członkowie zespołu mają czas na opracowanie nowych funkcji.

Możesz także zajrzeć do książek na temat szacowania oprogramowania. Książki te mogą nie brzmieć tak, jakby miały wiele do powiedzenia, ale zawierają ciekawe studia przypadków z różnych dziedzin i popierają swoje twierdzenia dowodami.

Brian
źródło
95% mojego czasu spędzam na wykonywaniu jednego z tych zadań. Podoba mi się pomysł rotacji wsparcia. To może być coś do rozważenia, jeśli zatrudnimy kogoś, kogo mogę obracać z LOL. Dzisiaj na przykład zacząłem pracować nad jakimś kodem podstawowym i zostałem przerwany, ponieważ ktoś potrzebował baterii.
kstevens715
@ kstevens715 - Wygląda na to, że potrzebujesz pomocy, nawet jeśli jest to techniczne dziecko. Zakładam, że otrzymujesz co najmniej 5-cyfrowy dochód. Gdyby kazano mi uzyskać baterię, mój pracodawca kosztowałby około 10 USD (35% mojej stawki godzinowej).
Ramhound