Sono convinto che la quantità di lavoro di routine nello sviluppo del software sia - e dovrebbe essere - relativamente piccola, se non trascurabile, e che questo sia il problema fondamentale della stima del software.
Lasciatemi descrivere come vengo a questa conclusione e dimmi se l'argomentazione ha qualche grave difetto:
-
Tutto ciò che può essere stimato con alta precisione è un lavoro di routine, ovvero cose che sono state fatte prima. Tutti gli altri tipi di lavoro che coinvolgono ricerca e creatività non possono essere stimati, almeno non con una precisione di, diciamo, +/- 20 percento.
-
Lo sviluppo del software consiste nell'evitare attività ripetitive. Uno dei suoi principi di base è DRY (non ripeterti). Ogni volta che un programmatore si trova a fare cose ripetitive, è il momento di trovare un'astrazione che eviti questa ripetizione. Queste astrazioni possono essere semplici cose come estrarre il codice ripetuto in una funzione o metterlo in un ciclo. Possono anche essere più complessi come creare un linguaggio specifico di dominio. In ogni caso, la loro implementazione comporterà ricerche (qualcuno l'ha già fatto prima?) O creatività.
Da questi due punti traggo la conclusione sopra.
In realtà mi sono chiesto per un po 'perché questa relazione non è menzionata in ogni altra discussione, post di blog o articolo sulla stima del software. È troppo teorico? Le mie supposizioni sono sbagliate? O è troppo banale? Ma allora, perché la maggior parte degli sviluppatori che conosco crede di poter fare stime con un'accuratezza del +/- 20 percento o migliore?