Estimating Drupal Projects
What is an estimate?
- A good estimate describes reality. It should tell a developer a great deal about how to complete a project (not just what the client is going to pay)
An example of a successful 10 step process for estimation
- Gather Requirements - In this step, gather the scope, the budget range, and if the project is a fit for your organization.
- Schedule an Estimation Meeting - Set up a timeboxed meeting (1-2 hours seems to work well), and make sure the right parties are in the room sales (client needs), a developer (code, complexity), and a project manager (risk, timeline, balancing workload).
- Review requirements and high level goals.
- Review similar projects you've completed - get a sense for how the budget turned out, what solutions were used, etc.
- SWAG (Scientific Wild-Ass Guess) - set general expectations with those doing the estimating.
- Extract Features - Use the client's language and whenever you can to describe features and functionality.
- Write solutions and exclusions - Give each feature a solution to clearly specify how the site will be built. Exclusions are also very important to clarify what WON'T be included.
- Estimate with Accuracy (general range) and precision (exact hours). An hours scale can be helpful to capture the scale of a particular feature (fibonacci sequence, powers of 2, etc).
Suggestion 1: break larger tasks down into smaller tasks with a maximum time per task (say, 5 hours), and relate those back to a larger parent task.
Suggestion 2: Have developers rank their familiarity with each estimated solution to give a sense of confidence for each estimated task. Then use multipliers to create high and low ranges based upon estimated hours and confidence.
- Write the Proposal - Include any notes and a spreadsheet for estimation. Be as transparent as possible. If possible, use a price range that matches the actual risk of the project.
- Track and revise your estimation system. A good goal is to get estimates within 10% accuracy 90% of the time. Look at your actuals versus estimates to identify where weaknesses lie in estimation.