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?
źródło
Odpowiedzi:
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ć.
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.
źródło
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.
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.
źródło
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
źródło
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.
źródło