I was recently asked to lay down the things I think about when estimating stories for development. Here's what I came up with. Given that a lot of this is second nature, I'm sure I've missed something in my attempt to get it all out of my head. ConstructiveCriticism is strongly encouraged.
- Will this story fit into the current design of the code?
- best case scenario, generally lowers estimate
- Will I need to refactor how we currently do things in order to accommodate this story?
- probably the most common case
- refactoring can sometimes add more time to the estimate, but not always
- refactoring should always be done in context
- Will I need to remove and/or rewrite significant portions of the code in order to accommodate this story?
- should be rare, but these do happen on occasion
- generally adds significant time to story, but not always (e.g. removing code can be quite quick and not add a lot of time)
- What will the tests/specs look like for this story?
- each category (developer, functional, integration, feature, other?) of tests/specs adds time and complexity -- but well worth it
- not all stories require a feature test/spec per se (e.g. developer and functional tests/specs may be sufficient)
- Will this story affect current tests/specs?
- usually adds time
- What new research do I need to do for this story?
- variable affect on story, but for the purposes of estimating it is assumed that this will add more time
- Are there libraries/frameworks that will help with this story?
- usually decreases estimate
- Would this story benefit from a quick proof of concept (PoC) first?
- adds time
- usually separate from the story and written to include time (e.g. "take a day to investigate Foo" or "take a few hours to build a PoC to validate our approach")
- sometimes these stories are written after work on the initial story has begun, in which case the initial story is paused in favor of the PoC and usually re-estimated based on findings
- Do I have everything in place already and thus the need for new research is mitigated?
- adds no time
- What sort of documentation will I need to reference in order to finish this story?
- Is it readily available? adds little to no time
- Do I need to find it? adds time
- What sort of documentation will I need to write for this story?
- usually adds some time
- this can be a significant investment of time (e.g. documenting an API for external customers)
- or not much time at all (e.g. just documenting an algorithm by copying and pasting some other resource)
- Will this story affect the current deployment scheme?
- adds time
- Will this story have no effect on the current deployment scheme?
- freebie, obviously