Web development tasks and projects in general are very hard to estimate accurately, because it’s impossible (in my opinion) to consider all significant constraints and assumptions upfront, before actually starting the work. However, that’s not an excuse for providing bad estimates. From my experience, effort estimates which are more than 50% off the mark are due to some basic mistakes. With that in mind, the intention of this post is to give you some practical tips on how to estimate better without focusing on any particular estimating tools and techniques.
- Be very clear on what you are estimating. Fuzzy scope will result in fuzzy estimates, so keep asking questions until you are clear on the work at hand. If you reach a point where scope is still not clear but you have to provide an estimate, then always give a wide range (e.g. 100 to 300 hours) rather than an exact number (e.g. 160 hours).
- Use a range. Unless you are crystal clear on what is required, always give a range. You are not doing anyone any favors by trying to give an exact estimate that you know will change after you receive more information or fully understand the need/requirement.
- Ask experts. You should always ask experts, or the people who will actual do the work, to help you estimate. If you know it all then good luck to you, but for everyone else, use experts as much as you can. Just because you understand something doesn’t mean you will estimate it correctly. For example, I understand quality assurance but I don’t test every day, so when I need Quality Assurance estimates I ask our Quality Assurance team.
- Estimate with someone else in mind. If you are the expert, try to estimate the effort with someone else in mind. People by nature are optimists and are often overly confident, so by estimating with someone else in mind you will get closer to reality.
- Keep track of your original and current estimates. Your initial estimates will not be your last so keep track of changes, including scope, assumptions and anything else that may impact your estimates; it will give your estimates more credibility. Also, it will help you improve.
- Ask your peers for a quick ‘sanity check’. The more time you spend on something the more you tend to focus on small details; there is a possibility that you may deviate from the original goal or even overlook a big mistake, so ask your peers to do a quick ‘sanity check’ on your approach and estimates. The quickest way of losing credibility is for someone to point out a big mistake 30 seconds into reviewing your estimates.
- Don’t send estimates without explanation. Take a minute to reiterate what you were asked to do and how you came to your estimates. This is your chance to validate your approach and explain how you came up with the numbers. For example, ‘I had limited information on features A, B and C, so I had to make some assumptions’ – then explain your core assumptions. Also, be prepared to justify your numbers.
While estimations are just that, an estimation or a guess, following these tips should help you provide a better, more realistic estimation for your next web development project that both you and the client will be happy with.
[Image courtesy of photosteve101 via Flickr Creative Commons - rotated and cropped]