Come determinare il numero di programmatori necessari per un progetto

17

Come fai a sapere quanti programmatori un particolare progetto deve avere successo?

La società per cui lavoro ha gli ordini per le aziende clienti. Abbiamo creato un sistema interno di gestione del magazzino che gestisce la gestione dell'inventario basata sulla posizione, l'elaborazione degli ordini, la generazione della bolletta di carico, la fatturazione, il controllo delle merci e la segnalazione (probabilmente 50 rapporti). Ha anche funzioni di scansione dei codici a barre e un portale client insieme a decine di altre funzionalità più piccole. Include anche un timeclock completo per i dipendenti. Si integra con Quickbooks, UPS e FedEx. Gestisce il lavoro per almeno 50 clienti tutti leggermente diversi nelle loro funzionalità. Ad esempio, importiamo gli ordini dai file inviati dai clienti, ma ogni cliente invia un diverso formato di file (csv, excel, file flat e servizi Web), quindi abbiamo ben più di una dozzina di metodi di conversione degli ordini. Le esportazioni sono la stessa storia.

Il progetto è complesso e cresce in complessità ogni giorno con oltre un quarto di milione di righe di codice. Sono circa 250.000 righe di codice VB.NET, 6.200 righe di codice Ruby e forse 5000 linee di PHP. Ha anche un database MySQL con circa 200 tabelle.

A causa dei requisiti in continua evoluzione e delle diverse esigenze di dozzine di client, il codice stesso varia notevolmente nella qualità da codice estremamente scadente a relativamente buono.

Attualmente, questo progetto ha un solo programmatore, me stesso. Attualmente faccio anche tutto il supporto del prodotto per la nostra azienda di circa 75 persone. Ciò include la risoluzione dei problemi e l'impostazione di nuovi client e di tutte le nuove funzionalità necessarie. Inoltre, stiamo cercando di riscrivere il tutto per essere basato su Ruby on Rails al 100%. E vorremmo commercializzare l'intero sistema entro il prossimo anno o giù di lì per essere utilizzato da altre società.

Attualmente, abbiamo solo me stesso come programmatore ma non credo che sia sufficiente. Qualcuno ha qualche raccomandazione per quanti programmatori dovrebbe avere un progetto di questa portata o come dovremmo fare per determinare la risposta a questa domanda? Particolarmente dato il fatto che il management vorrebbe che il prodotto fosse di qualità commerciale entro il prossimo anno?

    
posta kstevens715 30.01.2012 - 22:42
fonte

4 risposte

2

Direi almeno 5 persone. Uno per test, uno per specifiche, supporto e documentazione e 3devs. C'è un sacco di cose da testare nel tuo caso, quindi un tester dedicato al 50% non dovrebbe essere irragionevole. Dovrebbe esserci una persona che annota i requisiti e che ha il supporto clienti per impostare la propria infrastruttura per testare ecc. Credo che tre sviluppatori siano piuttosto bassi per un progetto come questo. Un back-end di grandi dimensioni che è integrato in molti sistemi di terze parti e completo di numerosi report personalizzati. Mi piacerebbe avere.

  1. Un buon sviluppatore back-end (persistence / business layer)
  2. Un buon sviluppatore di fascia medio / front-end che realizza classi di azioni e JavaScript CSS Design.
  3. Un bravo architetto che lavora allo sviluppo, ma che produce anche codice in tutti i livelli con l'aiuto di esperti degli altri due. Questo sviluppatore può anche fare cose come configurare JUnit framework Maven Jenkins Git branching e così via.

Cosa succede se parti, ammali, prendi la vacanza, ecc. Una persona per progetto non è mai intelligente. Né è bello essere soli in quanto non si evolve professionalmente senza collaboratori. Lavoro spesso da solo, installando nuove architetture e così via, spesso in team di 5 sviluppatori, ma non evolvo mai tanto quanto quando dico a un collega che consente di organizzarlo insieme e ci rinchiudiamo una settimana parlando, discutendo e scegliendo i quadri. La programmazione delle coppie è estremamente generosa e non può essere eseguita con un solo sviluppo e chi effettuerà le revisioni del codice se non si è sicuri? Se rimarrai bloccato chi ti aiuterà? Avrei intrapreso un progetto di una sola persona se facesse parte di uno scopo più ampio e potessi richiedere l'intervento di risorse esperte, se necessario. Tu come sviluppatore non dovresti essere stressato dall'esterno, quindi l'addetto al supporto clienti menzionato in precedenza potrebbe agire come uno Scrum Master bloccando tutti gli impedimenti esterni e potrebbe dare la priorità a supporto, nuovi CR e ragione al cliente finale se vogliono cambiare i requisiti come tu avevano paura di

    
risposta data 30.01.2012 - 23:31
fonte
7

Benvenuto nel mondo spesso difficile di resourcing !

Il problema non è tra Dimensione progetto e Dimensione squadra. Questo è un malinteso molto comune che spesso nasconde altri problemi che di solito sono correlati alla gestione. Il problema è tutto su Ambito . Devi decidere cosa puoi ottenere con le tue risorse attuali, ovvero te. Quindi è necessario decidere se la capacità di gestire il carico di lavoro è sufficiente per gestire l'attività entro i limiti di tempo che sono stati assegnati. Quindi il tuo progetto deve essere identificato e trattato.

  • Vuoi perdere tempo a ripulire il codice esistente?
  • È un requisito fondamentale per garantire il successo del progetto?
  • Hai nuove funzionalità da aggiungere al sistema? Quali sono gli aspetti più importanti del tuo progetto che devono essere affrontati e quali sono gli elementi minori presenti nella lista dei desideri?
  • I requisiti possono essere abbandonati o almeno rimandati alla prossima versione di manutenzione?

Quando hai un'idea dell'ambito dei tuoi requisiti, puoi determinare più facilmente il carico di lavoro richiesto per ottenere un risultato entro un certo periodo di tempo. Se le tue risorse sono probabilmente sovrautilizzate, avrai bisogno di più personale. Se è probabile che le tue risorse siano sottoutilizzate, potresti trovarti in grado di spostare la scadenza più vicina o aumentare l'ambito del tuo progetto.

Se il tuo istinto istintivo ti dice che non hai abbastanza personale per gestire il progetto, potresti essere corretto, ma devi capire perché è quello che ti dice questo istinto. Non è sufficiente avere semplicemente un sentimento. Invece, devi essere in grado di esaminare scientificamente il problema per fornire prove a sostegno del tuo istinto, e devi essere pronto ad affrontare la possibilità che il tuo istinto possa anche essere sbagliato. Una volta che hai raccolto le tue prove, ad esempio: ha esaminato il progetto, allora hai davvero bisogno di sederti con la tua gestione e cercare di ridurre lo scopo del progetto o aumentare le risorse disponibili per garantire il successo del progetto, sulle prove a portata di mano.

    
risposta data 30.01.2012 - 23:23
fonte
6

Il successo del prodotto / progetto dipenderà dall'impegno della società che paga per questo. Se hanno intenzione di assumere più programmatori / personale di supporto, ci sarà una diminuzione intrinseca della produttività da parte di un programmatore, che sa addestrare, insegnare, gestire, ecc. Non che sia una cosa brutta .. ma ci sarà essere una diminuzione prima di realizzare qualsiasi aumento .. c'è anche bisogno di analisti, manager, vendite e supporto del prodotto una volta che è disponibile in commercio ..

Ospitare un'applicazione commerciale è molto più che creare una piattaforma solida. ci sono requisiti di supporto, supporto tecnico, correzione dei bug, formazione degli utenti, ecc.

hai qualche buona procedura di analisi / spec / stima in atto? in caso contrario, inizia ora , puoi farlo da solo.

stai lavorando al cervello in questo momento? In tal caso, sii preparato a lavorare due volte più duramente se ci si aspetta che tu gestisca questo processo e continui a sviluppare (aumento dovuto?) ..

ed ecco la risposta della mia precedente esperienza in una situazione simile nei prezzi dell'area della California meridionale:

5-6 persone & & ~ 500k

  • 1 Lead Developer / manager wearer di tutti i cappelli (~ 100k - 120k)

  • 2 Sr. (molto capaci, autodidatta) programmatori con buona conoscenza del DB e abilità (2x ~ 80 - 100k)

  • 1 Project Manager da interfacciare con Management ($$?) questa persona dovrebbe anche essere in grado di capire le esigenze dell'app e comunicare tali esigenze direttamente ai programmatori

  • 1? (HTML / UI) sviluppatore? con abilità javascript (odio programmare codice UI / markup)

  • 1? Persona del database? tuttavia, i programmatori più bravi non hanno problemi a creare strutture di dati scalabili, tuttavia, se hai intenzione di entrare in problemi di ottimizzazione, vorrai almeno avere un consulente

risposta data 31.01.2012 - 00:26
fonte
2

1 programmatore su una base di codice di grandi dimensioni con tutti la responsabilità di configurare, testare, comunicare, supportare, documentare e correggere i bug non avrà molto tempo per scrivere nuovo codice o aggiungere funzionalità (o anche refactoring vecchio codice).

Riduci la settimana della percentuale di queste attività obbligatorie che non espandono il business e rimarrai sorpreso dalla rapidità con cui la gestione assume un ulteriore aiuto.

I progetti di grandi dimensioni hanno una certa quantità di spese generali associate che non andranno via (specialmente se si implementano / testano con i nuovi clienti tutto il tempo che sembra essere). Questo è il motivo per cui supportate le rotazioni e il supporto in generale; quindi alcuni di quelli del team hanno il tempo di lavorare su nuove funzionalità.

Potresti anche voler esaminare i libri sulla stima del software. Questi libri potrebbero non sembrare abbiano molto da dire, ma contengono interessanti casi di studio tratti da una varietà di campi e sostengono le loro affermazioni con prove.

    
risposta data 30.01.2012 - 23:09
fonte

Leggi altre domande sui tag