A good estimate is the foundation for a profitable project. (There's more needed, but good estimates are a great start.)
This 🧵will help you understand estimates.
⬇️
This doesn't mean that you need every single detail (quite the opposite,) but you need the overall picture.
Let's talk about 3 overall things to keep in mind:
👇
▫️ Take your time and break the project down into smaller, actionable steps.
▫️ Capture enough details about the necessary functionality but don't be too specific.
👇
1. It's hard to capture all of those details upfront.
2. Getting too specific will limit your ability to negotiate.
You want to capture "WHAT" instead of "HOW".
👇
1. Identify the most important features to finish the work
2. Identify hidden features (things that need to happen but aren't usually called out)
3. Now cut off any non-essential features
👇
5. Identify dependencies (with other teams, the client, etc.)
6. Identify any potential risks to meet timeline or budget
7. Finalize your list adding enough details to discuss with the client
👇
1. Ensure you have enough details of each feature before estimating it
2. The person that will build a feature should be the one estimating it (if possible — can't happen all the time)
👇
4. Ensure your requirements have similar granularity. Avoid having week-long requirements mixed together with hour-long requirements.
👇
6. Document every assumption you make to hit those estimates
7. Avoid estimating in time when possible. Use a proxy metric (like Ideal Days or Story Points)
👇
(Optimistic + 4 * Most Likely + Pessimistic) / 6
This will give you a weighted average of your estimation. Beats "add 20% to the final number."
(There is a bunch of other stuff you can do here.)
👇
1. Include time for documenting and analyzing requirements
2. Include time to discuss the scope with the client
3. Include time to plan the release of the product
👇
5. Do you need time to think about performance, scalability, and security?
6. Do you need time to handle the dependencies you identified?
7. Include time to deploy. More than once
👇
9. Do you need to train the client or their users?
10. Are there any expenses that you should include as part of your estimate (like tools, libraries, etc.)?
11. Should you provide a warranty?
👇
1. Pick how much you are going to charge (usually your weighted estimate.) You can also go with a range.
2. Decide the timeline (how long will it take?)
3. Do not intentionally underestimate to win the project!
👇
Your estimate cannot have more accuracy than is possible at your project's current position within the Cone.
But, what happens if your estimate comes out too high?
👇
2. Use multiple estimation techniques, and look for convergence or spread among the results
3. Reduce scope
👇
5. Propose simpler solutions to some of the features
Always remember that if you torture the data long enough, it will confess to anything. Don't push it!
👇
1. List of features included
2. List of features out of scope
3. Dependencies
4. Risks and unknowns
5. Timeline
6. Budget
7. Confidence on the estimate
Make it pretty.
👇
Parting words: Fix your budget, but always keep scope flexible!