Alcuni consigli dal lato oscuro di chi ha imparato a fondo.
The requirements are unclear. Nobody has done an in depth analysis of
all the implications.
Non fare una stima a questo punto. Non si stima quanti soldati sono necessari per vincere una battaglia senza alcun indizio sui numeri nemici. La stima è fatta dopo lo scouting. Questo è a meno che tu non abbia già combattuto questo nemico.
The new feature will probably break some assumptions you made in your
code and you start thinking immediately of all the things you might
have to refactor.
Questa è la tua responsabilità di partecipare, a meno che tu non si aspetti che gli altri abbiano esperienza in quest'area.
You have other things to do from past assignments and you will have to
come up with an estimate that takes that other work into account.
Come sopra, anche per il lavoro inatteso creato da un compagno di squadra di slob accanto a te con una procedura di test quasi inesistente che causa il glitch del codice che non è possibile prevedere perfettamente in anticipo. È una previsione del tempo.
The 'done' definition is probably unclear: When will it be done?
'Done' as in just finished coding it, or 'done' as in "the users are
using it"?
Comprendi il requisito dell'utente finale qui, pensa come un utente. Non fare ciò che fanno i tuoi pari se stimano qualcosa da "fare" solo perché alcune funzionalità di base con un flusso di lavoro barebones che nessun utente può tollerare è ciò che considerano "fatto" . Pensaci dal punto di vista dell'utente, perché è tutto il cliente che stai facendo la stima che in genere comprenderà. Stima verso i requisiti completi dell'utente finale, non verso i requisiti tecnici barebone. E renditi conto che i tuoi clienti che chiedono stime saranno totalmente imprecisi su come esprimono le cose e comprendono gli aspetti tecnici di ciò che dici.
No matter how conscious you are of all these things, sometimes your
"programmer's pride" makes you give/accept shorter times than you
originally suppose it might take. Specially when you feel the pressure
of deadlines and management expectations.
Non farlo! Sembri un duro lavoratore motivato e forse uno che cede facilmente alla coercizione.
Il problema qui è questo: diciamo che tu e Joe avete fatto delle stime di tempo per lo stesso compito (ma tra due dipendenti separati, inconsapevoli di entrambe le stime contemporaneamente). Stimiamo valorosamente "una settimana" . Va bene, pensi, lavorerai oltre 100 ore alla settimana, gli straordinari non retribuiti. Ora hai tre giorni di ritardo.
Nel frattempo, Joe stima 5 mesi. Pensi che sia ridicolo, pensi di poterlo fare in una settimana. Quanto funziona Joe? 10 ore a settimana? ... eccetto che termina in tempo esattamente in 5 mesi.
Indovina chi viene percepito come un idiota? Esatto, tu. Joe sembra un grande lavoratore, ora sembri inaffidabile. Non importa così tanto che potresti aver ottenuto un risultato ancora migliore nel ~ 7% del tempo che Joe ha preso. Ciò che conta è che hai trascorso 3 giorni liberi da una stima di una settimana.
Non commettere errori sul lato della stima più stretta. Err sul lato della stima più flessibile. C'è una reputazione da costruire nella tua azienda e non si baserà sulla durata delle tue stime quasi quanto sulla precisione 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 corta non lascia affatto respiro, o la incontri disperatamente o sei fregato.