Secondo la mia esperienza personale, è esattamente l'opposto di ciò che Pemdas ha detto : con la pratica, ho appena capito che è assolutamente impossibile stimare quanto tempo richiederà un'attività. All'inizio della mia carriera nello sviluppo di software, ho dato spesso stime come "45 giorni", "cinque settimane", ecc., Quindi ho provato molto duramente a finire in tempo. Qualche anno dopo, ho iniziato a dare stime meno precise come "circa un mese", "da cinque a sette settimane", ecc. In realtà, provo a non dare alcuna stima, o chiedo al cliente di dare la sua stima o scadenza o fornisco una stima il più approssimativa possibile.
Perché è così difficile avere un preventivo? Perché è quasi impossibile sapere come verrà scritto l'intero codice sorgente prima di scriverlo effettivamente, e perché il tuo lavoro dipende da cose casuali come altri popoli lavorano, la tua motivazione, ecc. Ecco un elenco più dettagliato dei possibili motivi:
-
Non è facile sapere che cosa è esattamente richiesto per fare un prodotto, specialmente come per farlo . Molto spesso ho iniziato alcune parti di un'applicazione, che, dopo giorni di lavoro, ho capito che il mio primo approccio era sbagliato e che c'è un modo migliore e più intelligente di fare le cose.
-
Potrebbero verificarsi alcuni problemi . Ad esempio, se, per iniziare il tuo lavoro, devi installare sul tuo computer un server SQL elegante e l'installazione fallisce e il supporto non esiste, potresti passare settimane a risolvere il problema.
-
I requisiti spesso non sono abbastanza chiari , ma dopo averli letti all'inizio, pensi che lo siano. A volte puoi capire che la media 'A' e, dopo aver iniziato ad implementarli, ti accorgerai che potrebbero significare 'B'.
-
I clienti amano cambiare le loro esigenze esattamente quando hai appena finito la parte interessata , e in realtà non capiscono perché richiedi altre due settimane e $ 2000 per fare un tiny cambia, perché non vedono che questo minuscolo cambiamento richiede di cambiare altre cose, che richiedono di cambiare gli altri, ecc.
-
Non puoi stimare la tua motivazione . Ci sono giorni in cui puoi lavorare per ore e avere successo. Ci sono settimane in cui, dopo aver scritto dieci righe di codice, passi a Programmers StackExchange e trascorri ore a leggere e rispondere alle domande.
-
Le cose peggiorano quando la tua stima dipende da altre persone . Ad esempio, in un progetto di 2 mesi ho dovuto aspettare che un designer facesse il suo lavoro per finire il mio. Questo designer ha impiegato 3 mesi prima di consegnare un pezzo di merda inutilizzabile. Ovviamente il progetto era in ritardo.
-
Il tuo preventivo dipende anche dal tuo cliente . Ho avuto clienti che passano settimane prima di rispondere alla loro posta. Può davvero influenzare il tuo programma quando devi aspettare la risposta (ad esempio se chiedi loro di specificare un requisito).
Che cosa puoi fare?
-
Fornisci una pianificazione più ampia . Se pensi di poter fare il lavoro in due settimane, dì che lo consegnerai in un mese.
-
Sii chiaro . Se ti affidi a un designer, a un altro sviluppatore, ecc., Dillo. Invece di dire "consegnerò il prodotto in tre mesi", dì "consegnerò il prodotto entro due mesi dal momento in cui il progettista mi fornirà i file PSD".
-
Spiega che se i requisiti cambiano ogni giorno, il progetto sarà difficilmente consegnato in tempo.
-
Taglia la tua pianificazione . Fornire parti di un grande progetto in tempo è più facile.
-
Non dare mai una stima quando si utilizza un prodotto che non si conosce bene o, soprattutto, quando si lavora su un codice sorgente di qualcun altro: non si può mai prevedere quanto può essere schifoso il codice sorgente e come molto tempo trascorrerai a comprenderlo e copiarlo in copia su The Daily WTF.