Yesterday, my boss called me around noon. He told me that he’ll be working from home in the afternoon as he had a client call to attend. Also, he has received a new project proposal from a client who wants to clone a very famous website, for which I need to provide a rough/ballpark estimate. Usually for big projects, he works directly with me in preparing the estimates, but this time I will have to do it alone. On top of that, I have less than three hours.
I am sure, some of us have to face this scenario often. You don’t need to do an accurate estimate, yet you can not go off by big margins. You don’t get much time to evaluate and list every details, you don’t even get to play around with the system. In such cases, the ideal approach, we not exactly ideal, but it worked for me so far, is to:
1. Isolate the features. As many of them you can, obviously without missing the major features. If its a web project, it might have several back-ends for users of different roles. List those features as well. First take a notepad or an excel file and keep listing features as you go through the URS/FS documents or sample website. Don’t waste too much time to layout every details, but try to put the feature in a single line. For example: you should write “Save/Update user’s location data after every successful login” instead of “When a user logs in, save his location information in the system. If a location is already available, overwrite it.”
2. Separate and list the UI elements and page designs. Most of the well designed projects often has reusable UI components or design blocks. Use your common sense to roughly guess how much of the work can be reused.
3. Beside every feature or UI elements, make two columns: Min hours and Max hours. Think how much time the feature would likely take to develop. Whatever you think is fair, make the Min hours ~20% less than that and the Max hour ~40% more. For example: If you think a feature would take 16 hours to develop, put 12 hours in Min and 22 hours in Max. Please note that, for some of the items, the hours are very obvious and kind of standard. In such cases make the Min and Max as close as possible, or better, avoid the Min, put the exact amount in the Max column.
4. Don’t forget to include some standard items i.e Initial Analysis, Database Development, Product Research, Documentation, Testing, Deployment, Client Communication etc. All these items makes up a complete project. If you forget to mention these, you’ll regret it later.
5. In addition to all these, I personally add another item “Contingency” which is a flat 10% of the Min and Max hours columns, often calculated by a formula and rounded to full numbers. This items gives you a little peace of mind which is often prove to be a life saver during the end days of the project. If you’re one of those guys who estimates a project very tight, make sure you add the contingency period. Your developers will thank you for this.
Thats all I can remember right now. How do you estimate your projects? Feel free to share with me.