Conosco i quattro modi migliori per ottenere questo risultato.
-
Conteggio commit : nel repository del codice conta il numero di commit eseguiti da un utente. Tuttavia questo è proprio quello che dice il nome, contando i commit. Non può separare vicino a vuoti commessi da impegni che hanno ore di riflessione e di sudore.
-
Conteggio righe : conteggio del numero di righe di codice prodotto da uno sviluppatore. Tuttavia, gli sviluppatori possono eseguire una programmazione dettagliata, utilizzare algoritmi inefficienti che richiedono molto codice o semplicemente creare un codice brutto e di grandi dimensioni. Quindi è difficile usarlo come una buona metrica del lavoro svolto.
-
Conteggio del tempo : potrei contare il tempo impiegato da uno sviluppatore a lavorare. Ma nessuno può lavorare un'ora di fila. Inoltre, alcuni programmatori possono preformare 2 ore di lavoro in appena 1 ora e viceversa. E alla fine non è il tempo che conta ma i progressi fatti dal progetto. Non mi interessa se uno sviluppatore spende 5 anni o 5 minuti di programmazione, alla fine il progetto deve essere completato nella sua data di scadenza. Questo porta al nostro ultimo proiettile:
-
Numero di funzioni : il conteggio del numero di funzioni chiuse da uno sviluppatore tiene traccia dei progressi generali del progetto. Tuttavia non posso dire se quelle caratteristiche fossero caratteristiche del giocattolo o fossero follemente difficili da realizzare. Inoltre, non posso distinguere uno sviluppatore da un altro per vedere chi ha eseguito la maggior parte del lavoro. Potrei stimare la difficoltà di ciascuna caratteristica, tuttavia la maggior parte delle volte non è fattibile perché (i) è frequente che sorgano problemi imprevisti durante una funzione, (ii) tendiamo a semplificare le cose, (iii) per alcuni notevole quantità di funzioni il lavoro di stimare la loro difficoltà si sovrappone notevolmente al compito di farlo, cioè, possiamo solo sapere quanto tempo ci vuole per chiudere quella funzione dopo averla chiusa.
Quindi, alla fine, come si può misurare, quantificare e confrontare il lavoro svolto dagli sviluppatori in un progetto?