Qual è la dimensione tipica del team di un'applicazione desktop C # complessa di mezzo milione di righe? [chiuso]

0

Immagina il seguente scenario:

  • Codebase di 600.000 righe di codice (C #)
  • Tutto in un'unica applicazione desktop
  • Tutti scritti da un singolo sviluppatore (il sottoscritto) in 8 anni (3 anni vale il tempo effettivo di codifica).
  • Il software è potente e flessibile (ovviamente vago), quindi c'è una complessità intrinseca nel codice, anche se modulare e con un basso debito.
  • Il software si trova in un settore di controllo di macchine di nicchia, quindi c'è una dilatazione molto lunga per la conoscenza del dominio sia delle macchine che del codice.
  • Il software diventerà sempre più personalizzato laddove i singoli clienti ottengono i propri addon e miglioramenti

Quale sarebbe la dimensione consigliata del team del software per mezzo milione di codebase (desktop C #) come quello sopra? Quale sarebbe l'ideale per una tipica applicazione desktop LOC C # da 500k?

Questo software non è un ciclo di vita "end to end". È "end to infinity", ovvero continuerà a crescere e diventare più grande e più potente e complesso. Tanto più che altri ingegneri vengono aggiunti al team.

    
posta PassionateEngineer 20.06.2014 - 19:39
fonte

2 risposte

10

La dimensione della base di codice non è realmente la metrica giusta per determinare la dimensione della squadra. Piuttosto, guarda le dimensioni del tuo backlog . Se continui a gestire le richieste dei clienti in un lasso di tempo che le rende felici, allora una squadra di una di queste è tutto ciò di cui hai bisogno. Se stai perdendo soldi perché non riesci a soddisfare le richieste dei clienti in tempo, allora aggiungi le persone fino a quando non è più il caso, ovviamente prendendo in considerazione l'effetto del mitico uomo mese. Ci vorranno diversi mesi per sapere se un team appena formato può gestire il tuo carico di lavoro.

Dove esattamente quella linea dipende dall'azienda più che dall'app, anche se ovviamente c'è una certa correlazione con la dimensione e la complessità dell'app. Ad esempio, il refactoring di una base di codice disordinata ti consentirà di soddisfare le richieste dei clienti più rapidamente, ma forse non abbastanza rapidamente da evitare l'assunzione di altri membri del team.

    
risposta data 20.06.2014 - 20:15
fonte
1

La dimensione del codice non è atipica per un progetto triennale di una sola persona (come in, ho visto alcuni progetti C ++ con un numero simile di punti e virgola sviluppati da singole persone in due o tre anni).

Come per qualsiasi altra cosa, la manutenzione delle dimensioni del team e i miglioramenti delle funzionalità dipenderanno da diversi parametri, tra cui

  • Quanti soldi ci sono da buttar fuori
  • Quanto velocemente devono essere apportati miglioramenti
  • Quanto bene il codice è fattorizzato
    • c'è un sistema plug-in o anche un sistema di scripting per esperti di domini per aggiungere codice senza dover essere ingegneri del software?
    • il codice è modulare in modo che compiti come 'riordinare i dialoghi' possano essere eseguiti da programmatori senza conoscenza del dominio?
    • ci sono sistemi nell'organizzazione per stabilire le specifiche in modo che i tester esperti possano essere portati chi non è un esperto di dominio?
  • Quante funzionalità devono essere aggiunte?

Quasi nessuno di questi dipende effettivamente dalle dimensioni del codice, ma dalla qualità. Nella mia esperienza, i progetti più grandi sviluppati da singoli autori nel corso di molti anni tendono a essere un po 'idiosincratici e non ottengono automaticamente le funzionalità richieste per l'apertura a gruppi più grandi (quindi ora cerco di smettere di essere l'unico dev su grandi progetti) .

    
risposta data 20.06.2014 - 20:21
fonte

Leggi altre domande sui tag