This post was triggered by this conversation I recently had in Twitter with Henrik Ebbeskog. Reading that before continuing on this one may help you understand better.
So let’s assume a scenario. A client wants to set up a web shop(*), and would like to hear your rough estimate how much effort would it require. The client just wants a ball-park, so we’re not signing contracts here. Here’s what you should take into account before giving your answer:
- High availability requirements, how many users do you expect? Simultaneous users?
- Different user personas
- SLA requirements
- DB backup requirements
- User support requirements, do you perhaps need a live help line?
- External interfaces, do you need to interface with a bank payment interface perhaps?
- What markets are you targeting, maybe countries that write from right to left?
- Etc etc
You probably can come up with more, and adjust these to your own domain. And the exact questions here are not the point — the point is that if you plan for these, and take these into account, you can base your estimate onto these. “It’s roughly 2-4 weeks IF just a single server, no user support, no redundancy in servers, we offer 9-17 support weekdays only, and it contains more or less these features”
And here comes the catch: this doesn’t mean you’re setting these in stone. This isn’t Big Design Up Front. This isn’t waterfall and forgetting about Agile values like responding to change. This is planning, being prepared, listing your assumptions explicitly and asking your customer questions she didn’t think of.
Agile doesn’t equate to #NoPlanning.
*) Sheez, always a web shop as an example. I need to expand my imagination…