How to prepare accurate project estimate scientifically?
It is a well-known problem in software industry. You as a manager or business analyst review all the project requirements, discuss with clients and share the estimate but at the end most of the time it is wrong. This frequency of failed estimation can hit your credibility among clients and even affect your confidence on your estimates. It may create a tendency to give base less high estimates to avoid the wrong estimate which will result in less lead conversions. Let’s discuss about the solution of this problem.
Science is based on facts, assumptions and mathematical equation. It does not care about your emotions so if we follow a scientific method in estimation it can decrease our chances of wrong estimation.
What is project estimation?
Project estimation is a process of judging the time to complete the project based on the requirements and skills. After finding the time, we multiply it with your charges and it becomes the budget. So combination of budget and time to complete a project is called project estimation
Why Estimates are wrong most of the time?
There might be a lot of reasons like skills, experience etc. Here are the few reasons which can be fixed by proper skills and experience in certain domain:
1. Human Error in guessing the time
2. Missing crucial features
3. Client increasing scope
4. Unclear requirements
5. Some feature is obvious for you but for not client or vice versa
If you have proper skill and experience in your domain then you can improve on above points
Estimate may be correct but may result wrong at the end:
Senior Person who is giving the estimate can do a fundamental mistake. It is human nature to judge things as per our ability rather than the ability of the actual developer who will work on the project. So actually estimate was correct but the assigned developer did not have ability to complete the project within that timeline.
What is the meaning of scientific method?
I believe scientific method is a way of solving a problem where guidelines, observations (Experience), facts, assumptions work as input and by processing it through mathematics we find a result which should be the most appropriate solution of the problem
How to use scientific method for more accurate estimations?
We will define some simple guidelines then collect some observations based on our past experience and by combining all we will generate a formula which will be the most appropriate estimate. Let’s start one by one
Guideline to follow to have more accurate estimation:
1. Define all requirements clearly and take client approval
2. Clarify your assumptions and client's assumptions on obvious things
3. Divide project in phases if requirements are big and difficult to judge the time
4. Give estimate for first phase only and discuss about future phases cost later
5. Move features to next phase if client increases scope
Assumptions or observations based on our past experience:
I collected some variables based on my past experiences but feel free to customize these as per your observations and see how it helps
1. Error Margin: 10%
2. Difference between your ability and developer's ability: 20%
3. Negotiation margin: 10%
4. Unknown Margin: 5%
5. Warranty Cover: 20%
Scientific Formula/equation to get appropriate estimate:
Here is the formula which will help us to get the desired result
Appropriate Estimate = Your Estimate + Error Margin + Unknown Margin + Warranty Cover+ Negotiation Margin + Difference between your ability and developer's ability
Estimate is too high, how to make it practical?
Actually an appropriate estimation will always be high because it ensure you are in highest profit but we don’t live in a perfect world so we have to make some compromises but not on vague values rather we will still focus on scientific way to make the estimation more usable and practical for both you and the client. You can do following adjustments:
1. Offer less warranty
2. Compromise on Negotiation Margin
3. Have expert developers
4. Have a proper project plan
In science there is not a perfect way but at least we find one of the best available way to solve any problem. I hope it will be helpful for you. Please share if you like it. Thanks for reading.