Qualche consiglio dal lato oscuro di chi ha imparato a fatica.
I requisiti non sono chiari. Nessuno ha fatto un'analisi approfondita di tutte le implicazioni.
Non fare una stima a questo punto. Non si stima il numero di soldati necessari per vincere una battaglia senza indizi sui numeri dei nemici. La stima viene effettuata dopo lo scouting. Questo a meno che tu non abbia già combattuto questo nemico.
La nuova funzionalità probabilmente interromperà alcune ipotesi che hai fatto nel tuo codice e inizierai a pensare immediatamente a tutte le cose che potresti dover riflettere.
Questa è la tua responsabilità da tenere in considerazione a meno che tu non preveda che gli altri abbiano le competenze su quest'area.
Hai altre cose da fare da incarichi passati e dovrai elaborare una stima che tenga conto di quell'altro lavoro.
Come sopra, anche per un lavoro imprevisto creato da un compagno di squadra sciatto accanto a te con una procedura di test quasi inesistente che fa sì che il tuo codice si accorga che non puoi predire perfettamente in anticipo. Sono previsioni del tempo.
La definizione "fatto" probabilmente non è chiara: quando sarà fatto? 'Fatto' come appena finito di codificarlo, o 'fatto' come in "gli utenti lo stanno usando"?
Comprendi qui i requisiti dell'utente finale, pensa come un utente. Non fare ciò che fanno i tuoi colleghi se stimano che qualcosa sia "fatto" solo perché alcune funzionalità di base con un flusso di lavoro barebone che nessun utente può tollerare è ciò che considerano "fatto" . Pensalo dal punto di vista dell'utente, perché in genere è tutto il client per cui stai facendo la stima. Stimare verso i requisiti completi dell'utente finale, non verso i requisiti tecnici barebone. E renditi conto che i tuoi clienti che richiedono stime saranno totalmente imprecisi qui su come esprimono le cose e comprendono gli aspetti tecnici di ciò che dici.
Non importa quanto tu sia consapevole di tutte queste cose, a volte il tuo "orgoglio del programmatore" ti fa dare / accettare tempi più brevi di quanto pensi inizialmente. Soprattutto quando si sente la pressione delle scadenze e delle aspettative della direzione.
Non farlo! Sembri un lavoratore motivato e forse uno che si arrende facilmente alla coercizione.
Il problema qui è questo: diciamo che tu e Joe avete fatto stime temporali per la stessa attività (ma tra due impiegati separati, ignari di entrambe le stime contemporaneamente). Stimate valorosamente "una settimana" . Va bene, pensi, lavorerai più di 100 ore alla settimana, lavoro straordinario non retribuito. Adesso sei in ritardo di tre giorni.
Nel frattempo, Joe stima 5 mesi. Pensi che sia ridicolo, pensi di poterlo fare in una settimana. Quanto lavora Joe? 10 ore settimanali? ... tranne che termina puntualmente tra 5 mesi esatti.
Indovina chi viene percepito come il cretino? Esatto, tu. Joe sembra un grande lavoratore, sembri inaffidabile ora. Non importa così tanto che potresti aver ottenuto un risultato ancora migliore nel ~ 7% delle volte che Joe ha impiegato. Ciò che conta è che ti mancassero 3 giorni da una stima di una settimana.
Non sbagliare mai dal lato della stima più rigorosa. Err sul lato della stima più libera. C'è una reputazione da costruire nella tua azienda e non si baserà sulla lunghezza delle tue stime quasi quanto sull'accuratezza delle tue stime. È facile essere precisi con una stima troppo lunga, hai solo più tempo per lavorare sul problema e risolverlo meglio. Una stima troppo breve non lascia affatto spazio alla respirazione, o la incontri disperatamente o sei fregato.